Alta Disponibilità · 7 min read · Dec 06, 2025
Come configurare l'alta disponibilità di Nginx con Pacemaker e Corosync su CentOS 7
In questo tutorial, ti guideremo passo dopo passo su come creare un Cluster Nginx Web Server ad Alta Disponibilità con Pacemaker, Corosync e Pcsd. Creeremo il Cluster Attivo-Passivo o Failover-cluster Nginx utilizzando Pacemaker su un sistema CentOS 7.
Pacemaker è un software di gestione dei cluster open source che raggiunge la massima alta disponibilità dei tuoi servizi. È un gestore di cluster HA avanzato e scalabile distribuito da ClusterLabs.
Corosync Cluster Engine è un progetto open source derivato dal progetto OpenAIS sotto la nuova licenza BSD. È un sistema di comunicazione di gruppo con funzionalità aggiuntive per implementare l’alta disponibilità all’interno delle applicazioni.
Ci sono alcune applicazioni per le interfacce di Pacemaker. Pcsd è una delle interfacce a riga di comando e GUI di Pacemaker per gestire Pacemaker. Possiamo creare, configurare o aggiungere un nuovo nodo al cluster con il comando pcsd pcs.
Prerequisiti
- 2 o più server CentOS 7 - web01 10.0.15.10
- web02 10.0.15.11
- web03 10.0.15.12
- Indirizzo IP fluttuante 10.0.15.15
- Privilegi di root
Cosa faremo:
- Mappare il file Host
- Installare il repository Epel e Nginx
- Installare e configurare Pacemaker, Corosync e Pcsd
- Creare e configurare il cluster
- Disabilitare STONITH e ignorare la politica di quorum
- Aggiungere l’IP fluttuante e le risorse
- Aggiungere regole al cluster
- Configurare Firewalld
- Testare la configurazione
Passo 1 - Mappare il file Host
Nota: Esegui i passi 1 - 3 su tutti i server web01, web02 e web03.
Il primo passo che dobbiamo fare è modificare il file host su ciascun server per mappare il nome host di tutti i server. Abbiamo i server ‘web01’, ‘web02’ e ‘web03’, accedi a ciascun server con l’account ssh.
ssh root@web[01,02,03]Modifica il file ‘/etc/hosts’ con vim.
vim /etc/hostsIncolla la seguente configurazione lì.
10.0.15.10 web01
10.0.15.11 web02
10.0.15.12 web03Salva ed esci.
Ora testa la configurazione di mapping degli host.
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03Assicurati che ‘web01’, ‘web02’ e ‘web03’ siano mappati agli indirizzi IP corretti.

Passo 2 - Installare il repository Epel e Nginx
In questo passo, installeremo il repository epel e poi installeremo il server web Nginx. Il repository EPEL o Extra Packages for Enterprise Linux è necessario per installare i pacchetti Nginx.
Installa il repository EPEL utilizzando il seguente comando yum.
yum -y install epel-releaseOra installa il server web Nginx dal repository EPEL.
yum -y install nginxDopo che l’installazione è completata, cambia la pagina index.html predefinita su ciascun server con una nuova pagina.
#Esegui il comando su 'web01'
echo 'web01 - hakase-labs
' > /usr/share/nginx/html/index.html
#Esegui il comando su 'web02'
echo 'web02 - hakase-labs
' > /usr/share/nginx/html/index.html
#Esegui il comando su 'web03'
echo 'web03 - hakase-labs
' > /usr/share/nginx/html/index.html
Il repository EPEL e il server web Nginx sono ora installati sul sistema.
Passo 3 - Installare e configurare Pacemaker, Corosync e Pcsd
Pacemaker, Corosync e Pcsd sono disponibili nel repository di sistema predefinito. Quindi possono essere tutti installati dal repository CentOS utilizzando il seguente comando yum.
yum -y install corosync pacemaker pcsDopo che l’installazione è stata completata, abilita tutti i servizi per avviarsi automaticamente all’avvio del sistema utilizzando i comandi systemctl qui sotto.
systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemakerOra avvia l’interfaccia a riga di comando di Pacemaker pcsd su tutti i server.
systemctl start pcsdSuccessivamente, crea una nuova password per l’utente ‘hacluster’ e utilizza la stessa password per tutti i server. Questo utente è stato creato automaticamente durante l’installazione del software.
Ecco come configurare una password per l’utente ‘hacluster‘.
passwd hacluster
Inserisci la nuova password:Il pacchetto software per l’alta disponibilità Pacemaker, Corosync e Pcsd è stato installato sul sistema.

Passo 4 - Creare e configurare il cluster
Nota: Esegui i passi 4 - 7 solo su ‘web01’.
In questo passo, creeremo un nuovo cluster con 3 server centos. Quindi configureremo l’indirizzo IP fluttuante e aggiungeremo nuove risorse Nginx.
Per creare il cluster, dobbiamo autorizzare tutti i server utilizzando il comando pcs e l’utente hacluster.
Autorizza tutti i server con il comando pcs e l’utente e la password hacluster.
pcs cluster auth web01 web02 web03
Nome utente: hacluster
Password: aqwe123@
Ora è il momento di configurare il cluster. Definisci il nome del cluster e tutti i server che faranno parte del cluster.
pcs cluster setup --name hakase_cluster web01 web02 web03Ora avvia tutti i servizi del cluster e abilitali anche.
pcs cluster start --all
pcs cluster enable --all
Successivamente, controlla lo stato del cluster.
pcs status cluster
Passo 5 - Disabilitare STONITH e ignorare la politica di quorum
Poiché non stiamo utilizzando il dispositivo di fencing, disabiliteremo STONITH. STONITH o Shoot The Other Node In The Head è l’implementazione del fencing su Pacemaker. Se sei in produzione, è meglio abilitare STONITH.
Disabilita STONITH con il seguente comando pcs.
pcs property set stonith-enabled=falseSuccessivamente, per la politica di quorum, ignorala.
pcs property set no-quorum-policy=ignoreControlla l’elenco delle proprietà e assicurati che stonith e la politica di quorum siano disabilitati.
pcs property list
STONITH e la politica di quorum sono disabilitati.
Passo 6 - Aggiungere l’IP fluttuante e le risorse
L’IP fluttuante è l’indirizzo IP che può essere migrato/spostato automaticamente da un server a un altro server nello stesso Data Center. E abbiamo già definito l’indirizzo IP fluttuante per l’alta disponibilità di Pacemaker come ‘10.0.15.15’. Ora vogliamo aggiungere due risorse, la risorsa dell’indirizzo IP fluttuante con il nome ‘virtual_ip’ e una nuova risorsa per il server web Nginx chiamata ‘webserver’.
Aggiungi la nuova risorsa dell’indirizzo IP fluttuante ‘virtual_ip’ utilizzando il comando pcs come mostrato di seguito.
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30sSuccessivamente, aggiungi una nuova risorsa per il Nginx ‘webserver’.
pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"Assicurati di non ricevere risultati di errore, quindi controlla le risorse disponibili.
pcs status resourcesVedrai due risorse ‘virtual_ip’ e ‘webserver’. Nuove risorse per l’IP fluttuante e il server web Nginx sono state aggiunte.
Passo 7 - Aggiungere regole di vincolo al cluster
In questo passo, configureremo le regole di alta disponibilità e imposteremo i vincoli delle risorse con l’interfaccia a riga di comando pcs.
Imposta il vincolo di collocazione per le risorse webserver e virtual_ip con punteggio ‘INFINITY’. Inoltre, imposta le risorse webserver e virtual_ip come le stesse su tutti i nodi del server.
pcs constraint colocation add webserver virtual_ip INFINITYImposta le risorse ‘virtual_ip’ e ‘webserver’ sempre sugli stessi nodi server.
pcs constraint order virtual_ip then the webserverSuccessivamente, ferma il cluster e poi riavvialo.
pcs cluster stop --all
pcs cluster start --all
Ora, controlla di nuovo le risorse e vedrai il loro stato come ‘Avviato’ sullo stesso server ‘web01’.
pcs status resourcesLe risorse virtual_ip e webserver sono state avviate sullo stesso server/nodo ‘web01’.
Passo 8 - Configurare Firewalld
L’HA-Cluster verrà eseguito sotto la configurazione del firewall firewalld - installalo se non hai il pacchetto.
yum -y install firewalldAvvia firewalld e abilitalo per essere eseguito automaticamente ogni volta all’avvio del sistema utilizzando i seguenti comandi systemctl.
systemctl start firewalld
systemctl enable firewalldSuccessivamente, aggiungi nuovi servizi al firewalld con i comandi firewall-cmd - aggiungi il servizio di alta disponibilità, i servizi HTTP e HTTPS per Nginx.
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=httpsRicarica la configurazione del firewall e controlla tutti i servizi.
firewall-cmd --reload
firewall-cmd --list-allAssicurati che il servizio ha con HTTP e https sia presente nell’elenco.

Passo 9 - Testare
In questo passo, eseguiremo alcuni test per il cluster. Testa lo stato del nodo (‘Online’ o ‘Offline’), testa i membri e lo stato di corosync, e poi testa l’alta disponibilità del server web Nginx accedendo all’indirizzo IP fluttuante.
Testa lo stato del nodo con il seguente comando.
pcs status nodes
Tutti i nodi sono attivi ‘Online’.
Testa i membri di corosync.
corosync-cmapctl | grep membersOtterrai l’indirizzo IP dei membri di Corosync.

Controlla i membri di Corosync e vedrai il risultato come mostrato di seguito.
pcs status corosync
E infine, controlla l’alta disponibilità del server web. Apri il tuo browser web e digita l’indirizzo IP fluttuante ‘10.0.15.15’.
Vedrai la pagina web dal server ‘web01’.
Successivamente, ferma il cluster sul server ‘web01’ con il comando qui sotto.
pcs cluster stop web01E controlla di nuovo la pagina, e otterrai la pagina dal server ‘web02’ come di seguito.
Aggiuntivo:
Controlla lo stato del cluster con il comando qui sotto.
pcs statusE otterrai il risultato come mostrato di seguito.

La configurazione dell’alta disponibilità del server web Nginx con Pacemaker, Corosync e Pcsd su CentOS 7 è stata completata con successo.
Riferimenti
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.