===== ProxyReverse Nginx en HA via Pacemaker ===== ==== Présentation "PCS" : ==== **pcs** permet de configurer pacemaker et corosync en ligne de commande sans avoir à éditer le fichier de configuration de corosync ou la CIB (un splendide fichier XML) de pacemaker. Cet outil est souvent comparé à **crmsh**. ---- ==== Environnement : ==== | IP | Nom du contenair | Rôle | | 192.168.1.104 | * | IP virtuelle | | 192.168.1.102 | proxybis | Contenair LXC | | 192.168.1.103 | proxy | Contenair LXC | ---- ==== Prérequis : ==== * 2 Contenairs Debian * Fichier /etc/hosts renseigné sur les 2 CTs 192.168.1.102 proxybis 192.168.1.103 proxy ---- ==== Installation et configuration de PCS : ==== === Installation sur chaque CT : === /apt update & apt dist-upgrade -y /apt install -y pcsd Une fois l'installation effectuée, l'user **hacluster** est créé. Donnons lui un mot de passe via la commande : passwd hacluster === Démarrage des services sur chaques CT : === systemctl start pcsd.service systemctl enable pcsd.service systemctl enable corosync systemctl enable pacemaker === Arrêt du démarrage auto de nginx : === A faire sur les 2 CT systemctl disable nginx.service === Configuration de PCS sur un seul CT : === pcs host auth [nom du CT1] [nom du CT2] -u hacluster pcs cluster setup [nom du cluster] [nom du CT1] [nom du CT2] --start --enable pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore ==== Ajout de Resource : ==== N'hésitez pas a consulter l'aide pour la création de resources : **pcs -h resource create** | Option | Description | | virtual-IP-rsc | l’IP virtuelle partager entre les CTs | | Service nginx | Vérification présence du service nginx | pcs resource create ip ocf:heartbeat:IPaddr2 ip=192.168.1.104 cidr_netmask=24 op monitor interval=5s pcs resource create nginx systemd:nginx op monitor interval=5s pcs constraint colocation add ip with nginx INFINITY pcs constraint location ip prefers [nom du CT1] pcs constraint order ip then nginx __Quelques explications :__ - On créé une adresse IP virtuelle qui sera contrôlée toute les 5s - On créé le démarrage du service nginx qui sera contrôlé tout les 5s - On met la contrainte que l'IP et le service nginx doivent tourner sur le même CT - On met la contrainte que l'on préfère que cela tourne sur le CT1 - On met la contrainte que le service nginx démarre quand l'ip virtuelle est active. Nous pouvons voir nos contraintes avec la commande **pcs constraint list** : Location Constraints: Resource: ip Enabled on: proxy (score:INFINITY) Resource: nginx Enabled on: proxy (score:INFINITY) Ordering Constraints: start nginx then start ip (kind:Mandatory) Colocation Constraints: ip with nginx (score:INFINITY) Ticket Constraints: Une fois ces opérations effectuées vous pouvez voir l'état de votre cluster via la commande **pcs status** : Cluster name: [nom du cluster] Stack: corosync Current DC: [nom du CT2] (version 2.0.1-9e909a5bdd) - partition with quorum Last updated: Sun Oct 13 01:19:04 2019 Last change: Sat Oct 12 19:22:31 2019 by root via cibadmin on [nom du CT1] 2 nodes configured 2 resource configured Online: [ [nom du CT1] [nom du CT2]] Full list of resources: nginx (systemd:nginx): Started proxy ip (ocf::heartbeat:IPaddr2): Started [nom du CT1] Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled sources : [[https://salsa.debian.org/ha-team/pcs|salsa.debian.org]] [[https://wiki.ehlo.ovh/doku.php|Ce cher ehlo]]