« 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 la monter cet espace partagé.
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
&nbsp;
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
&nbsp;
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)
&nbsp;
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
&nbsp;
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
&nbsp;
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
&nbsp;
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
&nbsp;
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
&nbsp;
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
&nbsp;
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
&nbsp;
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
&nbsp;
Node List:
  * Online: [ fo1.home.dom fo2.home.dom ]
&nbsp;
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.