GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So richten Sie MariaDB Galera Cluster mit HAproxy unter CentOS 7 ein

Im heutigen Artikel werden wir den MariaDB Galera-Cluster mit HAproxy für lastausgeglichene MariaDB und WordPress installieren. Galera ist eine Active-Active-Clustering-Technologie, was bedeutet, dass sie Schreibvorgänge auf allen Knoten unterstützen kann, die dann über den Cluster hinweg repliziert werden. Es gibt auch Aktiv-Passiv-Clustering, bei dem nur der Knoten beschreibbar ist. Wir werden auch HAproxy für den Lastenausgleich auf unserem Cluster installieren. Die Installation wird auf 5 CentOS 7-Servern durchgeführt, drei für MariaDB 10.1 Galera, einer für Haproxy und einer für WordPress. HAproxy arbeitet so, dass es Anfragen im Round-Robin-Modus an jeden Knoten weiterleitet, während es sich selbst als Frontend präsentiert. Hier verwenden wir die traditionelle Art des Clusterings, indem wir Datenbankserver in einem privaten Netzwerk sitzen lassen und nur der Webserver der öffentlichen IP-Adresse gegenübersteht.

Einrichten des Galera-Clusters

Auf allen Servern müssen wir mysql installieren. Zuerst werden wir das Repository hinzufügen

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

Dann installieren wir mariadb, rsync und xinetd

sudo yum install mariadb-server rsync xinetd

Wir müssen /etc/hosts bearbeiten, jeder Editor wird es tun, aber ich werde nano

verwenden
nano /etc/hosts

Da draußen sind zum Beispiel IP und Namen Ihrer Hosts

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03

Stellen Sie sicher, dass Sie private IPs Ihrer Hosts verwenden, wenn Sie öffentliche verwenden, müssen Sie den Datenverkehr zwischen ihnen verschlüsseln, um Ihren Cluster zu sichern.

Bearbeiten Sie nach der Installation von MariaDB

nano /etc/my.cnf.d/server.cnf

Auf allen Servern müssen Sie den Abschnitt [galera] in der Datei finden und ihn so aussehen lassen, außer für IP-Adressen, die fett gedruckt sind und geändert werden sollten

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so

#add your node ips here
wsrep_cluster_address="gcomm://192.168.207.241,192.168.209.91,192.168.129.168"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#Cluster name
wsrep_cluster_name="linoxide_cluster"
# Allow server to accept connections on all interfaces.

bind-address=0.0.0.0

# this server ip, change for each server
wsrep_node_address="192.168.207.241"
# this server name, change for each server
wsrep_node_name="mariadb01"

wsrep_sst_method=rsync

Das Galera-Cluster anstarren

Nachdem dies konfiguriert wurde, müssen Sie den Cluster starten

Zuerst auf dem Knoten mariadb01, der der Master ist, mit diesem Befehl

galera_new_cluster

Dann auf zwei anderen Knoten mit dem normalen systemctl-Befehl:

systemctl start mariadb

Als Nächstes können wir überprüfen, ob der Cluster ausgeführt wird:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Als Nächstes führen Sie das mysql_secure_installation-Skript

aus
mysql_secure_installation

Einrichten der Firewalld

Wenn nun alle drei Knoten verbunden sind, können wir firewalld aufrufen und konfigurieren.

systemctl start firewalld

Öffnen Sie den Mariadb-Client und die Galera-Replikationsports:

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp

Öffnen Sie den rsync-Port, den wir für die Replikation verwenden

firewall-cmd --permanent --add-port=873/tcp

Andere wichtige Häfen

firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp

Zuletzt die Firewall neu laden

firewall-cmd --reload

Verwendung von xinetd und Clustercheck

Clustercheck ist ein nützliches Skript zum Überwachen des Clusters. Lassen Sie uns es installieren, indem Sie den folgenden Befehlen folgen

wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
chmod +x clustercheck
mv clustercheck /usr/bin/

Als nächstes müssen wir mysqlchk zur Dienstliste hinzufügen. Dazu bearbeiten wir die Servicedatei:

nano /etc/services

Da es sich um eine lange Datei handelt, geben Sie in Nano Strg-W ein und suchen Sie nach 9200. Alle Dienste, die diesen Port verwenden, müssen kommentiert werden, und neue Dienste müssen hinzugefügt werden, sodass dieser Teil wie folgt aussehen muss:

mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service

Wenn dies gespeichert und erledigt ist, können wir xinetd starten

systemctl start xinetd

All dies muss auf allen Knoten durchgeführt werden, und jetzt müssen wir nur noch auf dem Master einen Benutzer für die Clusterprüfung hinzufügen.

mysql -u root -p

GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';

exit;

Als nächstes können wir das Clustercheck-Skript ausprobieren

clustercheck

HAproxy einrichten

Melden Sie sich bei Ihrem festgelegten Haproxy-Server an. Wir installieren jetzt den Load Balancer

Bearbeiten Sie Ihre /etc/hosts-Datei so, dass sie in etwa so aussieht (natürlich mit Ihren ips)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

Als nächstes können wir Haproxy installieren

yum install haproxy

Als nächstes müssen wir rsyslog.conf bearbeiten

nano /etc/rsyslog.conf

Entkommentieren Sie diese beiden Zeilen

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Speichern und beenden

echo 'local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
' >> /etc/rsyslog.d/haproxy.conf

Ermöglicht die Sicherung der Standard-Haproxy-Konfiguration

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk

Als nächstes erstellen wir eine neue Datei mit Nano

nano /etc/haproxy/haproxy.cfg

Verwenden Sie dieses Pastebin als Konfiguration, aber ändern Sie die IP-Adressen.

Es ist an der Zeit, die Firewall auf dem Haproxy-Knoten einzurichten

systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp

Laden Sie dann die Firewall neu

firewall-cmd --reload

Einrichten des Zugriffs auf MariaDB von HAproxy

Geben Sie auf dem Mariadb-Cluster Folgendes ein:

mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "verystrongpassword";

Dann gehen wir zum haproxy01-Server und versuchen, auf die Datenbank zuzugreifen.

Sie müssen den MariaDB-Client installiert haben, also machen wir das zuerst:

echo '[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1' >> /etc/yum.repos.d/MariaDB.repo

Das war für das Hinzufügen des Repositorys, dieser Befehl installiert es

yum install MariaDB-client

Und dann testen wir ob

mysql -u root -p -h 192.168.210.252 -P 3030 -e "select Host, User, Password from mysql.user"

Stellen Sie sicher, dass Sie als Passwort verystrongpassword eingeben und nicht Ihr reguläres Root-Passwort.

Wordpress installieren

Zuletzt werden wir WordPress für die Verwendung in unserem Cluster einrichten. Am mariadb01-Knoten, am haproxy01- und am wp01-Knoten muss noch gearbeitet werden.

Auf mariadb01

mysql -u root -p

CREATE DATABASE wordpress;

CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';

GRANT ALL ON wordpress.* TO wordpressuser@'192.168.210.252' IDENTIFIED BY 'password';

Auf dem wp01-Knotensatz in /etc/hosts/

192.168.220.17 wp01
192.168.210.252 haproxy01

Auch auf haproxy01 hinzufügen

192.168.220.17 wp01

Als nächstes müssen wir die erforderlichen Pakete auf dem wp01-Knoten installieren

yum install httpd php php-gd php-mysqlnd rsync

Von hier aus müssen wir ein Nicht-Root-Konto mit sudo-Berechtigungen verwenden. Ich habe keins, also werde ich es erstellen:

useradd miki
usermod miki -aG wheel

passwd miki

Melden Sie sich dann als mein Benutzer an

su miki

Ändere das Verzeichnis nach home

cd

Laden Sie dann die neueste Version von WordPress herunter und entpacken Sie sie

wget http://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

Wir werden rsync verwenden, um die WordPress-Datei in das Apache-Verzeichnis zu kopieren

sudo rsync -avP ~/wordpress/ /var/www/html/
mkdir /var/www/html/wp-content/uploads

Außerdem müssen wir den Besitz auf den Apache-Benutzer ändern

sudo chown -R apache:apache /var/www/html/*

WordPress konfigurieren

WordPress wird in der Datei wp-config.php konfiguriert, dort müssen wir Parameter wie Hostadresse des Datenbankservers, Anmeldeinformationen, Datenbankname festlegen. Lassen Sie uns die Konfigurationsdatei sichern:

cd /var/www/html

cp wp-config-sample.php wp-config.php

Und dann bearbeiten wir:

nano wp-config.php

Ändern Sie nur diese Zeilen

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

/** MySQL hostname */
define('DB_HOST', '192.168.210.252:3030');

Zuletzt starten wir den Apache-Webserver neu:

sudo systemctl restart httpd

Schließen Sie die Installation von WordPress über den Browser ab

Wir können zur öffentlichen Adresse des WordPress-Knotens wie unten gehen, um den Installationsprozess von WordPress fortzusetzen

Jetzt haben wir den Cluster mit laufendem WordPress eingerichtet

Schlussfolgerung

Hier haben wir WordPress auf dem Galera-Cluster mit Lastausgleich durch HAproxy eingerichtet. Dies ist eine robuste Lösung für Websites mit hoher Auslastung, und obwohl die Einrichtung eine Weile dauert, schützt sie Ihre Website nahezu vollständig vor Ausfallzeiten. Der gesamte Datenverkehr zwischen den Knoten erfolgt über private IP-Adressen, und nur eine öffentliche Adresse für das Worpress-Frontend wird für den Zugriff auf die Site verwendet. Das wäre alles für diesen Artikel, danke fürs Lesen und einen schönen Tag.


Cent OS
  1. So richten Sie einen FTP-Server mit VSFTPD unter CentOS 7 ein

  2. So installieren Sie den MariaDB Galera-Cluster unter Ubuntu 16.04

  3. So richten Sie den MariaDB Galera-Cluster unter Ubuntu 20.04 ein

  4. So richten Sie Pure-FTPD mit MySQL unter CentOS und RedHat ein

  5. So ersetzen Sie MySQL durch MariaDB unter CentOS 6

So richten Sie Percona-Cluster mit HAproxy Loadbalancer unter CentOS 7 ein

So richten Sie einen Hochverfügbarkeitscluster unter CentOS 8 / RHEL 8 ein

So installieren Sie den Mailserver mit PostfixAdmin unter CentOS 7

So installieren Sie HAProxy unter CentOS 8

So richten Sie einen Redis-Cluster in CentOS 8 ein – Teil 3

So richten Sie HAProxy unter CentOS 8 ein