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.