« LINUX:Pacemaker - Serveurs en Failover » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(12 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 105 : | Ligne 105 : | ||
pcs constraint order ClusterFs then start ClusterIP | pcs constraint order ClusterFs then start ClusterIP | ||
---- | ---- | ||
Ces commandes ne sont à exécuter qu'à partir d'une seule machine du cluster. | |||
Ligne 120 : | Ligne 121 : | ||
=Ajout de la ressource qui monte l'espace disque partagé= | ==Ajout de la ressource qui monte l'espace disque partagé== | ||
La ligne suivante: | La ligne suivante: | ||
pcs resource create ClusterFs ocf:heartbeat:Filesystem device="/dev/drbd1" directory="/data" fstype="xfs" | pcs resource create ClusterFs ocf:heartbeat:Filesystem device="/dev/drbd1" directory="/data" fstype="xfs" | ||
Ligne 133 : | Ligne 134 : | ||
==Contraintes== | ==Contraintes== | ||
Les contraintes d'ordre de démarrage sont connues; elles ont déjà été rencontrées dans les articles précédents. Il tombe sous le sens que la ressource "drbddata" active doit être effective avant de pouvoir | Les contraintes d'ordre de démarrage sont connues; elles ont déjà été rencontrées dans les articles précédents. Il tombe sous le sens que la ressource "drbddata" active doit être effective avant de pouvoir monter cet espace partagé. | ||
Les deux ressources "ClusterFs" et "ClusterIP" doivent se situer sur la même machine ("INFINITY") que la ressource Drbd (ClusterDrbd") qui est active ("Promoted"), parmi les deux ("clone"), d'où la syntaxe "Promoted ClusterDrbd-clone". | Les deux ressources "ClusterFs" et "ClusterIP" doivent se situer sur la même machine ("INFINITY") que la ressource Drbd (ClusterDrbd") qui est active ("Promoted"), parmi les deux ("clone"), d'où la syntaxe "Promoted ClusterDrbd-clone". | ||
=Statut de la première partie= | |||
Après cette opération, l'état du cluster peut être visualisé par la commande: | |||
crm_mon -1 | |||
qui donne: | |||
---- | |||
Status of pacemakerd: 'Pacemaker is running' (last updated 2023-02-14 12:42:34 +01:00) | |||
Cluster Summary: | |||
* Stack: corosync | |||
* Current DC: fo1.home.dom (version 2.1.5-3.fc37-a3f44794f94) - partition with quorum | |||
* Last updated: Tue Feb 14 12:42:34 2023 | |||
* Last change: Tue Feb 14 12:42:17 2023 by root via cibadmin on fo1.home.dom | |||
* 2 nodes configured | |||
* 4 resource instances configured | |||
| |||
Node List: | |||
* Online: [ fo1.home.dom fo2.home.dom ] | |||
| |||
Active Resources: | |||
* Clone Set: ClusterDrbd-clone [ClusterDrbd] (promotable): | |||
* '''Masters: [ fo2.home.dom ]''' | |||
* Slaves: [ fo1.home.dom ] | |||
* ClusterFs (ocf::heartbeat:Filesystem): Started '''fo2.home.dom''' | |||
* ClusterIP (ocf::heartbeat:IPaddr2): Started '''fo2.home.dom''' | |||
---- | |||
On remarque que dans ce cas, c'est la machine "fo2.home.dom" qui a la main; c'est à partir de cette machine que l'on peut copier des fichiers dans le répertoire "/data". Ne pas le faire sur l'autre machine sinon ce répertoire ne pourra plus être monté. | |||
Voyons l'état de Drbd sur la machine "fo2.home.dom": | |||
cat /proc/drbd | |||
qui affiche: | |||
---- | |||
version: 8.4.11 (api:1/proto:86-101) | |||
srcversion: 086EBDAD8BB6D6FF00986AA | |||
| |||
1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- | |||
ns:2748 nr:0 dw:2220 dr:5018 al:6 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 | |||
---- | |||
La commande sur la machine "fo2.home.dom": | |||
df -h | |||
permet de repérer que le répertoire "/data" est monté: | |||
---- | |||
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur | |||
devtmpfs 4,0M 0 4,0M 0% /dev | |||
tmpfs 1,9G 33M 1,9G 2% /dev/shm | |||
tmpfs 769M 1,1M 768M 1% /run | |||
/dev/mapper/fo2_lv1-root 15G 3,8G 12G 26% / | |||
tmpfs 1,9G 0 1,9G 0% /tmp | |||
/dev/sda1 1014M 329M 686M 33% /boot | |||
/dev/mapper/fo2_lv1-var 9,8G 1,1G 8,8G 11% /var | |||
'''/dev/drbd1''' 149G 1,2G 148G 1% '''/data''' | |||
tmpfs 385M 16K 385M 1% /run/user/0 | |||
---- | |||
Voici la situation de l'adressage réseau sur la machine "fo2.home.dom", qui a les ressources, avec la commande: | |||
ifconfig | |||
qui donne: | |||
---- | |||
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 | |||
inet 192.168.1.72 netmask 255.255.255.0 broadcast 192.168.1.255 | |||
ether 00:1b:21:3b:b0:77 txqueuelen 1000 (Ethernet) | |||
RX packets 170080 bytes 147735272 (140.8 MiB) | |||
RX errors 0 dropped 7 overruns 0 frame 0 | |||
TX packets 102619 bytes 12967633 (12.3 MiB) | |||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 | |||
| |||
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 | |||
inet 192.168.2.72 netmask 255.255.255.0 broadcast 192.168.2.255 | |||
ether 00:1c:c0:2a:c4:25 txqueuelen 1000 (Ethernet) | |||
RX packets 2357 bytes 183467 (179.1 KiB) | |||
RX errors 0 dropped 1675 overruns 0 frame 0 | |||
TX packets 2931 bytes 3036681 (2.8 MiB) | |||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 | |||
device interrupt 20 memory 0xe0380000-e03a0000 | |||
| |||
eth1:'''ethcl1''': flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 | |||
inet '''192.168.1.73''' netmask 255.255.255.0 broadcast 192.168.1.255 | |||
ether 00:1b:21:3b:b0:77 txqueuelen 1000 (Ethernet) | |||
| |||
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 | |||
inet 127.0.0.1 netmask 255.0.0.0 | |||
inet6 ::1 prefixlen 128 scopeid 0x10<host> | |||
loop txqueuelen 1000 (Boucle locale) | |||
RX packets 265 bytes 84878 (82.8 KiB) | |||
RX errors 0 dropped 0 overruns 0 frame 0 | |||
TX packets 265 bytes 84878 (82.8 KiB) | |||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 | |||
---- | |||
=[[LINUX:Pacemaker - Paramétrage des services en Failover|Paramétrage des services en Failover]]= | |||
Maintenant que le nécessaire est en place, nous allons y placer quelques éléments pratiques: quelques services classiques. | |||
Mais avant d'aborder la suite de la configuration de Pacemaker, il nous faut les paramétrer un minimum afin de tester cet ensemble. | |||
Pour ne pas alourdir cet article, nous les avons détaillés à part. | |||
=Configuration de la seconde partie= | |||
Maintenant que les services sont configurés, on peut les intégrer au cluster à l'aide de Pacemaker. | |||
==Script== | |||
On effectue la suite des commandes suivantes à partir d'une des machines du cluster. On peut les mettre dans un script. | |||
---- | |||
#!/bin/bash | |||
| |||
pcs resource create ClusterHttp systemd:httpd op monitor interval=30s | |||
pcs constraint colocation add ClusterHttp with ClusterIP score=INFINITY | |||
pcs constraint order ClusterIP then start ClusterHttp | |||
| |||
pcs resource create ClusterPhp systemd:php-fpm op monitor interval=30s | |||
pcs constraint colocation add ClusterPhp with ClusterHttp score=INFINITY | |||
pcs constraint order ClusterHttp then start ClusterPhp | |||
| |||
pcs resource create ClusterMariadb systemd:mariadb op monitor interval=30s | |||
pcs constraint colocation add ClusterMariadb with ClusterPhp score=INFINITY | |||
pcs constraint order ClusterPhp then start ClusterMariadb | |||
| |||
pcs resource create ClusterPostfix systemd:postfix op monitor interval=30s | |||
pcs constraint colocation add ClusterPostfix with ClusterMariadb score=INFINITY | |||
pcs constraint order ClusterMariadb then start ClusterPostfix | |||
| |||
pcs resource create ClusterPostfixBase systemd:postfix-base op monitor interval=30s | |||
pcs constraint colocation add ClusterPostfixBase with ClusterPostfix score=-INFINITY | |||
pcs constraint order ClusterPostfix then start ClusterPostfixBase | |||
| |||
pcs resource create ClusterDovecot systemd:dovecot op monitor interval=30s | |||
pcs constraint colocation add ClusterDovecot with ClusterPostfix score=INFINITY | |||
pcs constraint order ClusterPostfix then start ClusterDovecot | |||
| |||
pcs resource create ClusterMailTo ocf:heartbeat:MailTo email=root subject="FailOver_Home" op monitor interval=30s | |||
pcs constraint colocation add ClusterMailTo with ClusterDovecot score=INFINITY | |||
pcs constraint order ClusterDovecot then start ClusterMailTo | |||
---- | |||
==Ajouts des ressources== | |||
La création de ces ressources des différents services sont sur le même gabari; on utilise la fonction Systemd du type "systemd:<service>". | |||
(excepté la ressource classique "ClusterMailTo" déjà vue) | |||
==Localisation des ressources== | |||
Tous les services sont placés sur la machine où Drbd est actif et que l'espace partagé "/data" est monté. | |||
Un seul fait exception, la ressource "ClusterPostfixBase"; elle doit se placer sur la machine passive, celle qui est en attente où la ressource équivalente "ClusterPostfix" ne s'exécute pas. On utilise pour cette raison l'option "score=-INFINITY"; le moins "-" signifie à un endroit opposé. | |||
==Ordre de lancement des ressources== | |||
Nous avons déjà rencontré ce type de commande; chaque service est chargé chacun à la suite de l'autre après la ressource "ClusterIP". | |||
=Statut après l'activation de la seconde partie= | |||
Après cette opération, l'état du cluster peut être visualisé par la commande: | |||
crm_mon -1 | |||
qui donne: | |||
---- | |||
Status of pacemakerd: 'Pacemaker is running' (last updated 2023-02-15 19:25:01 +01:00) | |||
Cluster Summary: | |||
* Stack: corosync | |||
* Current DC: fo1.home.dom (version 2.1.5-3.fc37-a3f44794f94) - partition with quorum | |||
* Last updated: Wed Feb 15 19:25:02 2023 | |||
* Last change: Wed Feb 15 19:24:54 2023 by root via cibadmin on fo1.home.dom | |||
* 2 nodes configured | |||
* 11 resource instances configured | |||
| |||
Node List: | |||
* Online: [ fo1.home.dom fo2.home.dom ] | |||
| |||
Active Resources: | |||
* Clone Set: ClusterDrbd-clone [ClusterDrbd] (promotable): | |||
* Masters: [ fo2.home.dom ] | |||
* Slaves: [ fo1.home.dom ] | |||
* ClusterFs (ocf::heartbeat:Filesystem): Started fo2.home.dom | |||
* ClusterIP (ocf::heartbeat:IPaddr2): Started fo2.home.dom | |||
* ClusterHttp (systemd:httpd): Started fo2.home.dom | |||
* ClusterPhp (systemd:php-fpm): Started fo2.home.dom | |||
* ClusterMariadb (systemd:mariadb): Started fo2.home.dom | |||
* ClusterPostfix (systemd:postfix): Started fo2.home.dom | |||
* '''ClusterPostfixBase''' (systemd:postfix-base): Starting '''fo1.home.dom''' | |||
* ClusterDovecot (systemd:dovecot): Starting fo2.home.dom | |||
---- | |||
On remarque que seule la ressource "ClusterPostfixBase" s'exécute sur l'autre machine "fo1.home.dom". | |||
=Accès pour les clients= | |||
Notons que sur les machines clients, le nom de machine "cluster.home.dom" doit être connu et lié à l'adresse IP "192.168.1.73". (serveur DNS ou fichiers "hosts" local) | |||
Pour accéder au site Web, l'URL est: | |||
<nowiki>https://cluster.home.dom</nowiki> | |||
qui affichera: | |||
---- | |||
Nom du serveur: fo2.home.dom | |||
---- | |||
Du côté de la messagerie, Le serveur est "cluster.home.dom". Par exemple pour l'utilisateur "pdupont", l'adresse mail est "pdupont@failover.dom" et le nom de compte est "pdupont" accompagné du mot de passe Linux associé. Le reste est classique. | |||