Serveur Nginx · 9 min read · Nov 29, 2025
Comment configurer la haute disponibilité Nginx avec Pacemaker, Corosync et Crmsh sur Ubuntu 16.04
Dans ce tutoriel, je vais vous montrer étape par étape comment créer un serveur Web Nginx en cluster à haute disponibilité avec Pacemaker, Corosync et Crmsh. Nous allons créer un cluster actif-passif ou un cluster de basculement Nginx en utilisant Pacemaker sur Ubuntu 16.04.
Pacemaker est un logiciel de gestion de cluster open source qui atteint une disponibilité maximale de vos services. C’est un gestionnaire de cluster HA avancé et évolutif développé par ClusterLabs depuis 2007.
Le Corosync Cluster Engine est un projet open source dérivé du projet OpenAIS en 2008 et publié sous la licence BSD. C’est un système de communication de groupe avec des fonctionnalités supplémentaires pour mettre en œuvre la haute disponibilité au sein des applications.
Il existe plusieurs applications disponibles pour l’interface Pacemaker et Crmsh en fait partie. C’est une interface en ligne de commande Pacemaker pour gérer la pile de haute disponibilité Pacemaker. Crmsh est écrit en python. Nous pouvons créer, configurer et dépanner la pile HA de Pacemaker avec l’outil en ligne de commande Crmsh.
Prérequis
- Trois serveurs Ubuntu 16.04 - web01 10.0.15.11
- web02 10.0.15.12
- web03 10.0.15.13
- Une adresse IP flottante 10.0.15.15
- Privilèges root
Que allons-nous faire ?
- Mapper le fichier Hosts.
- Installer et configurer Nginx.
- Installer Pacemaker, Corosync et Crmsh.
- Configurer la clé Corosync.
- Démarrer tous les services.
- Créer et configurer un cluster.
- Tester.
Étape 1 - Mapper le fichier Hosts
Remarque :
Exécutez les étapes 1 à 3 sur les trois serveurs ‘web01’, ‘web02’, ‘web03’.
Dans ce tutoriel, j’utiliserai 3 serveurs Ubuntu 16.04 et chacun d’eux a un nom d’hôte unique : ‘web01’, ‘web02’ et ‘web03’. Chaque serveur peut se connecter aux autres serveurs avec le nom d’hôte du serveur.
Pour y parvenir, éditez le fichier ‘/etc/hosts’ sur tous les serveurs avec vim.
vim /etc/hostsCollez la configuration /etc/hosts ci-dessous.
10.0.15.11 web01
10.0.15.12 web02
10.0.15.13 web03
10.0.15.15 ha-web.coEnregistrez le fichier et quittez vim.
Ensuite, testez tous les serveurs en pingant les autres serveurs via chaque nom d’hôte.
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03
Étape 2 - Installer et configurer Nginx
Maintenant, nous commençons à créer la configuration de haute disponibilité du serveur Web Nginx en créant le cluster de basculement avec Pacemaker. Nous devons d’abord installer Nginx sur chacun des nœuds du serveur.
Installez Nginx avec la commande apt ci-dessous.
apt install -y nginxLorsque l’installation est terminée, remplacez la page par défaut de nginx par une page unique sur chaque serveur en exécutant les commandes ci-dessous afin que nous puissions plus tard identifier quel serveur a livré une page.
#Exécuter la commande sur 'web01'
echo 'web01 - hakase-labs
' > /var/www/html/index.html
#Exécuter la commande sur 'web02'
echo 'web02 - hakase-labs
' > /var/www/html/index.html
#Exécuter la commande sur 'web03'
echo 'web03 - hakase-labs
' > /var/www/html/index.htmlMaintenant, arrêtez le serveur Web.
systemctl stop nginxL’installation et la configuration de Nginx ont été complétées.

Étape 3 - Installer Pacemaker, Corosync et Crmsh
Pacemaker est une application de gestion de cluster open source. Corosync est un moteur de cluster pour Pacemaker, et Crmsh est un outil basé sur python pour gérer un cluster Pacemaker. Toutes ces applications sont disponibles dans le dépôt Ubuntu.
Installez Pacemaker, Corosync et crmsh avec la commande apt ci-dessous.
apt install -y pacemaker corosync crmshAprès l’installation, tous ces services s’exécutent automatiquement sur le système. Arrêtez-les avec les commandes systemctl ci-dessous.
systemctl stop corosync
systemctl stop pacemakerLa pile logicielle qui fournit la haute disponibilité pour Nginx a été installée.

Étape 4 - Configurer Corosync
Remarque :
Exécutez l’étape 4 uniquement sur le serveur ‘web01’.
Puisque nous n’utilisons pas pcsd pour Ubuntu, nous devons configurer Corosync manuellement. Nous allons générer la clé Corosync pour l’authentification du cluster et créer un nouveau fichier de configuration Corosync sur le serveur ‘web01’, puis copier la clé et la configuration sur les autres serveurs ‘web02’ et ‘web03’.
Avant de générer la clé Corosync, nous devons installer le nouveau package ‘haveged’. Il est utilisé pour obtenir de meilleurs nombres aléatoires pour la génération de la clé Corosync.
Installez haveged depuis le dépôt avec la commande apt.
apt install -y havegedMaintenant, générez une nouvelle clé Corosync avec la commande ci-dessous.
corosync-keygenLorsque la génération de la clé est terminée, vous pouvez voir la nouvelle clé ‘authkey’ dans le répertoire ‘/etc/corosync/‘.
ls -lah /etc/corosync/
Ensuite, allez dans le répertoire ‘/etc/corosync’ et sauvegardez le fichier de configuration par défaut ‘corosync.conf’.
cd /etc/corosync/
mv corosync.conf corosync.conf.bekupPuis créez un nouveau fichier de configuration ‘corosync.conf’ avec vim.
vim corosync.confCollez la configuration ci-dessous dans ce fichier.
# Configuration du protocole Totem
totem {
version: 2
cluster_name: hakase-cluster
transport: udpu
# Configuration de l'interface pour Corosync
interface {
ringnumber: 0
bindnetaddr: 10.0.15.0
broadcast: yes
mcastport: 5407
}
}
# Liste des nœuds - Liste des serveurs
nodelist {
node {
ring0_addr: web01
}
node {
ring0_addr: web02
}
node {
ring0_addr: web03
}
}
# Configuration du quorum
quorum {
provider: corosync_votequorum
}
# Configuration des journaux Corosync
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}
service {
name: pacemaker
ver: 0
}Enregistrez le fichier et quittez l’éditeur.
Ensuite, copiez la clé d’authentification et le fichier de configuration du serveur ‘web01’ vers les serveurs ‘web02’ et ‘web03’.
scp /etc/corosync/* root@web02:/etc/corosync/
scp /etc/corosync/* root@web03:/etc/corosync/
Lorsque tout est terminé, allez sur les serveurs ‘web02’ et ‘web03’, puis vérifiez les fichiers.
ssh root@web02
cd /etc/corosync/
ls -lah
La configuration de Corosync a été complétée.
Étape 5 - Démarrer tous les services du cluster
Remarque :
Exécutez l’étape 5 sur tous les serveurs.
Démarrez la pile logicielle HA, pacemaker et corosync, sur tous les serveurs. Ensuite, activez-la pour qu’elle démarre automatiquement au démarrage.
Démarrez Corosync et ajoutez-le pour qu’il démarre automatiquement au démarrage.
systemctl start corosync
systemctl enable corosyncMaintenant, démarrez pacemaker et activez-le pour qu’il démarre au démarrage.
systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemakerTous les services ont été démarrés, vérifiez tous les nœuds et assurez-vous que le statut du serveur est ‘En ligne’ sur tous.
crm status
Ou vous pouvez vérifier le statut en vérifiant les membres de Corosync avec la commande corosync-cmapctl ci-dessous.
corosync-cmapctl | grep membersVous verrez toutes les adresses IP des serveurs.

Étape 6 - Créer et configurer le cluster
REMARQUE :
Exécutez l’étape 6 uniquement sur le serveur web01
Dans cette étape, nous allons configurer le cluster Nginx actif-passif en utilisant l’outil en ligne de commande crmsh. Puisque nous n’utilisons pas de dispositif STONITH, nous voulons désactiver STONITH et ignorer la politique de quorum sur notre cluster.
Exécutez les commandes crm ci-dessous pour désactiver ‘STONITH’ et ignorer la politique de quorum.
crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignoreMaintenant, vérifiez le statut de STONITH et la politique de quorum avec la commande crm ci-dessous.
crm configure showVous verrez le résultat comme ci-dessous.

Ensuite, nous devons créer de nouvelles ressources pour le cluster. Pacemaker prend en charge les types suivants d’agents de ressources (RA).
- LSB (Linux Standard Based) - Fournie par la distribution Linux. ex : script ‘/etc/init.d/service’.
- OCF (Open Cluster Framework) - Ensemble d’outils pour l’informatique en cluster. Le projet fait partie de la Linux Foundation.
Pour notre serveur Web Nginx HA, nous devons créer deux ressources OCF : ‘virtual_ip’ pour l’IP flottante et ‘webserver’ pour le service nginx.
Créez une nouvelle ressource ‘virtual_ip’ pour la configuration de l’IP flottante avec la commande crm ci-dessous.
sudo crm configure primitive virtual_ip \
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
cidr_netmask="32" op monitor interval="10s" \
meta migration-threshold="10"Et pour le ‘webserver’ nginx, créez la ressource avec la commande ci-dessous.
sudo crm configure primitive webserver \
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
op start timeout="40s" interval="0" \
op stop timeout="60s" interval="0" \
op monitor interval="10s" timeout="60s" \
meta migration-threshold="10"Lorsque cela est fait, vérifiez les nouvelles ressources ‘virtual_ip’ et ‘webserver’ avec la commande ci-dessous. Assurez-vous que toutes les ressources ont le statut ‘démarré’.
crm resource status
Enfin, nous devons ajouter un groupe pour la nouvelle configuration du service IP de basculement. Nous voulons migrer le service ‘Nginx’ sur une ressource ‘webserver’ avec une IP flottante sur une ressource ‘virtual_ip’.
Nous avons déjà créé l’IP flottante et le service, maintenant ajoutez ces ressources à un nouveau groupe nommé ‘hakase_balancing’ avec la commande ci-dessous. Vous pouvez bien sûr choisir votre propre nom de groupe ici, il suffit de s’assurer de remplacer le nom là où il est utilisé.
sudo crm configure group hakase_balancing virtual_ip webserverUn nouveau groupe de ressources avec le nom ‘hakase_balancing’ a été défini. Vous pouvez le vérifier avec la commande ci-dessous.
crm resource showVous obtiendrez un groupe nommé hakase_balancing avec les membres ‘virtual_ip’ et ‘webserver’.

La configuration du cluster a été complétée.
Étape 7 - Test
Tester le statut des nœuds et le statut du cluster.
crm status
Nous avons 3 nœuds avec le statut ‘En ligne’.
Nous avons un groupe de ressources nommé ‘hakase_balancing’, et il fonctionne maintenant sur le nœud ‘web01’.
Tester le serveur Web Nginx depuis un navigateur Web. Visitez l’adresse IP flottante, le nom de mon serveur de test est - ha-web.co. Utilisez le nom que vous avez choisi pour votre serveur ici.
Toutes les ressources sont sur le nœud ‘web01’.
Tester le cluster actif-passif ou de basculement
Arrêtez le cluster sur le serveur ‘web01’ en exécutant la commande ci-dessous sur le nœud ‘web01’.
crm cluster stopVous obtiendrez le résultat ‘ INFO: Services de cluster arrêtés ‘.
Maintenant, connectez-vous au nœud ‘web02’ et vérifiez le statut du cluster.
crm status
Maintenant, vous obtenez le résultat que le nœud ‘web01’ est ‘Hors ligne’, et les ressources de virtual_ip et webserver sont passées au nœud ‘web02’.
Lorsque vous visitez à nouveau l’IP flottante ‘ ha-web.co ‘, vous obtiendrez la page de web02.
La haute disponibilité Nginx avec Pacemaker, Corosync et Crmsh sur Ubuntu 16.04 a été installée et testée avec succès.
Référence
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.