Debian 9 : Haute disponibilité
Mise en place d’un cluster à 2 nœud Debian 9
La mise en place d’un cluster Debian 9 permet, entre autre, d’avoir de la haute disponibilité pour les services dans ce cluster.
Pour plus d’information sur cette procédure, voir la documentation officiel, qui, au moment de la rédaction de cet article s’appuyaient sur une Debian 8.
Environement
IP | Nom de l’hôte | Rôle |
---|---|---|
172.16.0.10/24 | – | IP flotante (entre les nœuds) |
172.16.0.11/24 | node1.stan.local | Nœud |
172.16.0.12/24 | node2.stan.local | Nœud |
Prérequis
: sur tous les nœuds
Configuration de /etc/hosts.
root@debian~#: vim /etc/hosts
Pour le node1
aperçu du contenu du fichier
[…] 127.0.1.1 node1.server.lan 10.0.0.15 node1.server.lan 10.0.0.16 node2.server.lan […]
Pour le node1
aperçu du contenu du fichier
[…] 127.0.1.1 node2.server.lan 10.0.0.15 node1.server.lan 10.0.0.16 node2.server.lan […]
Installation et configuration de corosync
Installation de pacemaker
et de crmsh
.
root@debian~#: apt install pacemaker crmsh
Stopper et désactiver le lancement de pacemaker
et de corosync
au boot (pour le moment).
root@debian~#: systemctl stop pacemaker corosync root@debian~#: systemctl disable pacemaker corosync
: sur un seul nœud
Configuration de corosync
.
root@debian~#: vim /etc/corosync/corosync.conf
contenu du fichier
totem { version: 2 cluster_name: debian token: 3000 token_retransmits_before_loss_const: 10 clear_node_high_bit: yes crypto_cipher: aes256 crypto_hash: sha1 interface { ringnumber: 0 bindnetaddr: 172.16.0.11 mcastaddr: 239.255.1.1 mcastport: 5405 ttl: 1 } } logging { fileline: off to_stderr: no to_logfile: no # comment this line and uncomment to 2 next lines to get logs #to_logfile: yes #logfile: /var/log/corosync/corosync.log to_syslog: yes syslog_facility: daemon debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } quorum { provider: corosync_votequorum two_node: 1 expected_votes: 2 }
: l’IP renseigné pour bindetaddr doit être la même sur tous les nœuds d’un même cluster.
Générer la clé d’authentification.
: la génération de la clé peut prendre un moment. L’installation du packet haveged
rend le processe plus rapide.
root@debian~#: apt install -y haveged
Gérénation de la clé.
root@debian~#: corosync-keygen
sortie
Corosync Cluster Engine Authentication key generator. Gathering 1024 bits for key from /dev/random. Press keys on your keyboard to generate entropy. Press keys on your keyboard to generate entropy (bits = 904). Press keys on your keyboard to generate entropy (bits = 952). Press keys on your keyboard to generate entropy (bits = 1000). Writing corosync key to /etc/corosync/authkey.
: le packet haveged
peut être supprimer à présent
root@debian~#: apt remove haveged root@debian~#: apt purge haveged
Copier la clé sur les autres nœuds.
root@debian~#: scp /etc/corosync/corosync.conf root@172.16.0.11:/etc/corosync/corosync.conf root@debian~#: scp /etc/corosync/authkey root@172.16.0.12:/etc/corosync/authkey
: sur tous les nœuds
root@debian~#: systemctl start corosync.service root@debian~#: systemctl start pacemaker.service
: sur un seul nœud
Après quelques secondes, vérifier le status du cluster.
root@debian~#: crm status
sortie
Stack: corosync
Current DC: node1.server.lan (version 1.1.16-94ff4df) - partition with quorum
Last updated: Sun Jan 6 12:04:25 2019
Last change: Sun Jan 6 12:01:53 2019 by hacluster via crmd on node1.server.lan
2 nodes configured
0 resources configured
Online: [ node1.server.lan node2.server.lan ]
No resources
Gestion des ressources
: à partir de maintenant la gestion des services doit se faire via le shell crm.
Entrer dans le shell crm.
root@debian~#: crm
Lister les nœuds.
crm(live)# node crm(live)node# list
sortie
node1.server.lan(167772175): normal node2.server.lan(167772176): normal
Revenir au menu précédent via la commande up
et quitter le shell crm : bye
.
crm(live)node# up crm(live)# bye
Ajout de ressources
Option | Description |
---|---|
virtual-IP-rsc | l’IP virtuelle partager entre les nœuds |
fence_node1 | le fencing-agent agent de node1 tournant sur le node2 |
fence_node2 | le fencing-agent agent de node2 tournant sur le node1 |
Ouvrir crm configure
.
root@debian~#: crm configure
Au prompt, entrer les commandes suivantes.
crm(live)configure# property stonith-enabled=no crm(live)configure# property no-quorum-policy=ignore crm(live)configure# property default-resource-stickiness=100
Option | Description |
---|---|
stonith-enabled=no | désactive stonith jusqu’à ce que les agents de fencing soient opérationnel |
no-quorum-policy=ignore | permet au cluster d’être en fonction même s’il ne reste qu’un nœeud |
default-resource-stickiness | permet d’éviter qu’une ressource bouge après avoir été (ré)établie |
crm(live)configure# primitive virtual-IP-rsc ocf:heartbeat:IPaddr2 params ip="172.16.0.10" nic="enp0s3" cidr_netmask="32" meta migration-threshold=2 op monitor interval=20 timeout=60 on-fail=restart crm(live)configure# commit
Option | Description |
---|---|
virtual-IP-rsc | nom de la ressource |
ip | l’IP flottante. : NE doit PAS correspondre à une IP déjà attribué. |
nic | le nom de l’interface réseau (faire ip a pour l’identifier) |
cidr_netmask | le masque CIDR de sous-réseau de cette IP |
Vérifier que la ressource est bien présente.
root@debian~#: crm status
sortie
Stack: corosync Current DC: node1.server.lan (version 1.1.16-94ff4df) - partition with quorum Last updated: Sun Jan 6 13:49:53 2019 Last change: Sun Jan 6 13:30:33 2019 by root via cibadmin on node1.server.lan 2 nodes configured 1 resource configured Online: [ node1.server.lan node2.server.lan ] Full list of resources: virtual-IP-rsc (ocf::heartbeat:IPaddr2): Started node1.server.lan
Le résultat précédent montre que la ressource virtual-IP-rsc a démarré et qu’elle est sur le nœud node1.server.lan.
Il est maintenant possible d’accéder au cluster via son IP flottante. Faire un ping sur 172.16.0.10 depuis l’extérieur confirmera que cette IP flottante est bien en place.
Une fois que tout fonctionne démarrer pacemaker
corosync
au boot.
root@debian~#: systemctl enable pacemaker corosync
by Nicolas SHINEY | January 6, 2019 | No Comments | Système | Tags : debian 9 HA