Pré-requis
Configuration du fichier /etc/hosts
Sur tous les serveurs du cluster ajouter le fichier /etc/hosts:
yum install -y git
Les addresses IP sont à adapter en fonction du context des serveurs.
Configuration du reseau en IP
Afin que le cluster puisse fonctionner il faut interdire IP V6 sur l’ensemble des members du cluster. Modification de la configuration de NetworkManager :
cat >> /etc/sysctl.conf <<EOF
net.ipv6.conf.all.disable_ipv6 =1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv4.tcp_retries2 = 3net.ipv4.tcp_keepalive_time = 200<br>net.ipv4.tcp_keepalive_probes = 2net.ipv4.tcp_keepalive_intvl = 2
EOF
#Redémarrage du service :
systemctl restart NetworkManager
Installation des paquets pour le cluster
Sur le serveur ayant pour rôle de Quorum
Préparation du cluster :
dnf config-manager --enable ha
dnf install pcs corosync-qnetd
systemctl start pcsd.service
systemctl enable pcsd.service
pcs qdevice setup model net --enable --start
pcs qdevice status net --full
Sur les serveurs Web
dnf config-manager --enable ha
dnf install centreon-ha-web pcs pacemaker corosync corosync-qdevice
Sur les serveurs Databases
dnf config-manager --enable ha
dnf install centreon-ha-common pcs pacemaker corosync corosync-qdevice
Echange des clés SSH
Pour pouvoir configure le cluster il faut faire un échange de clés entre les différents membres du serveur.
Utilisateur root (Temporaire)
Un fois l’installation terminée il faudra interdire les connections root entre les membres du cluster. Définir le MDP root tous les membres du cluster :
passwd
Sur le serveur Centreon Web1
ssh-keygen -t ed25519 -a 100
cat ~/.ssh/id_ed25519.pub > ~/.ssh/authorized_keys
Copier le répertoire .ssh sur tous les membres du serveur :
scp -Rp ~/.ssh @autresMembres:./ssh
Sut tous les membres du cluster connecté en root :
chmod 700 .ssh<br>chmod 600 .ssh/*<br>chmod 644 .ssh/id_ed25519.pub
2.4.2 Utilisateur Centreon
Les commandes ci-dessous sont à lancer sur sur les serveurs WEB
Devenir centreon :
su - centreon
depuis le serveur central1 :
ssh-keygen -t ed25519 -a 100<br>cat ~/.ssh/id_ed25519.pub > ~/.ssh/authorized_keys<br>Copier le répertoire .ssh sur le serveur central :<br>scp -Rp ~/.ssh Serveur central 2:./ssh
Sut tous les membres du cluster connecté en root :
chmod 700 .ssh<br>chmod 600 .ssh/*<br>chmod 644 .ssh/id_ed25519.pub
2.4.3 Utilisateur Mysql
Les commandes ci-dessous sont à lancer sur sur les serveurs Mariadb
systemctl stop mariadb
mkdir /home/mysql
chown mysql: /home/mysql
usermod -d /home/mysql mysql
usermod -s /bin/bash mysql
systemctl start mariadb
su – mysql
Création des clés ssh pour la replication pour le shadow des LVM
ssh-keygen -t ed25519 -a 100
cat ~/.ssh/id_ed25519.pub > ~/.ssh/authorized_keys
Copie de la clé ssh sur le deuxième serveur database:
scp -Rp ~/.ssh Serveur Database 2:./ssh
Cette commande est à lancer sur le serveur database2 :
su - mysql
chmod 700 .ssh
chmod 600 .ssh/*
chmod 644 .ssh/id_ed25519.pub
Depuis chaque serveur mariadb se connecter à l’autre membre :
ssh
3 Préparation de la replication des bases
3.1 Configuration des serveurs
Adapter server-id en function du rôle que l’on donne au serveur.
cat > /etc/my.cnf.d/server.cnf <EOF
[server]
# SET TO 1 FOR MASTER AND 2 FOR SLAVE
server-id=1
read_only
log-bin=mysql-bin
binlog-do-db=centreon
binlog-do-db=centreon_storage
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog_format=MIXED
slave_compressed_protocol=1
slave_parallel_mode=conservative
datadir=/var/lib/mysql
pid-file=/var/lib/mysql/mysql.pid
skip-slave-start
log-slave-updates
gtid_strict_mode=ON
expire_logs_days=7
ignore-db-dir=lost+found
Tuning standard Centreon
innodb_file_per_table=1
open_files_limit=32000
key_buffer_size=256M
sort_buffer_size=32M
join_buffer_size=4M
thread_cache_size=64
read_buffer_size=512K
read_rnd_buffer_size=256K
max_allowed_packet=64M
Uncomment for 4 Go Ram
innodb_buffer_pool_size=512M
Uncomment for 8 Go Ram
innodb_buffer_pool_size=1G
EOF
Un fois les deux serveurs configurés il faut redémarrer les services sur les 2 serveurs :
systemctl restart mariadb<br>systemctl status mariadb
3.2 Contrôle des LVM :
Sur les serveurs DB1 et DB2 :
vgs VG_DATA
VG #PV #LV #SN Attr VSize VFree<br>VG_DATA 1 2 0 wz--n- 353,99g 30,99g
La valeur en vert doit être superieur à 5G sur les 2 serveurs, sinon les snapshots ne fonctionnent pas
3.3 Création des utilisateurs pour la réplication
Les databases mysql n’étant pas répliquées il faut lancer les commandes sur les 2 serveurs Databases.
3.3.1 Utilisateurs centreon
Se connecter en root sur les 2 bases de données mariadb
mysql
Adapter les IP en rouge en function du context.
Pour le serveur DB2
CREATE USER 'centreon'@'172.16.191.53' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO 'centreon'@'172.16.191.53';
GRANT ALL PRIVILEGES ON centreon_storage.* TO 'centreon'@'172.16.191.53';
GRANT ALL PRIVILEGES ON centreon_KB.* TO ' centreon '172.16.191.53';
FLUSH PRIVILEGES;
Pour le serveur DB1 :
CREATE USER 'centreon'@'@DATABASE_MASTER_IPADDR@' IDENTIFIED BY '172.16.191.51';
GRANT ALL PRIVILEGES ON centreon.* TO 'centreon'@'172.16.191.51';
GRANT ALL PRIVILEGES ON centreon_storage.* TO 'centreon'@'172.16.191.51';
GRANT ALL PRIVILEGES ON centreon_ KB.* TO ' centreon '172.16.191.51';
FLUSH PRIVILEGES;
Pour le serveur Web1
CREATE USER 'centreon'@'172.16.191.52' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO 'centreon'@'172.16.191.52';
GRANT ALL PRIVILEGES ON centreon_storage.* TO 'centreon'@'172.16.191.52';
GRANT ALL PRIVILEGES ON centreon_ KB.* TO ' centreon '172.16.191.52';
FLUSH PRIVILEGES;
Pour le serveur Web2 :
CREATE USER 'centreon'@'172.16.191.51' IDENTIFIED BY '@MARIADB_CENTREON_PASSWD@';
GRANT ALL PRIVILEGES ON centreon.* TO 'centreon'@'172.16.191.51';
GRANT ALL PRIVILEGES ON centreon_storage.* TO 'centreon'@'172.16.191.51';
GRANT ALL PRIVILEGES ON centreon_ KB.* TO ' centreon '172.16.191.51';
FLUSH PRIVILEGES;
3.3.2 Utilisateurs de replication
Pour la connexion en local :
GRANT SHUTDOWN, PROCESS, RELOAD, SUPER, SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON .
TO 'replication'@'localhost' IDENTIFIED BY '@MARIADB_REPL_PASSWD@';
Pour le serveur WEB1 :
GRANT SHUTDOWN, PROCESS, RELOAD, SUPER, SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON .
TO 'replication'@'172.16.191.50' IDENTIFIED BY '@MARIADB_REPL_PASSWD@';
Pour le serveur DB2 :
GRANT SHUTDOWN, PROCESS, RELOAD, SUPER, SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON .
TO 'replication'@'172.16.191.51' IDENTIFIED BY '@MARIADB_REPL_PASSWD@';
Pour le serveur WEB2 :
GRANT SHUTDOWN, PROCESS, RELOAD, SUPER, SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON .
TO 'replication'@'172.16.191.52' IDENTIFIED BY '@MARIADB_REPL_PASSWD@';
Pour le serveur DB2 :
GRANT SHUTDOWN, PROCESS, RELOAD, SUPER, SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON .
TO 'replication'@'172.16.191.53' IDENTIFIED BY '@MARIADB_REPL_PASSWD@';
3.4 Préparation des scripts de replication
Commande à lancer sur les serveur Web et DB
cat > /etc/centreon-ha/mysql-resources.sh <EOF
!/bin/bash
#
Database access credentials
#
DBHOSTNAMEMASTER='real hostname name'
DBHOSTNAMESLAVE=' real hostname name '
DBREPLUSER='replication'
DBREPLPASSWORD='@MARIADB_REPL_PASSWD@'
DBROOTUSER='relication'
DBROOTPASSWORD='@MARIADB_REPL_PASSWD@'
CENTREON_DB='centreon'
CENTREON_STORAGE_DB='centreon_storage'
CENTREON_KB_DB='centreon_KB'
#
EOF
Contrôle de la replication depuis le serveur DB1 ou DB2 (L’erreur est normale)
/usr/share/centreon-ha/bin/mysql-check-status.sh
Connection MASTER Status 'real hostname name' [OK]
Connection SLAVE Status 'real hostname name' [OK]
Slave Thread Status [KO]
Error reports:
No slave (maybe because we cannot check a server).
Position Status [SKIP]
!Error reports:
Skip because we can't identify a unique slave.
3.5 Début de la réplication
3.5.1 Activation de la replication
Décommenter les lignes ci-dessous dans le fichier /etc/my.cnf.d/server.cnf
Sur le serveur DB1 :
vi /etc/my.cnf.d/server.cnf
[server]
server-id=1
read_only
log-bin=mysql-bin
Sur le serveur DB2
vi /etc/my.cnf.d/server.cnf
[server]
server-id=2
read_only
log-bin=mysql-bin
Sur le serveur DB1
systemctl restart mariadb
Sur le serveur DB2 :
systemctl stop mariadb
Contrôle que le serveur DB2 est arrêté :
ps -ef | grep mariadb[d]
Si les services tournent toujours forcer l’arrêt de mariadb :
mysqladmin -p shutdown
3.5.2 Lancement de la réplication par snapshot des LVM
Lancer la commande sur le serveur DB1
/usr/share/centreon-ha/bin/mysql-sync-bigdb.sh
Laisser le script d’exécuter. A la fin le service mariadb sur serveur DB2 doit être redémarré.
Contrôle du bon fonctionnement de la réplication
/usr/share/centreon-ha/bin/mysql-check-status.sh
Le résultat devrait être :
Connection MASTER Status ' real hostname name DB1' [OK]
Connection SLAVE Status ' real hostname name DB2' [OK]
Slave Thread Status [OK]
Position Status [OK]
4 Installation du cluster
4.1 Configuration de la replication des fichiers centreon entre les 2 serveurs Web
Sur le serveur WEB2 :
our %centreon_central_sync_config = (
peer_addr => "@CENTRAL_WEB1_IPADDR@"
);
1;
Sur le serveur WEB1 :
our %centreon_central_sync_config = (
peer_addr => "@CENTRAL_WEB2_IPADDR@"
);
1;
4.2 Suppression des crons
rm -f /etc/cron.d/centreon
rm -f /etc/cron.d/centstorage
rm -f /etc/cron.d/centreon-auto-disco
rm -f /etc/cron.d/centreon-ha-mysql
Pour la découverte des services :
mkdir /tmp/centreon-autodisco/
chown apache: /tmp/centreon-autodisco/
chmod 775 /tmp/centreon-autodisco/
Sur les serveurs Databases
systemctl stop mariadb
systemctl disable mariadb
4.5 Démarrage des services du cluster
Lancer la commande sur les serveurs WEB et Databases
systemctl start pcsd
5 Configuration du cluster
5.1 Préparation de l’utilisateur pour le cluster
Pour faciliter l’installation du cluster l’utilisateur aura le même MDP sur l’ensemble des members du cluster quorum compris.
passwd hacluster
5.2 Forcer IP V4 pour le cluster
Modifier le fichier /etc/sysconfig/corosync-qnetd par la valeur ci-dessous
COROSYNC_QNETD_OPTIONS="-4"
5.3 Echange des clés pour le Quorum
En rouge renseigner le Mot de passe du chapitre 5.1
pcs host auth \
"Centreon-Web1" \
"Centreon-Web2" \
"Centreon-DB1" \
"Centreon-DB2" \
"Quorum" \
-u "hacluster" \
-p '@CENTREON_CLUSTER_PASSWD@'
6 Création du cluster
Toutes les commandes ci-dessous seront lancées depuis le serveur WEB1
6.1 Déclaration du cluster centreon
pcs cluster setup \
centreon_cluster \
"Centreon-Web1" \
"Centreon-Web2" \
"Centreon-DB1" \
"Centreon-DB2" \
--force
6.2 Démarrage du service sur l’ensemble des nœuds
systemctl enable pacemaker pcsd corosync
systemctl start pacemaker
6.3 Définition des propriétés par défaut du cluster
pcs property set symmetric-cluster="true"
pcs property set stonith-enabled="false"
pcs resource defaults resource-stickiness="100"
6.4 Déclaration du Quorum pour le splitbrain
pcs quorum device add model net \
host="Quorum" \
algorithm="ffsplit"
6.5 Configuration Mysql
Adapter les IP au context du cluster
6.5.1 Mysql
6.5.1.1 Création de la VIP
pcs resource create vip_mysql \
ocf:heartbeat:IPaddr2 \
ip="172.16.191.101" \
nic="ens192" \
cidr_netmask="24" \
broadcast="172.16.191.255" \
flush_routes="true" \
meta target-role="stopped" \
op start interval="0s" timeout="20s" \
stop interval="0s" timeout="20s" \
monitor interval="10s" timeout="20s"
6.5.1.2 Déclaration des serveurs Mariadb :
pcs resource create "ms_mysql" \
ocf:heartbeat:mariadb-centreon \
config="/etc/my.cnf.d/server.cnf" \
pid="/var/lib/mysql/mysql.pid" \
datadir="/var/lib/mysql" \
socket="/var/lib/mysql/mysql.sock" \
binary="/usr/bin/mysqld_safe" \
node_list="Centreon-DB1 Centreon-DB2" \
replication_user="replication" \
replication_passwd='SoDeXi2023' \ test_user="replication" \ test_passwd="SoDeXi2023" \
test_table='centreon.host'
6.5.1.3 Déclaration du sens de replication par défaut
pcs resource promotable ms_mysql \
master-node-max="1" \
clone_max="2" \
globally-unique="false" \
clone-node-max="1" \
notify="true"
6.5.2 Déclaration des ressources clone
6.5.2.1 PHP
pcs resource create "php" \
systemd:php-fpm \
meta target-role="started" \
op start interval="0s" timeout="30s" \
stop interval="0s" timeout="30s" \
monitor interval="5s" timeout="30s" \
clone
6.5.2.2 Broker RRD
pcs resource create "cbd_rrd" \
systemd:cbd \
meta target-role="stopped" \
op start interval="0s" timeout="90s" \
stop interval="0s" timeout="90s" \
monitor interval="20s" timeout="30s" \
clone
6.5.3 Création du groupe centreon
6.5.3.1 Déclaration de la VIP Web
pcs resource create vip \
ocf:heartbeat:IPaddr2 \
ip="172.16.191.100" \
nic="ens192" \
cidr_netmask="24" \
broadcast="172.16.191.255" \
flush_routes="true" \
meta target-role="stopped" \
op start interval="0s" timeout="20s" \
stop interval="0s" timeout="20s" \
monitor interval="10s" timeout="20s" \
--group centreon
6.5.3.2 Service HTTP
pcs resource create http \
systemd:httpd \
meta target-role="started" \
op start interval="0s" timeout="40s" \
stop interval="0s" timeout="40s" \
monitor interval="5s" timeout="20s" \
--group centreon \
--force
6.5.3.8 Service snmptrapd
pcs resource create snmptrapd \
systemd:snmptrapd \
meta target-role="stopped" \
op start interval="0s" timeout="30s" \
stop interval="0s" timeout="30s" \
monitor interval="5s" timeout="20s" \
--group centreon
6.5.4 Gestion des contraintes
6.5.4.1 Démarrage de la vip mysql avant le service mariadb
pcs resource create snmptrapd \
systemd:snmptrapd \
meta target-role="stopped" \
op start interval="0s" timeout="30s" \
stop interval="0s" timeout="30s" \
monitor interval="5s" timeout="20s" \
--group centreon
6.5.4.2 Déclaration des contraintes entre Centreon et Mysql
pcs constraint location centreon avoids Centreon-DB1=INFINITY Centreon-DB2=INFINITY
pcs constraint location ms_mysql-clone avoids Centreon-Web1=INFINITY Centreon-Web2=INFINITY
pcs constraint location cbd_rrd-clone avoids Centreon-DB1=INFINITY Centreon-DB2=INFINITY
pcs constraint location php-clone avoids Centreon-DB1=INFINITY Centreon-DB2=INFINITY
6.5.5 Démarrage des services du cluster
pcs resource enable php-clone
pcs resource enable cbd_rrd-clone
pcs resource meta vip target-role="started"
pcs resource meta vip_mysql target-role="started"
pcs resource meta dsmd target-role="started"
pcs resource meta centreontrapd target-role="started"
pcs resource meta snmptrapd target-role="started"
pcs resource meta centengine target-role="started"
pcs resource meta cbd_central_broker target-role="started"
pcs resource meta gorgone target-role="started"
pcs resource meta centreon_central_sync target-role="started"
pcs resource meta http target-role="started"
6.5.6 Contrôle du cluster
Lancer la commande suivante sur l’un des nœud du cluster.
6.5.6.1 Contrôle du cluster
pcs resource status
Clone Set: ms_mysql-clone ms_mysql:
Promoted: [ Centreon-DB1 ]
Unpromoted: [ Centreon-DB2 ]
Stopped: [ Centreon-Web1 Centreon-Web2 ]
vip_mysql (ocf:heartbeat:IPaddr2): Started Centreon-DB1
Clone Set: php-clone [php]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Stopped: [ Centreon-DB1 Centreon-DB2 ]
Clone Set: cbd_rrd-clone [cbd_rrd]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Stopped: [ Centreon-DB1 Centreon-DB2 ]
Resource Group: centreon:
vip (ocf:heartbeat:IPaddr2): Started Centreon-Web1
http (systemd:httpd): Started Centreon-Web1
gorgone (systemd:gorgoned): Started Centreon-Web1
centreon_central_sync (systemd:centreon-central-sync): Started Centreon-Web1
cbd_central_broker (systemd:cbd-sql): Started Centreon-Web1
centengine (systemd:centengine): Started Centreon-Web1
centreontrapd (systemd:centreontrapd): Started Centreon-Web1
snmptrapd (systemd:snmptrapd): Started Centreon-Web1
6.5.6.2 Pour un affichage détaillé
crm_mon -1
Status of pacemakerd: 'Pacemaker is running' (last updated 2023-10-30 16:55:21 +01:00)
Cluster Summary:
Stack: corosync
Current DC: Centreon-Web1 (version 2.1.5-9.el9_2.3-a3f44794f94) - partition with quorum
Last updated: Mon Oct 30 16:55:21 2023
Last change: Thu Oct 26 19:12:23 2023 by root via cibadmin on Centreon-Web1
4 nodes configured
21 resource instances configured
Node List:
Online: [ Centreon-DB1 Centreon-DB2 Centreon-Web1 Centreon-Web2 ]
Clone Set: ms_mysql-clone ms_mysql:
Promoted: [ Centreon-DB1 ]
Unpromoted: [ Centreon-DB2 ]
vip_mysql (ocf:heartbeat:IPaddr2): Started Centreon-DB1
Clone Set: php-clone [php]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Clone Set: cbd_rrd-clone [cbd_rrd]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Resource Group: centreon:
vip (ocf:heartbeat:IPaddr2): Started Centreon-Web1
http (systemd:httpd): Started Centreon-Web1
gorgone (systemd:gorgoned): Started Centreon-Web1
centreon_central_sync (systemd:centreon-central-sync): Started Centreon-Web1
cbd_central_broker (systemd:cbd-sql): Started Centreon-Web1
centengine (systemd:centengine): Started Centreon-Web1
centreontrapd (systemd:centreontrapd): Started Centreon-Web1
snmptrapd (systemd:snmptrapd): Started Centreon-Web1
Si un service est en starting, lancer simplement la commande crm_mon pour un suivi en temps reel du démarrage du cluster.
7 Ajout d’un nouveau poller dans le cluster
Afin de permettre au poller de communiquer avec l’un ou l’autre des serveurs WEB, Il faut donc configure Grogone pour que le poller communique avec la VIP des serveurs WEB.
7.1 Ajouter un nouveau poller
Dans le menu Configuration > Pollers Cliquer sur ADD
Selectionner Ajouter un poller :
Renseigner les champs :
• Server name : Nom du poller
• Server IP address : IP du Poller
• Centreon Central IP Address : IP de la VIP WEB
Cliquer sur Next 2 fois
7.2 Contrôle du poller
Aller dans le menu Configuration > Pollers > Broker configuration
Dans l’onglet général
Dans l’onglet Output l’IP ou le nom de la VIP dans le fichier /etc/hosts doit être renseigné
7.3 Echange de fingerprint entre le poller et le serveur central
Aller dans le menu Configuration > Pollers
Cliquer sur le bouton en rouge en face du poller à deployer :
Cliquer sur le bouton copier dans le presse papier
Lancer un putty sur le poller, devenir root et copier la commande générée par centreon.
Le service n’est toujours pas disponible pour centreon WEB :
Exporter la configuration sur le poller
Forcer centengine du central à se connecter au poller en lancant la commande sur le serveur WEB portant la VIP.
pcs resource restart centengine
7.4 Contrôle
Après quelques secondes le poller devrait remonter :
La version de centreon doit remonter dans la console :
8 Modification de la configuration de centreon
Depuis l’interface WEB de centreon l’IHM est toujours disponible depuis l’IP du centreon WEB1 :
8.1 Configuration du serveur WEB
Aller dans le menu : Configuration > Pollers > Broker configuration
8.1.1 central-broker-master
8.1.1.1 Dans l’Onglet Général
Désactiver le redémarrage du broker qui est géré par le cluster maintenant :
8.1.1.2 Dans l’onglet output
Pour le Mysql :
remplacer l’adresse IP du serveur database par celui de la VIP comme indiqué dans la capture ci dessous
Pour les graphs:
Afin d’eviter de synchroniser les fichiers, on va demander à centreon d’écrire les graphs sur les 2 serveur WEB
Dans l’output 2 Renseigner l’IP physique du serveur WEB 1 :
Ajouter une nouvelle sortie pour le serveur WEB2 :
Puis renseigner les champs avec un nouveau nom d’output puis l’IP du serveur WEB2
8.1.2 Synchronisation de base des fichiers de configuration des broker
En ligne de commande depuis le serveur WEB 1 :
rsync -a /etc/centreon-broker/*json 172.16.191.52:/etc/centreon-broker/
8.2 Configuration des pollers déjà présents
Appliquer les contrôle au chapitre : Contrôle du poller
9 Exploitation du cluster
9.1 Afficher l’état des ressources
9.1.1 En continue (Rafraichissement toutes les 2 secondes)
crm_mon
Status of pacemakerd: 'Pacemaker is running' (last updated 2023-10-30 16:55:21 +01:00)
Cluster Summary:
Stack: corosync
Current DC: Centreon-Web1 (version 2.1.5-9.el9_2.3-a3f44794f94) - partition with quorum
Last updated: Mon Oct 30 16:55:21 2023
Last change: Thu Oct 26 19:12:23 2023 by root via cibadmin on Centreon-Web1
4 nodes configured
21 resource instances configured
Node List:
Online: [ Centreon-DB1 Centreon-DB2 Centreon-Web1 Centreon-Web2 ]
Active Resources:
Clone Set: ms_mysql-clone ms_mysql:
Promoted: [ Centreon-DB1 ]
Unpromoted: [ Centreon-DB2 ]
vip_mysql (ocf:heartbeat:IPaddr2): Started Centreon-DB1
Clone Set: php-clone [php]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Clone Set: cbd_rrd-clone [cbd_rrd]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Resource Group: centreon:
vip (ocf:heartbeat:IPaddr2): Started Centreon-Web1
http (systemd:httpd): Started Centreon-Web1
gorgone (systemd:gorgoned): Started Centreon-Web1
centreon_central_sync (systemd:centreon-central-sync): Started Centreon-Web1
cbd_central_broker (systemd:cbd-sql): Started Centreon-Web1
centengine (systemd:centengine): Started Centreon-Web1
centreontrapd (systemd:centreontrapd): Started Centreon-Web1
snmptrapd (systemd:snmptrapd): Started Centreon-Web1
9.1.2 Affichage Seul
crm_mon -1
Status of pacemakerd: 'Pacemaker is running' (last updated 2023-10-30 16:55:21 +01:00)
Cluster Summary:Stack: corosync
Current DC: Centreon-Web1 (version 2.1.5-9.el9_2.3-a3f44794f94) - partition with quorum
Last updated: Mon Oct 30 16:55:21 2023
Last change: Thu Oct 26 19:12:23 2023 by root via cibadmin on Centreon-Web1
4 nodes configured
21 resource instances configuredNode List:
Online: [ Centreon-DB1 Centreon-DB2 Centreon-Web1 Centreon-Web2 ]
Active Resources:
Clone Set: ms_mysql-clone ms_mysql:
Promoted: [ Centreon-DB1 ]
Unpromoted: [ Centreon-DB2 ]
vip_mysql (ocf:heartbeat:IPaddr2): Started Centreon-DB1
Clone Set: php-clone [php]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Clone Set: cbd_rrd-clone [cbd_rrd]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Resource Group: centreon:
vip (ocf:heartbeat:IPaddr2): Started Centreon-Web1
http (systemd:httpd): Started Centreon-Web1
gorgone (systemd:gorgoned): Started Centreon-Web1
centreon_central_sync (systemd:centreon-central-sync): Started Centreon-Web1
cbd_central_broker (systemd:cbd-sql): Started Centreon-Web1
centengine (systemd:centengine): Started Centreon-Web1
centreontrapd (systemd:centreontrapd): Started Centreon-Web1
snmptrapd (systemd:snmptrapd): Started Centreon-Web1
9.1.3 Vue des ressources
pcs resource status
Clone Set: ms_mysql-clone ms_mysql:
Promoted: [ Centreon-DB1 ]
Unpromoted: [ Centreon-DB2 ]
Stopped: [ Centreon-Web1 Centreon-Web2 ]
vip_mysql (ocf:heartbeat:IPaddr2): Started Centreon-DB1
Clone Set: php-clone [php]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Stopped: [ Centreon-DB1 Centreon-DB2 ]
Clone Set: cbd_rrd-clone [cbd_rrd]:
Started: [ Centreon-Web1 Centreon-Web2 ]
Stopped: [ Centreon-DB1 Centreon-DB2 ]
Resource Group: centreon:
vip (ocf:heartbeat:IPaddr2): Started Centreon-Web1
http (systemd:httpd): Started Centreon-Web1
gorgone (systemd:gorgoned): Started Centreon-Web1
centreon_central_sync (systemd:centreon-central-sync): Started Centreon-Web1
cbd_central_broker (systemd:cbd-sql): Started Centreon-Web1
centengine (systemd:centengine): Started Centreon-Web1
centreontrapd (systemd:centreontrapd): Started Centreon-Web1
snmptrapd (systemd:snmptrapd): Started Centreon-Web1
9.2 Ressource désactivée MySql
9.2.1 Analyse
…
Master/Slave Set: ms_mysql-master [ms_mysql]
Masters: [ Centreon-DB1 ]
Slaves: [ Centreon-DB2 ]
Stopped: [ Centreon-DB1 Centreon-DB2 ]
vip_mysql (ocf::heartbeat:IPaddr2): Stopped (disabled)
…
Dans le cas présent grâce aux contraintes Mysql les services Mariadb des 2 serveurs ne peux pas démarrés
9.2.2 Correction
pcs resource enable vip_mysql
Le démarrage de la VIP Mysql redémarera automatiquement les moteurs Mariadb des 2 serveurs.
9.2.3 Contrôle
/usr/share/centreon-ha/bin/mysql-check-status.sh
Connection MASTER Status 'WDCDGS1' [OK]
Connection SLAVE Status 'WDCDGS3' [OK]
Slave Thread Status [OK]
Position Status [OK]
9.3 Perte de la réplication des bases de données
La consigne est disponible également dans centreon : Consigne pour rétablir la réplication des bases de données
9.3.1 Avertissement
Avant de rétablir la réplication entre les 2 serveurs de base de données, il faut comprendre que le serveur ayant le rôle de Slave doit être iso en terme de données que le serveur Master.
Il ne faut donc jamais redémarrer le serveur Slave sans avoir synchroniser les bases de données des 2 membres du cluster, sous peine de corruption des bases de données.
Centreon fourni les scripts pour resynchroiser les bases de données. Pour que la replication puisse être rétablie il faut donc commencer par identifier quell est le serveur qui est actif.
9.3.2 Détermination du serveur database actif
2 cas de figures sont possible.
Depuis n’importe quel noeud du cluster lancer la commande :
• Le serveur Slave est démarré mais les serveurs ne sont pas synchronisés
/usr/share/centreon-ha/bin/mysql-check-status.sh
Connection MASTER Status 'centreon-DB1' [OK]
Connection SLAVE Status 'Centreon-DB2' [OK]
Slave Thread Status [KO]
Error reports:
No slave (maybe because we cannot check a server).
Position Status [SKIP]
!Error reports:
Skip because we can't identify a unique slave.]
• Le serveur Slave est arrêté
/usr/share/centreon-ha/bin/mysql-check-status.sh
Connection MASTER Status 'centreon-DB1' [OK]
Connection SLAVE Status 'Centreon-DB2' [KO]
Slave Thread Status [KO]
Error reports:
No slave (maybe because we cannot check a server).
Position Status [SKIP]
!Error reports:
Skip because we can't identify a unique slave.]
Le serveur Databases Actif est donc de le serveur Centreon-DB1
9.3.3 Resynchronisation des bases de données
Dans la 2 cas les étapae de la resolution sont les même :
- Contrôler l’espace disponible pour les snapshot
- Passer les bases de données en mode maintenance dans le cluster
- Arrêter la base de données sur le serveur slave
- Lancer le snapshot depuis le serveur Master
- Contrôle de la replication
- Quitter le mode Maintenance
9.3.3.1 Contrôler l’espace disponible pour les snapshot
Sur les serveurs DB1 et DB2 :
vgs VG_DATA
VG #PV #LV #SN Attr VSize VFree
VG_DATA 1 2 0 wz--n- 353,99g 30,99g
La valeur en vert doit être superieur à 5G sur les 2 serveurs.
Si la valeur est inférieure à 5Go il faudrat faire un vgextend sur le VGsinon les snapshots ne fonctionnent pas
9.3.3.2 Passer les bases de données en mode maintenance dans le cluster
Lancer la commande :
pcs resource unmanage ms_mysql
Contrôle du cluster :
Lancer l a commande :
crm_mon -1
Les lignes ci-dessous doivent apparaitre ;
Active Resources:
- Clone Set: ms_mysql-clone ms_mysql:
- ms_mysql (ocf:heartbeat:mariadb-centreon): Promoted Centreon-DB1 (unmanaged)
- ms_mysql (ocf:heartbeat:mariadb-centreon): Unpromoted Centreon-DB2 (unmanaged)
9.3.3.3 Arrêter la base de données sur le serveur slave
Se connecter sur le serveur Slave et arrêter la base de données :
• Arrêter la base de données :
systemctl stop mariadb
• Contrôle de la base de données :
systemctl stop mariadb
• Si le service n’est pas arrêté :
mysqladmin shutdown
• Contrôler que la base de données est bien arrêtée sur le serveur slave
9.3.3.4 Lancer le snapshot depuis le serveur Master
Lancer la commande :
/usr/share/centreon-ha/bin/mysql-sync-bigdb.sh
9.3.3.5 Contrôle de la replication
Aprés quelques seconds Contrôler la replication des bases :
/usr/share/centreon-ha/bin/mysql-check-status.sh
Connection Status 'Centreon-DB1' [OK]
Connection Status 'Centreon-DB2' [OK]
Slave Thread Status [OK]
Position Status [OK]
9.3.3.6 Quitter le mode Maintenance
Lancer la commande :
pcs resource manage ms_mysql
La replication la gestion des moteur par le cluster sont de nouveau en place.
Il ne reste plus qu’a purger les message d’erreur :
pcs resource cleanup
9.4 Bascule d’une resource d’un noeud vers un autre
Cette action n’est à effectuer qu’en cas de nécessité. Le cluster est sensé fonctionner quelle que soit le membre actif du cluster.
Les cas d’utilisation d’une bascule concerne :
• En cas de mise à jour de la plateforme
• En cas de maintenance de la plateforme
En dehors de ces cas il n’y a aucune raison de basculer d’un member vers un autre.
La bascule se fait donc en 2 étapes :
• Bascule de la resource
• Libération des contraintes
9.4.1 Bascule de la ressource
pcs resource move ms_mysql-master (ou centreon)
9.4.2 Libération des contraintes
pcs resource clear ms_mysql-master (ou centreon)
Aprés quelques minutes ( 2 où 3 ), la resource bascule vers l’autre noeud
10 Montée de version de Centreon HA
10.1 Placer le cluster en maintenance
pcs resource unmanage centreon
pcs resource unmanage ms_mysql
10.2 Lancer ma mise à jour sur les 2 serveurs centreon
dnf update
10.3 Sur serveur Web Passif
Il faut déplacer les fichier de mise à jour des base pour ne pas reproduire la mis à jour lors d’une bascule.
mv /usr/share/centreon/www/install /var/lib/centreon/installs/install-update-YYYY-MM-DD
Et purger le cache de symfony
sudo -u apache /usr/share/centreon/bin/console cache:clear
10.4 Supprimer les cron qui on été réinstallés
rm /etc/cron.d/centreon
rm /etc/cron.d/centstorage
rm /etc/cron.d/centreon-auto-disco
rm -f /etc/cron.d/centreon-ha-mysql
10.5 quitter le mode maintenance
pcs resource manage centreon
pcs resource manage ms_mysql
10.6 Contrôle des bases de données
Contrôler la ligne dans le fichier /etc/my.cnf.d/server.cnf sur les 2 serveurs Mysql
expire_logs_days=7
Si ce n’est pas le cas ajouter la ligne dans le fichier et redémarrer les bases de données
pcs resource restart ms_mysql
11 Console WEB du cluster
À la console Web du cluster se fait via l’URL : HA Cluster UI
Elle permet de faire 80 % des commandes lancées via pcs resource ….
• L’identifiant est : hacluster
• Le mot de passe est dans dashlane
La page présente le cluster :
En cliquant sur le cluster on peut voir l’état des noeuds :
Et des resources :
Et leur détail :
Jusqu ‘au Status complet d’une ressource :
12 Matrice des flux
12.1 Serveur central
From | To | Protocol | Port | Application |
Central Server | NTP Server | UDP | 123 | |
Central Server | DNS Server | UDP | 53 | |
Central Server | SMTP Server | TCP | 25 | |
Central Server | LDAP Server | TCP | 389 | |
Central | LDAPS Server | TCP | 636 | |
Central Server | DBMS Server | TCP | 3306 | |
Central Server | HTTP Proxy | TCP | 80/8080 | |
Central Server | HTTPS Proxy | TCP | 443/8433 | |
Central Server | Centreon Server Repository | TCP | 80 | |
Central Server | Centreon Server Repository | FTP | 20 |
12.2 Poller
Poller
From To Protocol Port Application
Poller NTP server NTP UDP 123 Synchronization of the system clock
Poller DNS server DNS UDP 53 Domain name resolution
Poller SMTP server SMTP TCP 25 Notification via email
Poller Repository HTTP (FTP) TCP 80 (FTP 20,21) Repository for system and application packages
Poller Network equipment, servers, etc. SNMP UDP 161 Monitoring
Network equipment Poller Trap SNMP UDP 162 Monitoring
Poller Servers NRPE TCP 5666 Monitoring
Poller Servers NSClient++ TCP 12489 Monitoring
12.3 Cluster
Cluster
From Destination Protocol Port Application
Active Central Server Passive Central Server SSH TCP 22 Synchronization of configuration files (Must be also open from passive to the active node)
Active Central Server Passive Central Server BDDO TCP 5670 RRDs synchronization (Must be also open from passive to the active node)
Active Database Server Passive Database Server MySQL TCP 3306 MySQL synchronization (Must be also open from passive to the active node)
Active Database Server Passive Database Server SSH TCP 22 MySQL synchronization (Must be also open from passive to the active node)
Central Servers + DB + QDevice Central Servers + DB + QDevice Corosync UDP 5404 Communication inside the cluster (Multicast)
Central Servers + DB + QDevice Central Servers + DB + QDevice Corosync UDP 5405 Communication inside the cluster (Unicast)
Central Servers + DB + QDevice Central Servers + DB + QDevice PCS TCP 2224 Communication inside the cluster
Central Servers + DB + QDevice Central Servers + DB + QDevice Corosync TCP 5403 Communication with the QDevice