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:

  1. Mappare il file Host
  2. Installare il repository Epel e Nginx
  3. Installare e configurare Pacemaker, Corosync e Pcsd
  4. Creare e configurare il cluster
  5. Disabilitare STONITH e ignorare la politica di quorum
  6. Aggiungere l’IP fluttuante e le risorse
  7. Aggiungere regole al cluster
  8. Configurare Firewalld
  9. 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/hosts

Incolla la seguente configurazione lì.

10.0.15.10      web01  
10.0.15.11      web02  
10.0.15.12      web03

Salva ed esci.

Ora testa la configurazione di mapping degli host.

ping -c 3 web01  
ping -c 3 web02  
ping -c 3 web03

Assicurati che ‘web01’, ‘web02’ e ‘web03’ siano mappati agli indirizzi IP corretti.

Controlla l'interconnessione del server con ping

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-release

Ora installa il server web Nginx dal repository EPEL.

yum -y install nginx

Dopo 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

Installa il repository epel e nginx

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 pcs

Dopo 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 pacemaker

Ora avvia l’interfaccia a riga di comando di Pacemaker pcsd su tutti i server.

systemctl start pcsd

Successivamente, 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.

Installa e configura Pacemaker, Corosync e Pcsd

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@

Crea e configura il cluster

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 web03

Ora avvia tutti i servizi del cluster e abilitali anche.

pcs cluster start --all  
pcs cluster enable --all

Avvia il cluster

Successivamente, controlla lo stato del cluster.

pcs status cluster

Controlla lo stato del 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=false

Successivamente, per la politica di quorum, ignorala.

pcs property set no-quorum-policy=ignore

Controlla l’elenco delle proprietà e assicurati che stonith e la politica di quorum siano disabilitati.

pcs property list

Disabilita STONITH e ignora la politica di quorum

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=30s

Successivamente, 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 resources

Vedrai 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 INFINITY

Imposta le risorse ‘virtual_ip’ e ‘webserver’ sempre sugli stessi nodi server.

pcs constraint order virtual_ip then the webserver

Successivamente, ferma il cluster e poi riavvialo.

pcs cluster stop --all  
pcs cluster start --all

Aggiungi regole di vincolo al cluster

Ora, controlla di nuovo le risorse e vedrai il loro stato come ‘Avviato’ sullo stesso server ‘web01’.

pcs status resources

Le 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 firewalld

Avvia firewalld e abilitalo per essere eseguito automaticamente ogni volta all’avvio del sistema utilizzando i seguenti comandi systemctl.

systemctl start firewalld  
systemctl enable firewalld

Successivamente, 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=https

Ricarica la configurazione del firewall e controlla tutti i servizi.

firewall-cmd --reload  
firewall-cmd --list-all

Assicurati che il servizio ha con HTTP e https sia presente nell’elenco.

Ricarica il firewall e controlla il set di regole del firewall

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

Testare la configurazione

Tutti i nodi sono attivi ‘Online’.

Testa i membri di corosync.

corosync-cmapctl | grep members

Otterrai l’indirizzo IP dei membri di Corosync.

Indirizzi IP dei membri di Corosync

Controlla i membri di Corosync e vedrai il risultato come mostrato di seguito.

pcs status corosync

Stato di 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 web01

E 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 status

E otterrai il risultato come mostrato di seguito.

Controlla lo stato pcs

La configurazione dell’alta disponibilità del server web Nginx con Pacemaker, Corosync e Pcsd su CentOS 7 è stata completata con successo.

Riferimenti

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.