« LINUX:Pacemaker - deux routers en failover - trois serveurs WEB en Loadbalancing, Galera et GlusterFs » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
 
(6 versions intermédiaires par le même utilisateur non affichées)
Ligne 45 : Ligne 45 :
   
   
  192.168.1.70 cluster.home.dom cluster
  192.168.1.70 cluster.home.dom cluster
  192.168.1.75 cluster5.home.dom cluster5
  192.168.1.75 lb5.home.dom lb5
  192.168.1.74 cluster4.home.dom cluster4
  192.168.1.74 lb4.home.dom lb4
  192.168.2.75 sv5.home.dom sv5
  192.168.2.75 sv5.home.dom sv5
  192.168.2.74 sv4.home.dom sv4
  192.168.2.74 sv4.home.dom sv4
Ligne 65 : Ligne 65 :
=Configuration des services sur les serveurs Web=
=Configuration des services sur les serveurs Web=
Nous avons à configurer les différents services nécessaires qui vont être utilisés par Pacemaker. Ces configurations sont à faire sur les quatre serveurs Web:  
Nous avons à configurer les différents services nécessaires qui vont être utilisés par Pacemaker. Ces configurations sont à faire sur les quatre serveurs Web:  
"192.168.2.71", "192.168.2.72" et "192.168.2.73". Voyez l'article sur le [[LINUX:Routage statique|Routage statique]].
"192.168.2.71", "192.168.2.72" et "192.168.2.73".  
 
 
==Routage==
Comme l'adresse IP de la passerelle sera changeante car c'est celle de l'adresse IP virtuelle du router maître, elle sera définie via Pacemaker. Mais quand Pacemaker est arrêté, il faut y pallier. Pour cette raison, nous ajoutons deux adresses IP de routage statique; l'une va vers l'adresse IP "192.168.2.74" et l'autre vers "192.168.2.75". On peut ne pas le faire. Dans cette situation, la ressource de passerelle par défaut de Pacemaker non activée, ces serveurs Web sont isolés dans le réseau "192.168.2.0/24".
 


En pratique, dans le fichier de l'interface du réseau "192.168.2.0/24" dans le répertoire "/etc/NetworkManager/system-connections", on ajoute les deux lignes suivantes sous la section "[ipv4]":
En pratique, dans le fichier de l'interface du réseau "192.168.2.0/24" dans le répertoire "/etc/NetworkManager/system-connections", on ajoute les deux lignes suivantes sous la section "[ipv4]":
Ligne 71 : Ligne 76 :
  [ipv4]
  [ipv4]
  ...
  ...
  route1=192.168.1.0/24,192.168.2.75,101
  route1=192.168.1.0/24,192.168.2.75,201
  route2=192.168.1.0/24,192.168.2.74,102
  route2=192.168.1.0/24,192.168.2.74,202
----
----
 
Ou on le fait via l'interface utilisateur texte:
 
nmtui
==Routage==
Voyez l'article sur le [[LINUX:Routage statique|Routage statique]].
Comme l'adresse IP de la passerelle sera changeante car c'est celle de l'adresse IP virtuelle du router maître, elle sera définie via Pacemaker. Mais quand Pacemaker est arrêté, il faut y pallier. Pour cette raison, nous ajoutons deux adresses IP de routage statique; l'une va vers l'adresse IP "192.168.2.74" et l'autre vers "192.168.2.75".




Ligne 328 : Ligne 332 :




=Configuration des ressources de Pacemaker=
==Script==
On effectue la suite des commandes suivantes à partir d'une des machines du cluster. On peut les mettre dans un script.
Particularité, si on applique ces commandes directement, diverses erreurs apparaissent car tant que mes contraintes ne sont pas mises en routes, le système essaie de lancer la ressource sur toutes les machines.
La solution vient via la création d'un fichier Pacemaker temporaire; ce dernier sera intégré globalement à Pacemaker en fin de traitement. Ce fichier intermédiaire sera nomme "create.xml". Il prend une copie de la configuration de Pacemaker.
Voici le script:
----
#!/bin/bash
 
pcs cluster cib create.xml
 
pcs -f create.xml resource create ClusterIP0 ocf:heartbeat:IPaddr2 ip=192.168.1.70 nic=eth1 cidr_netmask=24 iflabel=ethcl0 lvs_support=true op monitor interval=30s
pcs -f create.xml constraint location ClusterIP0 prefers sv1.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterIP0 prefers sv2.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterIP0 prefers sv3.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterIP0 prefers sv4.home.dom=100
pcs -f create.xml constraint location ClusterIP0 prefers sv5.home.dom=200
 
pcs -f create.xml resource create ClusterDefaultRoute ocf:heartbeat:Route destination="default" gateway=192.168.2.70 device=eth1 family=ip4 clone
pcs -f create.xml constraint location ClusterDefaultRoute-clone prefers sv1.home.dom=100
pcs -f create.xml constraint location ClusterDefaultRoute-clone prefers sv2.home.dom=100
pcs -f create.xml constraint location ClusterDefaultRoute-clone prefers sv3.home.dom=100
pcs -f create.xml constraint location ClusterDefaultRoute-clone prefers sv4.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterDefaultRoute-clone prefers sv5.home.dom=-INFINITY
pcs -f create.xml constraint order ClusterIP0 then start ClusterDefaultRoute-clone
 
pcs -f create.xml resource create ClusterLdirectord systemd:ldirectord  op monitor interval=30s
pcs -f create.xml constraint location ClusterLdirectord prefers sv1.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterLdirectord prefers sv2.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterLdirectord prefers sv3.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterLdirectord prefers sv4.home.dom=100
pcs -f create.xml constraint location ClusterLdirectord prefers sv5.home.dom=200
pcs -f create.xml constraint order ClusterDefaultRoute-clone then start ClusterLdirectord
pcs -f create.xml constraint colocation add ClusterIP0 with ClusterLdirectord score=INFINITY
 
pcs -f create.xml resource create ClusterGlusterd systemd:glusterd op monitor interval=20s clone
pcs -f create.xml constraint location ClusterGlusterd-clone prefers sv1.home.dom=100
pcs -f create.xml constraint location ClusterGlusterd-clone prefers sv2.home.dom=100
pcs -f create.xml constraint location ClusterGlusterd-clone prefers sv3.home.dom=100
pcs -f create.xml constraint location ClusterGlusterd-clone prefers sv4.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterGlusterd-clone prefers sv5.home.dom=-INFINITY
pcs -f create.xml constraint order ClusterLdirectord then start ClusterGlusterd-clone
 
pcs -f create.xml resource create ClusterRsyncd systemd:rsyncd op monitor interval=30s clone
pcs -f create.xml constraint location ClusterRsyncd-clone prefers sv1.home.dom=100
pcs -f create.xml constraint location ClusterRsyncd-clone prefers sv2.home.dom=100
pcs -f create.xml constraint location ClusterRsyncd-clone prefers sv3.home.dom=100
pcs -f create.xml constraint location ClusterRsyncd-clone prefers sv4.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterRsyncd-clone prefers sv5.home.dom=-INFINITY
pcs -f create.xml constraint order ClusterGlusterd-clone then start ClusterRsyncd-clone
 
pcs -f create.xml resource create ClusterCheckGalera systemd:checkgalera op monitor interval=30s clone
pcs -f create.xml constraint location ClusterCheckGalera-clone prefers sv1.home.dom=100
pcs -f create.xml constraint location ClusterCheckGalera-clone prefers sv2.home.dom=100
pcs -f create.xml constraint location ClusterCheckGalera-clone prefers sv3.home.dom=100
pcs -f create.xml constraint location ClusterCheckGalera-clone prefers sv4.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterCheckGalera-clone prefers sv5.home.dom=-INFINITY
pcs -f create.xml constraint order ClusterRsyncd-clone then start ClusterCheckGalera-clone
 
pcs -f create.xml resource create ClusterFsWeb ocf:heartbeat:Filesystem \
  device="localhost:/diskgfs1" \
  directory="/data" fstype="glusterfs" \
  "options=defaults,_netdev" \
  op monitor interval=20s on-fail=stop clone
pcs -f create.xml constraint location ClusterFsWeb-clone prefers sv1.home.dom=100
pcs -f create.xml constraint location ClusterFsWeb-clone prefers sv2.home.dom=100
pcs -f create.xml constraint location ClusterFsWeb-clone prefers sv3.home.dom=100
pcs -f create.xml constraint location ClusterFsWeb-clone prefers sv4.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterFsWeb-clone prefers sv5.home.dom=-INFINITY
pcs -f create.xml constraint order ClusterCheckGalera-clone then start ClusterFsWeb-clone
 
pcs -f create.xml resource create ClusterHttpd systemd:httpd op monitor interval=30s clone
pcs -f create.xml constraint location ClusterHttpd-clone prefers sv1.home.dom=100
pcs -f create.xml constraint location ClusterHttpd-clone prefers sv2.home.dom=100
pcs -f create.xml constraint location ClusterHttpd-clone prefers sv3.home.dom=100
pcs -f create.xml constraint location ClusterHttpd-clone prefers sv4.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterHttpd-clone prefers sv5.home.dom=-INFINITY
pcs -f create.xml constraint order ClusterFsWeb-clone then start ClusterHttpd-clone
 
pcs -f create.xml resource create ClusterPhp systemd:php-fpm op monitor interval=30s clone
pcs -f create.xml constraint location ClusterPhp-clone prefers sv1.home.dom=100
pcs -f create.xml constraint location ClusterPhp-clone prefers sv2.home.dom=100
pcs -f create.xml constraint location ClusterPhp-clone prefers sv3.home.dom=100
pcs -f create.xml constraint location ClusterPhp-clone prefers sv4.home.dom=-INFINITY
pcs -f create.xml constraint location ClusterPhp-clone prefers sv5.home.dom=-INFINITY
pcs -f create.xml constraint order ClusterHttpd-clone then start ClusterPhp-clone
 
pcs -f create.xml resource create ClusterMailTo ocf:heartbeat:MailTo email=root subject="FailOver_Home" op monitor interval=30s clone
pcs -f create.xml constraint order ClusterPhp-clone then start ClusterMailTo-clone
 
pcs cluster cib-push create.xml
----
==Ajout des ressources sur les serveurs Web==
La majorité des ressources sont clonées. En effet les quatre serveurs WEB ont la même configuration. Mais ces ressources ne doivent pas s'exécuter sur le router d'où la contrainte de localisation dont le score est "-INFINITY" sur le router.
* La ressource "ClusterDefaultRoute" va activer la passerelle par défaut.
* La ressource "ClusterGlusterd" va activer le service GlusterFs configuré ci-dessus.
* La ressource "ClusterRsyncd" va activer le service Rsync configuré ci-dessus.
* La ressource "ClusterCheckGalera" va activer le service CheckGalera configuré ci-dessus qui lancera le service MariaDb.
* La ressource "ClusterFsWeb" va monter le volume "diskgfs1" local sur le répertoire "/data".
* La ressource "ClusterHttpd" va activer le service Apache configurée ci-dessus.
* La ressource "ClusterPhp" va activer le service Php.
Par contre la ressource "ClusterMailTo" doit s'exécuter sur toutes les machines.
==Ajout des ressources sur les routers==
Les deux dernières ressources "ClusterLdirectord" et "ClusterIP0" ne doivent s'exécuter que sur une seule router en Failover. Ici nous avons mis la préférence sur la machine "sv5.home.dom".
==Ordre==
Nous avons intercalé le lancement de Rsyncd, MariaDb entre le service Glusterd et le montage du volume afin de laisser à GlusterFs le temps de se lancer.
Nous avons ordonné l'ordre des lancements de ces ressources en commençant par une se situant sur un router.
=Statut=
Après cette opération, l'état du cluster peut être visualisé par la commande:
crm_mon -1rnf
qui donne dans le cas des cinq machines actives:
----
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: sv5.home.dom (version 2.1.6-4.fc38-6fdc9deea29) - partition with quorum
  * Last updated: Sat Jun 24 13:32:39 2023 on sv1.home.dom
  * Last change:  Sat Jun 24 13:24:15 2023 by root via cibadmin on sv1.home.dom
  * 5 nodes configured
  * 42 resource instances configured
 
Node List:
  * Node sv1.home.dom: online:
    * Resources:
      * ClusterDefaultRoute    (ocf::heartbeat:Route):  Started
      * ClusterGlusterd (systemd:glusterd):      Started
      * ClusterRsyncd  (systemd:rsyncd):        Started
      * ClusterCheckGalera      (systemd:checkgalera):  Started
      * ClusterFsWeb    (ocf::heartbeat:Filesystem):    Started
      * ClusterHttpd    (systemd:httpd):        Started
      * ClusterPhp      (systemd:php-fpm):      Started
      * ClusterMailTo  (ocf::heartbeat:MailTo):        Started
  * Node sv2.home.dom: online:
    * Resources:
      * ClusterDefaultRoute    (ocf::heartbeat:Route):  Started
      * ClusterGlusterd (systemd:glusterd):      Started
      * ClusterRsyncd  (systemd:rsyncd):        Started
      * ClusterCheckGalera      (systemd:checkgalera):  Started
      * ClusterHttpd    (systemd:httpd):        Started
      * ClusterPhp      (systemd:php-fpm):      Started
      * ClusterMailTo  (ocf::heartbeat:MailTo):        Started
      * ClusterFsWeb    (ocf::heartbeat:Filesystem):    Started
  * Node sv3.home.dom: online:
    * Resources:
      * ClusterDefaultRoute    (ocf::heartbeat:Route):  Started
      * ClusterGlusterd (systemd:glusterd):      Started
      * ClusterRsyncd  (systemd:rsyncd):        Started
      * ClusterCheckGalera      (systemd:checkgalera):  Started
      * ClusterHttpd    (systemd:httpd):        Started
      * ClusterPhp      (systemd:php-fpm):      Started
      * ClusterMailTo  (ocf::heartbeat:MailTo):        Started
      * ClusterFsWeb    (ocf::heartbeat:Filesystem):    Started
  * Node sv4.home.dom: online:
    * Resources:
      * ClusterMailTo  (ocf::heartbeat:MailTo):        Started
  * Node sv5.home.dom: online:
    * Resources:
      * ClusterIP0      (ocf::heartbeat:IPaddr2):        Started
      * ClusterLdirectord      (systemd:ldirectord):    Started
      * ClusterMailTo  (ocf::heartbeat:MailTo):        Started
 
Inactive Resources:
  * Clone Set: ClusterDefaultRoute-clone [ClusterDefaultRoute]:
    * Started: [ sv1.home.dom sv2.home.dom sv3.home.dom ]
    * Stopped: [ sv4.home.dom sv5.home.dom ]
  * Clone Set: ClusterGlusterd-clone [ClusterGlusterd]:
    * Started: [ sv1.home.dom sv2.home.dom sv3.home.dom ]
    * Stopped: [ sv4.home.dom sv5.home.dom ]
  * Clone Set: ClusterRsyncd-clone [ClusterRsyncd]:
    * Started: [ sv1.home.dom sv2.home.dom sv3.home.dom ]
    * Stopped: [ sv4.home.dom sv5.home.dom ]
  * Clone Set: ClusterCheckGalera-clone [ClusterCheckGalera]:
    * Started: [ sv1.home.dom sv2.home.dom sv3.home.dom ]
    * Stopped: [ sv4.home.dom sv5.home.dom ]
  * Clone Set: ClusterFsWeb-clone [ClusterFsWeb]:
    * Started: [ sv1.home.dom sv2.home.dom sv3.home.dom ]
    * Stopped: [ sv4.home.dom sv5.home.dom ]
  * Clone Set: ClusterHttpd-clone [ClusterHttpd]:
    * Started: [ sv1.home.dom sv2.home.dom sv3.home.dom ]
    * Stopped: [ sv4.home.dom sv5.home.dom ]
  * Clone Set: ClusterPhp-clone [ClusterPhp]:
    * Started: [ sv1.home.dom sv2.home.dom sv3.home.dom ]
    * Stopped: [ sv4.home.dom sv5.home.dom ]
 
Migration Summary:
----




=Client=
Pour atteindre le site Web, le client doit introduire l'URL: <nowiki>https://cluster.home.dom/</nowiki>


Cette machine "cluster.home.dom" doit être liée à l'adresse IP "192.168.1.70" via le fichier "hosts" ou le serveur DNS.