Wir haben zuvor gezeigt, wie man den MariaDB Galera-Cluster mit HAproxy einrichtet, und heute werden wir ein ähnliches Setup mit der MySQL-Distribution von Percona durchführen. Percona ist das Unternehmen, das über umfassende Erfahrung mit MySQL und MongoDB verfügt und eigene Distributionen dieser Datenbanken sowie Speicher-Engines für beide Datenbanken erstellt. Heute konzentrieren wir uns nur auf MySQL und nicht auf das MongoDB-Angebot dieser Firma.
Hosts, Firewall und Repositories einrichten
Erster Start durch Einstellen der Hosts-Datei. Wir haben drei Knoten für den Percona-Cluster und einen Knoten für HAproxy. Meine Hosts-Datei auf allen 4 Servern hat diese vier Zeilen:
10.17.0.8 centos-percona01
10.17.0.9 centos-percona02
10.17.0.10 centos-percona03
10.17.0.11 centos-haproxy
Als nächstes richten wir die Firewall auf allen Hosts außer HAproxy ein ein. Dieser erfordert andere Einstellungen und wir werden letzteres tun. Lassen Sie uns zuerst Firewalld auf allen drei Percona-Knoten starten.
systemctl start firewalld
Dann erlauben wir den MySQL-Dienst. Pecona ist eine MySQL-Distribution, also verwendet sie denselben Port wie mysql.
firewall-cmd --zone=public --add-service=mysql --permanent
Als nächstes fügen wir weitere benötigte Ports hinzu:
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
Und die Firewall neu laden
firewall-cmd --reload
Wenn das erledigt ist, müssen wir als nächstes epel release
installierenyum installiere epel-release
Als nächstes installieren wir socat aus dem EPEL-Repository
yum install socat
Und dann entfernen wir mariadb-libs, weil es mit percona in Konflikt steht
yum remove mariadb-libs
Percona installieren und einrichten
Wir müssen ein Repository hinzufügen, das Percona enthält
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
Jetzt können wir den Percona-Cluster und alle anderen Abhängigkeiten installieren
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
Und starte mysql
systemctl start mysql
Als erstes führen wir auf allen MySQL-Servern das Skript mysql_secure_installation aus. Also lass es uns tun.
mysql_secure_installation
Sie müssen Ihr neues Root-Passwort eingeben und alle Fragen mit y beantworten.
Wenn Sie fertig sind, melden Sie sich bei Ihrem Root-Konto an
mysql -u root -p
enter password
Und erstellen Sie sstuser Ihren 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)
Danach müssen wir Mysql stoppen, um die Konfigurationsdateien zu bearbeiten.
systemctl stop mysql
nano /etc/my.cnf
Suchen Sie in der Konfiguration nach diesen Zeilen und lassen Sie sie genau so aussehen, ändern Sie einfach Ihr eigenes Passwort und ändern Sie den Knotennamen und die Knotenadresse für jeden Server in Ihren Hostnamen
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
Beachten Sie, dass die erste Zeile auf dem ersten Server (centos-percona01) wie folgt leer sein kann:
wsrep_cluster_address = gcomm://
Nachdem die Konfiguration abgeschlossen ist, müssen wir den ersten Knoten booten und dann normalerweise den zweiten und dritten starten.
Beim ersten Serverstart
systemctl start mysql@bootstrap
im zweiten und dritten Lauf
systemctl start mysql
Als nächstes müssen wir testen, ob der Cluster funktioniert.
mysql -u root -p
Passwort eingeben
Führen Sie dann diese Befehle aus:
SHOW STATUS LIKE 'wsrep_local_state_comment';
show global status like 'wsrep_cluster_size';
Sie sollten folgende Ausgabe erhalten:
Damit ist die Cluster-Einrichtung abgeschlossen.
HAproxy-Setup
Zuerst müssen wir clustercheck auf allen Cluster-Knoten installieren, damit der Cluster mit HAproxy bedienbar ist. Holen wir uns das Skript mit wget
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Das Skript muss ausführbar gemacht und in eines Ihrer $PATH-Verzeichnisse verschoben werden.
chmod +x clustercheck
mv clustercheck /usr/bin/
Jetzt brauchen wir auch mysqlchk, das im xinetd-Paket enthalten ist:
yum install xinetd
Als nächstes verschieben wir den Clustercheck-Benutzer auf die Datenbank. Wir können dies nur auf dem ersten Knoten eingeben
mysql -u root -p
mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
exit;
Als nächstes können wir testen, ob Clustercheck wie erwartet funktioniert:
[root@centos-percona01 ~]# clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
Percona XtraDB Cluster Node is synced.
Als nächstes gehen wir zur Konfiguration von xinetd, xinetd muss zur Dienstliste hinzugefügt werden.
nano /etc/services
Wir verwenden STRG-W, um den Teil mit Port 9200 zu finden, dann empfehlen wir Dienste, die diesen Port verwenden, und fügen stattdessen eine neue Zeile hinzu. Es muss so aussehen:
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service
Nachdem wir fertig sind, speichern wir. Beachten Sie, dass dies für alle Cluster-Knoten außer HAproxy erforderlich ist.
Jetzt ist es an der Zeit, sich bei unserem HAporoxy-Server anzumelden. Zuerst müssen wir die Haproxy-Konfiguration sichern.
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
Dann machen wir ein neues aus reinem Schiefer
nano /etc/haproxy/haproxy.cfg
Wir können die HAproxy-Konfiguration von hier kopieren, außer dass diese drei Zeilen geändert werden müssen:
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
Die hervorgehobenen Teile müssen mit Ihren Hostnamen und Ihren Adressen geändert werden. Als nächstes müssen wir firewalld auf dem Haproxy-Server starten und Ports zulassen, die wir verwenden müssen
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
Danach müssen wir die Firewall neu laden
firewall-cmd --reload
Starten Sie zuletzt haproxy
systemctl start haproxy
Die Einrichtung ist erledigt, die wir nun testen müssen.
HAproxy testen
Lassen Sie uns einfach den Browser auf die öffentliche IP-Adresse des HAproxy-Servers auf Port 9000 verweisen:
Alle Knoten sind online. Als nächstes installieren wir den Percona-Client auf dem Haproxy-Server, damit wir versuchen können, den Cluster von dort aus abzufragen.
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
Und versuchen wir zu sehen, ob wir eine Abfrage von diesem Haproxy-Server haben können:
mysql -u root -p -h 10.132.83.13 -P 3306 -e "select Host, User, Password from mysql.user"
Schlussfolgerung
Wir haben den 3-Knoten-Cluster von Percona XtraDB mit Lastausgleich durch HAproxy eingerichtet. Es ist ein ähnliches Setup wie der Artikel von letzter Woche mit MariaDB und Galera, aber mit Percona-Speicher-Engine und ohne WordPress. Dieses Percona-Setup kann verwendet werden, um eine Vielzahl von Datensätzen zu hosten, unter anderem können Sie es wieder mit WordPress verwenden, wie in unserem vorherigen Artikel. Damit schließen wir diesen Artikel ab, vielen Dank fürs Lesen und einen schönen Tag noch.