Cluster Linux Centreon

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 :

  1. Contrôler l’espace disponible pour les snapshot
  2. Passer les bases de données en mode maintenance dans le cluster
  3. Arrêter la base de données sur le serveur slave
  4. Lancer le snapshot depuis le serveur Master
  5. Contrôle de la replication
  6. 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

FromToProtocolPortApplication
Central ServerNTP ServerUDP123
Central ServerDNS ServerUDP53
Central ServerSMTP ServerTCP25
Central ServerLDAP ServerTCP389
CentralLDAPS Server
TCP636
Central ServerDBMS ServerTCP3306
Central ServerHTTP ProxyTCP80/8080
Central ServerHTTPS ProxyTCP443/8433
Central ServerCentreon Server RepositoryTCP80
Central ServerCentreon Server RepositoryFTP20


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


Table des matières

Table des matières
WordPress Appliance - Powered by TurnKey Linux