GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer MariaDB Galera Cluster avec HAproxy sur CentOS 7

Dans l'article d'aujourd'hui, nous allons installer le cluster MariaDB Galera avec HAproxy pour MariaDB et wordpress à charge équilibrée. Galera est une technologie de clustering actif-actif, ce qui signifie qu'elle peut prendre en charge les écritures sur tous les nœuds qui sont ensuite répliquées sur le cluster. Il existe également un clustering actif-passif, où seul le nœud est accessible en écriture. Nous allons également installer HAproxy pour l'équilibrage de charge sur notre cluster. L'installation va se faire sur 5 serveurs CentOS 7, trois pour MariaDB 10.1 Galera, un pour Haproxy et un pour wordpress. HAproxy fonctionne de telle sorte qu'il achemine les requêtes vers chaque nœud en mode round robin, tout en se présentant comme un frontal. Ici, nous utilisons une méthode traditionnelle de clustering en ayant des serveurs de base de données assis dans un réseau privé et seul le serveur Web fait face à une adresse IP publique.

Configuration du cluster Galera

Sur tous les serveurs, nous devons installer mysql. Nous allons d'abord ajouter un référentiel

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

Ensuite, nous installons mariadb, rsync et xinetd

sudo yum install mariadb-server rsync xinetd

Nous devons éditer /etc/hosts, n'importe quel éditeur fera l'affaire mais j'utiliserai nano

nano /etc/hosts

Là-bas ip et noms de vos hôtes, par exemple

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03

Assurez-vous d'utiliser l'adresse IP privée de vos hôtes, si vous utilisez des hôtes publics, vous devrez chiffrer le trafic entre eux pour sécuriser votre cluster.

Après avoir installé MariaDB, modifiez

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

Sur tous les serveurs, vous devez trouver la section [galera] dans le fichier et la faire ressembler à ceci, sauf pour les adresses IP qui sont en gras et doivent être modifiées

[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

Regarder le cluster Galera

Une fois cela configuré, vous devez démarrer le cluster

D'abord sur le nœud mariadb01 qui est le maître avec cette commande

galera_new_cluster

Puis sur les deux autres nœuds avec la commande systemctl normale :

systemctl start mariadb

Ensuite, nous pouvons vérifier que le cluster est en cours d'exécution :

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

La prochaine chose serait d'exécuter le script mysql_secure_installation

mysql_secure_installation

Configuration du pare-feu

Maintenant, lorsque les trois nœuds sont connectés, nous pouvons afficher le pare-feu et le configurer.

systemctl start firewalld

Ouvrez le client mariadb et les ports de réplication galera :

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

Ouvrir le port rsync que nous utilisons pour la réplication

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

Autres ports importants

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

Rechargez enfin le pare-feu

firewall-cmd --reload

Utiliser xinetd et clustercheck

Clustercheck est un script utile pour surveiller le cluster. Installons-le en suivant les commandes

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

Ensuite, nous devons ajouter mysqlchk à la liste des services. Pour cela nous éditons le fichier services :

nano /etc/services

Puisqu'il s'agit d'un fichier long, dans nano tapez Ctrl-W et recherchez 9200. Tous les services utilisant ce port doivent être commentés et un nouveau service doit être ajouté, de sorte que cette partie doit ressembler à ceci :

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

Lorsque cela est enregistré et terminé, nous pouvons démarrer xinetd

systemctl start xinetd

Tout cela doit être fait sur tous les nœuds, et maintenant seulement sur le maître, nous devons ajouter un utilisateur pour clustercheck.

mysql -u root -p

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

exit;

Ensuite, nous pouvons essayer le script clustercheck

clustercheck

Configurer HAproxy

Connectez-vous à votre serveur haproxy désigné. Nous installons maintenant l'équilibreur de charge

Modifiez votre fichier /etc/hosts pour qu'il ressemble à ceci (avec votre adresse IP, bien sûr)

192.168.207.241 mariadb01
192.168.209.91 mariadb02
192.168.129.168 mariadb03
192.168.210.252 haproxy01

Ensuite, nous pouvons installer haproxy

yum install haproxy

Ensuite, nous devons éditer rsyslog.conf

nano /etc/rsyslog.conf

Décommentez ces deux lignes

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Enregistrer et quitter

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

permet de sauvegarder la configuration haproxy par défaut

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

Ensuite, nous créons un nouveau fichier avec nano

nano /etc/haproxy/haproxy.cfg

Utilisez ce pastebin comme configuration, mais changez les adresses IP.

Il est temps de configurer le pare-feu sur le nœud haproxy

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

Rechargez ensuite le pare-feu

firewall-cmd --reload

Configuration de l'accès à MariaDB depuis HAproxy

Sur le type de cluster mariadb :

mysql -u root -p

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

Ensuite, nous allons sur le serveur haproxy01 et essayons d'accéder à la base de données.

Vous devez avoir le client MariaDB installé, alors faisons d'abord cela :

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

C'était pour ajouter un référentiel, cette commande l'installe

yum install MariaDB-client

Et ensuite testons si

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

Assurez-vous d'entrer verystrongpassword comme mot de passe et non votre mot de passe root habituel.

Installer Wordpress

Enfin, nous allons configurer wordpress à utiliser sur notre cluster. Il y a du travail à faire sur le nœud mariadb01, sur haproxy01 et sur le nœud wp01.

Sur 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';

Sur le nœud wp01 défini dans /etc/hosts/

192.168.220.17 wp01
192.168.210.252 haproxy01

Aussi sur haproxy01 ajouter

192.168.220.17 wp01

Ensuite, nous devons installer les packages requis sur le nœud wp01

yum install httpd php php-gd php-mysqlnd rsync

À partir de là, nous devons utiliser un compte non root avec des privilèges sudo. Je n'en ai pas, donc je vais le créer :

useradd miki
usermod miki -aG wheel

passwd miki

Connectez-vous ensuite en tant que mon utilisateur

su miki

Remplacez le répertoire par home

cd

Ensuite, téléchargez la dernière version de wordpress et décompressez-la

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

Nous allons utiliser rsync pour copier le wordpress dans le répertoire apache

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

Nous devons également changer la propriété en utilisateur apache

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

Configurer wordpress

WordPress est configuré dans le fichier wp-config.php, nous devons y définir des paramètres tels que l'adresse hôte du serveur de base de données, les identifiants de connexion, le nom de la base de données. Sauvegardez le fichier de configuration :

cd /var/www/html

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

Et puis on fait le montage :

nano wp-config.php

Ne modifiez que ces lignes

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');

Enfin, nous redémarrons le serveur Web apache :

sudo systemctl restart httpd

Terminez l'installation de WordPress depuis le navigateur

Nous pouvons accéder à l'adresse publique du nœud wordpress comme ci-dessous pour continuer le processus d'installation de word-press

Nous avons maintenant le cluster configuré avec wordpress en cours d'exécution

Conclusion

Ici, nous avons configuré wordpress au-dessus du cluster Galera équilibré par HAproxy. Il s'agit d'une solution résiliente pour les sites à forte charge et bien que la configuration prenne un certain temps, elle offre à votre site une assurance presque complète contre les temps d'arrêt. Tout le trafic entre les nœuds est effectué par des adresses IP privées, et une seule adresse publique pour le frontal Worpress est utilisée pour accéder au site. Ce serait tout pour cet article, merci d'avoir lu et bonne journée.


Cent OS
  1. Comment configurer un serveur FTP avec VSFTPD sur CentOS 7

  2. Comment installer MariaDB Galera Cluster sur Ubuntu 16.04

  3. Comment configurer le cluster MariaDB Galera sur Ubuntu 20.04

  4. Comment configurer Pure-FTPD avec MySQL sur CentOS et RedHat

  5. Comment remplacer MySQL par MariaDB sur CentOS 6

Comment configurer Percona Cluster avec HAproxy Loadbalancer sur CentOS 7

Comment configurer un cluster haute disponibilité sur CentOS 8 / RHEL 8

Comment installer le serveur de messagerie avec PostfixAdmin sur CentOS 7

Comment installer HAProxy sur CentOS 8

Comment configurer un cluster Redis dans CentOS 8 - Partie 3

Comment configurer HAProxy sur CentOS 8