Sada je: 23 lis 2019, 14:08.
Linux, poslužitelj, mreže i sigurnost

Moderator/ica: Moderatori/ce

ProxySQL
13 lip 2017, 19:39
Trebao bih pomoć kod konfiguracije ovog, neznam ima li itko iskustva sa ovim

Imam postavljen Percona cluster sa 3 servera ali često mi se oruši zbog deadlockova, naletio sam ProxySQL koji mi se čini kao idealno riješenje ovog problema ,on bi trebao sam raditi load balancing dok se recimo par servera sa joomlom spajaju na njega a on samo bira podatke koje ce poslati sa kojeg servera u clusteru ,
Nema smisla imati cluster koji ce se orušiti ako jedan od 3 servera prestane raditi, po nekoj logici se baš to desi,

Proxy bi trebao raditi sa perconinim clusterom ali pojma nemam kako konfigurirati ovo da funkcionira i svaka pomoć je dobrodošla :)
malo sam švrljao po konfiguraciji i čitao na netu ali nije mi baš jasno kako bi ovo trebalo biti postavljeno, sada imam jedan server sastrane na kojem je samo proxysql ali nije u clusteru, pojma nemam jel bi i on trebao biti u clusteru ili on može biti ovako sastrane izvan clustera? szbunjen
#!/bin/bash
coffee=0

while [ `date +%H%M` -lt 0800 ]; do

coffee=$((coffee + 1))

done
exit
Postovi: 855
Postovi: 855
Pridružen/a: 21 lip 2012, 20:36
Lokacija: /home/donji_miholjac -> /home/varazdin
Podijelio/la zahvalu: 14 puta
Primio/la zahvalu: 19 puta
Spol: M
OS: Debian 10 Buster / KDE
Re: ProxySQL
13 lip 2017, 20:50
Jesi probao staviti haproxy ispred? Mozes imati 3 noda u backendu od kojih su 2 backup ili 2 aktivna jedan backup imi sva 3 aktitvna. Kada riknu haproxy ugasi i to je to. Jel to galera cluster?

EDIT:

sql proxy ti je zapravo ... lošije rješenje. Idealno ono što ti treba je da ti developeri srede da RW requesti idu na jednu IP a RO requesti na drugu IP. Zatim možeš imati asinhronu replikaciju u kojoj svi RO idu na slave, a svi RW na master. Možeš to isto imati i na galeri, ali je podjela fiktivna jer ne postoje stvarni RO/RW. Bili kakav SQL proxy ti je tu lošija verzija emulacije ovoga (loši su u prepoznavanju mixed statementa u jednom COMMIT-u). Ako ti je uistinu galera cluster pogledaj si wsrep log, tj. generalno češ se morat pozezati sa postavkama no općenito govoreći najvjerojatnije ti nije problem u lockovima nego u nećem drugom (recimo kolizijama). Imaš i druge stvari, ako je galera cluster treba ti 3 identična servera sa istim opterećenjem, ako imaš 3 servera pa usput na njima vrtiš dodatne servise imaš problem. SQL proxy je sigurniji na galeri jer je bitno teže imati split brain. Ovo ti je problem koji ne možeš „najbolje“ riješiti sam, već samo u dogovoru sa developerima. Pogledaj galera upute za joomlu (znam da ima za drupal bypase neki). Moji prijedlog sa haproxyem ti je bitno bolja verzija od čistog spajanja na galeru, a rušenje ti se zapravo sigurno ne događa nego ovo: jedan nod iz nekog razloga rikne, onda se sruši i resynca se sa drugoga za koje vrijeme je taj nod zapravo samo RO i tu puknu aplikacije. Haproxy ti to rješava jer može prepoznati ta stanja i isključiti takve nodove (koja metoda resynca ti je: innobackup, mysqldump ili rsync?). Brdo sam napisao, ali o ovome možeš knjigu imati napisanu. BTW, haproxy je jebena stvar, poigraj se sa time.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
Moderator
Postovi: 9902
Moderator
Postovi: 9902
Pridružen/a: 07 pro 2007, 18:07
Podijelio/la zahvalu: 158 puta
Primio/la zahvalu: 269 puta
Spol: Y
OS: utuntu 17.04
Re: ProxySQL
14 lip 2017, 13:59
Da to je galera,
Ubiti ima 2 web servera koji vrte joomlu i samo bi trebali čitati podatke sa db01 i db02 dok db03 na sebi ima i joomlu koja se koristi za administraciju, znači promjene se uređuju na joomli koja je na db3 i ta joomla se spaja na localhost i piše promjene u bazu

dok mi se web serveri spajaju na db01 i db02 i samo bi trebali čitat podatke sa njih
znači joomla na web01 se spaja na db01 i web02 se spaja na db02.

ovo se poremeti jednom tjedno u prosjeku i onda moram gasit jednog po jednog iz clustera i ponovno ih paliti nazad
edit:

Naravno baza je 2 gige i kod synca si svaki ljepo sve pobriše i synca iz početka i site bude down 10-15 min

Što se tiće web01 i web02 oni su postavljeni kao A record za www i za domenu na cloudflare-u tako da on određuje na koji server će tko ići
#!/bin/bash
coffee=0

while [ `date +%H%M` -lt 0800 ]; do

coffee=$((coffee + 1))

done
exit
Postovi: 855
Postovi: 855
Pridružen/a: 21 lip 2012, 20:36
Lokacija: /home/donji_miholjac -> /home/varazdin
Podijelio/la zahvalu: 14 puta
Primio/la zahvalu: 19 puta
Spol: M
OS: Debian 10 Buster / KDE
Re: ProxySQL
14 lip 2017, 21:50
Meni se čini da ti imaš tu više problema i proxysql ti to neće riješiti. 2 GB baza sa rsyncom bi ti trebala biti syncana u par minuta, ne u 15 (15 mi treba za 46GB bazu). Moraš saznati što se događa, tj. zašto riknu baze (premalo rama, loše postavke, ...), u wsrep i ostalim logovima ima nešto sigurno. Drugo, blesavo je imati galera cluster i da onda sve ovisi o jednom nodu, stavi si haproxy i onda neka se spajaju na database frontend, tako da kada rikne jedan node i dalje sve funkcionira.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
Moderator
Postovi: 9902
Moderator
Postovi: 9902
Pridružen/a: 07 pro 2007, 18:07
Podijelio/la zahvalu: 158 puta
Primio/la zahvalu: 269 puta
Spol: Y
OS: utuntu 17.04
Re: ProxySQL
16 lip 2017, 09:06
Prvo i osnovno: doljnji blok i konfe koristite na vlastitu odgovornost. Ako itko dobije otkaz, probleme, novčane kazne ja za to nisam odgovoran. Savjet je svima pročitati iscrpnu haproxy konfiguraciju prije primjene kako bi ste razumijeli što je što.



Zaboravio sam dati primjer haproxy konfe. Znači, ako imaš haproxy evo *veoma* simplificirani primjer koji radi za galeru (ovaj blok dolje će raditi, ali gotovo sigurno nije optimalan za tvoj slučaj ili većinu drugih):

Kod: Označi sve
backend galera
        mode tcp
        option srvtcpka
        option mysql-check user monitor post-41
        timeout connect 20s
        timeout server 240m
        balance roundrobin
        server baza1 1.2.3.4:3306 weight 10 maxconn 150 check port 3306 inter 6s fastinter 2s rise 5 fall 5
        server baza2 4.5.6.7:3308 weight 10 maxconn 150 check port 3308 inter 6s fastinter 2s rise 5 fall 5
        server baza3 8.9.10.11:3306 weight 10 maxconn 200 check port 3306 inter 6s fastinter 2s rise 5 fall 5 backup

frontend mysql
        bind 100.100.100.100:3306
        mode tcp
        option clitcpka
        option tcplog
        option log-separate-errors
        maxconn 8192
        timeout client 240m
        default_backend galera




backend dio:
baza1/2/3 su proizvoljna imena za db servere, backup na kraju baza3 znači da se baza3 neće koristiti sve dok baza1 i baza2 ne riknu. check port 3306 znači da će provjeravati dostupnost porta 3306 i ako nije onda će označiti backend kao mrtvim i prestat slat querye tamo. "balance roundrobin" znač ida će jednako slati requeste na baza1 i baza2 (postoje i druge opcije poput leastconn, pogledati dokumetnaciju) Na ovo za galeru treba dodati da prepoznaje DONOR i ostale statuse kako bi i njih maknuo iz poola (3306 je dostupan u tim slučajavima).

frontend dio:

bind 100.100.100.100:3306 ti je IP adresa na koju će se haproxy bindat i ono na što šalješ SQL zahtjeve.
Ostale elemente nisam namjerno objasnio da se malo pogleda i dokumentacija. Poanta gornjeg bloka je da haproxy sam može slati requeste na različite backende i ako neki prestane raditi da se makne iz poola. requesti mogu ići i na jedan nod, tj. 2 ili više mogu biti proglašena backupima, a tu postoji više alternativnih scenarija kako se to može hendlat.

UPOZORENJE: Ovo gore nije niti iz aviona „optimizirani“ blok nego vrlo generički opisni segment haproxy konfiguracije. Niti u najgoroj domeni ludila nemojte koristiti gornji blok niti njegove ekvivalente u asinhronoj replikaciji bilo kakve vrste baze (klasični master->slave bez obzira da li je mysql, postgres, redis ili nešto tisućito).
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
Moderator
Postovi: 9902
Moderator
Postovi: 9902
Pridružen/a: 07 pro 2007, 18:07
Podijelio/la zahvalu: 158 puta
Primio/la zahvalu: 269 puta
Spol: Y
OS: utuntu 17.04

Na mreži
Trenutno korisnika/ca: / i 1 gost.