Maria DB Galera – II deo
U prvom delu govorili smo o nekim najbitnijim funkcionalnostima paketa MariaDB Galera. Pored toga, pokazali smo način instalacije i konfigurisanje čvorova. U ovom delu ćemo predstaviti balansiranje opterećenja formiranog Galera klastera pomoću HAProxy-a.
Sadržaj
Čemu služi HAProxy?
Ukoliko imamo tri ili više čvora u Galera klasteru, pojavljuje se problem uravnoteženja opterećenja čvorova. To takođe znači da ćete morati da konfigurišete aplikaciju tako da bude usmerena samo na jedan od čvorova, a to svakako nije za preporuku. Postavljanjem HAProxy-a osiguraćete da vam usluga baze podataka uvek bude dostupna, sa centralnom kontrolom čvorova. Na ovaj način ukoliko želite da uklonite jedan od čvorova, treba samo da promenite konfiguraciju HAProxy-a. Pomoću HAProxy-a se automatski postiže i uravnotežavanje opterećenja pomoću nekoliko standardnih algoritama za tu namenu. Krenimo sa praktičnim delom.
Prvo što treba da uradimo jeste instalacija HAProxy paketa na našem računaru. Potrebno je da kreiramo još jednu virtuelnu mašinu u VirtualBox-u, koja će nam simulirati HAProxy.
Ažurirajte pakete i instalirajte HAProxy:
sudo apt-get update
sudo apt-get install haproxy
Potvrdite instaliranu verziju HAProxy-a:
apt policy haproxy
dpkg -l haproxy
Konfiguracija HAProxy-a za balansiranje opterećenja
Sada kada je instaliran HAProxy, potrebno je da ga konfigurišemo kako bi se vršilo balansirano opterećivanje servera baze podataka Galera klastera na TCP nivou. Potrebno je da otvorimo i iskonfigurišemo /etc/hosts fajl:
sudo vim /etc/hosts
10.0.2.15 node1
10.0.2.16 node2
10.0.2.17 node3
HAProxy će odabrati pomoćni server na koji će usmeriti saobraćaj u zavisnosti od algoritma za balansiranje opterećenja. Sledi lista pravila za odabir odredišta koja su dostupna na HAProxy-u:
- Round Robin – usmerava nove veze do sledećeg odredišta u kružnom redosledu, prilagođavajući se opterećenju servera.
- Static Round Robin – usmerava nove veze do sledećeg odredišta u kružnom redosledu, prilagođavajući se opterećenju server. Za razliku do standardne implementacija Round Robina-a, u statičkoj implementaciji, ne možete modifikovati opterećenje servera u “pokretu”.
- Least Connected – Usmerava nove veze ka serveru sa najmanjim brojem raspoloživih veza, a prilagođava se i opterećenju servera.
- First – Usmerava nove veze na prvi server sa raspoloživim priključkom. Oni se biraju od najnižeg numeričkog indetifikatora do najvišeg.
- Source Tracking – Deli izvornu IP adresu prema ukupnom opterećenju pokrenutih servera. Obezbeđuje da klijentske veze sa iste izvorne IP adrese uvek dođu do istog servera.
Otvorite HAProxy glavnu konfiguraciju:
sudo vim /etc/haproxy/haproxy.cfg
Konfiguracija treba da ima slična podešavanja kao u sledećem primeru:
# Galera Cluster Frontend configuration
frontend galera_cluster_frontend
bind 10.0.2.18:3306
mode tcp
option tcplog
default_backend galera_cluster_backend
# Galera Cluster Backend configuration
backend galera_cluster_backend
mode tcp
option tcpka
balance leastconn
server node1 node1:3306 check weight 1
server node2 node2:3306 check weight 1
server node3 node3:3306 check weight 1
Značenje pojedinih stavki je sledeće:
- balance – definiše smernicu za odabir odredišta koja se koristi za izbor servera na koji će se usmeriti dolazna veza,
- mode tcp – galera klaster koristi TCP tip veze,
- option tcpka – omogućava funkciju čuvanja programa za održavanje TCP veza,
- option mysql-check user – vrši proveru baze podataka, kako bi se uverio da li je čvor operativan,
- server check weight 1 – definicija čvorova koje želite da HAProxy koristi prilikom usmeravanja
Ponovo pokrenite HAProxy i testirajte konekciju:
sudo systemctl restart haproxy
Testiranje pristupa
Proverite da li HAProxy ima vezu na portu 3306:
# ss -tunelp | grep 3306
tcp LISTEN 0 128 10.0.2.18:3306 0.0.0.0:* ino:28199 sk:a
Pokušajte da se povežete sa HAProxy-em na portu 3306:
root@mariadb4:~# mysql -u root_user -p -h 10.0.2.18
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 743
Server version: 10.3.7-MariaDB-1:10.3.7+maria~bionic-log mariadb.org binary distribution
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| pmf |
| information_schema |
+--------------------+
2 rows in set (0.00 sec)
Zaključak
MariaDB Galera je skalabilno rešenje koje može biti dobar izbor u slučaju obrade velike količine podataka. Zahvaljujući jednostavno konfigurabilnoj replikaciji i balansiranju opterećenja pomoću HAProxy-ja, obezbeđuje si i zadovoljavajuća redundansa i horizontalna skalabilnost po pitanju performansi.
Literatura
- https://mariadb.com/kb/en/library/galera-cluster/
- https://severalnines.com/database-blog/ha-mysql-and-mariadb-comparing-master-master-replication-galera-cluster
- https://www.howtoforge.com/tutorial/how-to-install-and-configure-galera-cluster-on-ubuntu-1604/
- https://www.opensource-osijek.org/2014/06/30/mariadb-galera-cluster-solution/
Autor: Jovana Tomovic
Studentkinja završne godine Informatike na Prirodno-matematičkom fakultetu u Kragujevcu. Tokom studija je bila polaznica radionica i praksi nekoliko IT firmi. Zaposlena u firmi Inovatec.