« 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 | 192.168.1.75 lb5.home.dom lb5 | ||
192.168.1.74 | 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". | "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, | route1=192.168.1.0/24,192.168.2.75,201 | ||
route2=192.168.1.0/24,192.168.2.74, | route2=192.168.1.0/24,192.168.2.74,202 | ||
---- | ---- | ||
Ou on le fait via l'interface utilisateur texte: | |||
nmtui | |||
Voyez l'article sur le [[LINUX:Routage statique|Routage statique]]. | |||
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. | |||