Dříve jsme si ukázali, jak nastavit cluster MariaDB Galera s HAproxy, a dnes provedeme podobné nastavení s distribucí MySQL společnosti Percona. Percona je společnost, která má hluboké zkušenosti s MySQL a MongoDB a vyrábí své vlastní distribuce těchto databází, stejně jako úložiště pro obě databáze. Dnes se zaměříme pouze na MySQL, nikoli na nabídku MongoDB této společnosti.
Nastavení hostitelů, firewallu a úložišť
První spuštění nastavením souboru hosts. Máme tři uzly pro cluster Percona a jeden uzel pro HAproxy. Můj soubor hostitelů na všech 4 serverech má tyto čtyři řádky:
10.17.0.8 centos-percona01
10.17.0.9 centos-percona02
10.17.0.10 centos-percona03
10.17.0.11 centos-haproxy
Dále umožňuje nastavit firewall na všech hostitelích kromě HAproxy. Ten bude vyžadovat jiná nastavení a my uděláme to druhé. Nejprve spusťte firewall na všech třech percona uzlech.
systemctl start firewalld
Poté povolíme službu mysql. Pecona je distribuce mysql, takže používá stejný port jako mysql.
firewall-cmd --zone=public --add-service=mysql --permanent
Dále přidáme další potřebné porty:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent
A znovu načtěte firewall
firewall-cmd --reload
Až to bude hotové, dále musíme nainstalovat epel release
yum install epel-release
Dále nainstalujeme socat z úložiště EPEL
yum install socat
A pak odstraníme mariadb-libs, protože je v konfliktu s percona
yum remove mariadb-libs
Instalace a nastavení Percona
Potřebujeme přidat úložiště obsahující percona
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
Nyní můžeme nainstalovat percona cluster a všechny ostatní závislosti
yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-shared-56 percona-toolkit percona-xtrabackup Percona-XtraDB-Cluster-galera-3 rsync nc
A spusťte mysql
systemctl start mysql
První věc, kterou děláme na všech serverech mysql, je spuštění skriptu mysql_secure_installation. Tak pojďme na to.
mysql_secure_installation
Musíte zadat své nové root heslo a odpovědět y na všechny otázky.
Po dokončení se přihlaste ke svému účtu root
mysql -u root -p
enter password
A vytvořte sstuser svůj cluster
mysql> create user sstuser@'%' identified by 'strongpassword';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on *.* to sstuser@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
Poté musíme zastavit Mysql, abychom mohli upravit konfigurační soubory.
systemctl stop mysql
nano /etc/my.cnf
V konfiguraci najděte tyto řádky a upravte je, aby vypadaly přesně takto, pouze změňte své vlastní heslo a změňte název uzlu a adresu uzlu na název hostitele pro každý server
wsrep_cluster_address = gcomm://centos-percona01,centos-percona02,centos-percona03
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = Cluster Percona XtraDB
wsrep_node_name = centos-percona01
wsrep_node_address = centos-percona01
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:strongpassword
Všimněte si, že první řádek na prvním serveru (centos-percona01) může být prázdný, například takto:
wsrep_cluster_address = gcomm://
Po dokončení konfigurace musíme zavést první uzel a pak normálně spustit druhý a třetí.
Při prvním spuštění serveru
systemctl start mysql@bootstrap
při druhém a třetím spuštění
systemctl start mysql
Dále musíme otestovat, zda cluster funguje.
mysql -u root -p
zadejte heslo
A pak spusťte tyto příkazy:
SHOW STATUS LIKE 'wsrep_local_state_comment';
show global status like 'wsrep_cluster_size';
Měli by vám poskytnout výstup takto:
Tímto je nastavení clusteru dokončeno.
Nastavení HAproxy
Nejprve potřebujeme nainstalovat clustercheck na všechny uzly clusteru, aby byl cluster provozuschopný pomocí HAproxy. Pojďme získat skript pomocí wget
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Skript musí být proveden jako spustitelný a přesunut do jednoho z vašich adresářů $PATH.
chmod +x clustercheck
mv clustercheck /usr/bin/
Nyní také potřebujeme mysqlchk, který je součástí balíčku xinetd:
yum install xinetd
Dále přesuneme vytvoření uživatele clustercheck na databázi. Můžeme to zadat pouze na prvním uzlu
mysql -u root -p
mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
exit;
Dále můžeme otestovat, zda clustercheck funguje podle očekávání:
[root@centos-percona01 ~]# clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
Percona XtraDB Cluster Node is synced.
Dále se přesuneme do konfigurace xinetd, xinetd je třeba přidat do seznamu služeb.
nano /etc/services
Použijeme CTRL-W k nalezení části, kde je port 9200, poté chválíme služby, které tento port používají, a místo toho přidáme nový řádek. Musí to vypadat takto:
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service
Po dokončení uložíme. Všimněte si, že to musí mít všechny uzly clusteru kromě HAproxy.
Nyní je čas se přihlásit na náš server HAporoxy. Nejprve musíme zálohovat konfiguraci haproxy.
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
Poté vyrobíme nový z čisté břidlice
nano /etc/haproxy/haproxy.cfg
Můžeme odtud zkopírovat konfiguraci HAproxy, kromě toho, že je třeba změnit tyto tři řádky:
server centos-percona01 10.132.84.186:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona02 10.132.84.141:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona03 10.132.84.67:3306 check port 9200 inter 12000 rise 3 fall 3
Zvýrazněné části je třeba změnit s vašimi názvy hostitelů a vašimi adresami. Dále musíme spustit firewalld na haproxy serveru a povolit porty, které potřebujeme použít
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
Poté musíme znovu načíst firewall
firewall-cmd --reload
Konečně začněte haproxy
systemctl start haproxy
Nastavení je hotové, nyní musíme otestovat.
Testování HAproxy
Ukažme prohlížeč na veřejnou IP adresu HAproxy serveru na portu 9000:
Všechny uzly jsou online. Dále nám umožní nainstalovat klienta percona na haproxy server, abychom se odtud mohli pokusit dotazovat na cluster.
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum install Percona-XtraDB-Cluster-client-56
A zkusme zjistit, jestli můžeme mít dotaz z tohoto haproxy serveru:
mysql -u root -p -h 10.132.83.13 -P 3306 -e "select Host, User, Password from mysql.user"
Závěr
Nastavili jsme 3 uzlový cluster zátěže Percona XtraDB vyváženou pomocí HAproxy. Je to podobné nastavení jako minulý týden v článku s MariaDB a Galera, ale s úložištěm Percona a bez WordPressu. Toto nastavení Percona lze použít k hostování velmi široké škály datových sad, mimo jiné jej můžete opět použít s WordPress, jako v našem předchozím článku. Tímto uzavíráme tento článek, děkujeme za přečtení a přejeme hezký den.