In questo tutorial, ti guideremo passo dopo passo su come creare un server Web Nginx in cluster ad alta disponibilità con Pacemaker, Corosync e Pcsd. Creeremo il server Web Nginx del cluster attivo-passivo o del cluster di failover utilizzando Pacemaker su un sistema CentOS 7.
Pacemaker è un software di gestione cluster open source che consente di ottenere la massima disponibilità elevata dei tuoi servizi. È un cluster manager HA avanzato e scalabile distribuito da ClusterLabs.
Corosinc Cluster Engine è un progetto open source derivato dal progetto OpenAIS con nuova licenza BSD. È un sistema di comunicazione di gruppo con funzionalità aggiuntive per l'implementazione dell'alta disponibilità all'interno delle applicazioni.
Esistono alcune applicazioni per le interfacce Pacemaker. Pzd è una delle interfacce della riga di comando e della GUI di Pacemaker per la gestione di Pacemaker. Possiamo creare, configurare o aggiungere un nuovo nodo al cluster con il comando pcsd pcs.
Prerequisiti
- 2 o più server CentOS 7
- web01 15.0.10.10
- web02 15.0.10.11
- web03 15.10.12
- Indirizzo IP mobile 10.0.15.15
- privilegi radice
Cosa faremo:
- Mappa il file host
- Installa Epel Repository e Nginx
- Installa e configura Pacemaker, Corosync e Pcsd
- Crea e configura il cluster
- Disabilita STONITH e ignora la politica del quorum
- Aggiungi l'IP mobile e le risorse
- Aggiungi regole al cluster
- Configura Firewalld
- Verifica la configurazione
Passaggio 1:mappare il file host
Nota : Esegui i passaggi 1 - 3 su tutti i server web01, web02 e web03.
Il primo passaggio che dobbiamo fare è modificare il file host su ciascun server per mappare il nome host di tutti i server. Abbiamo server "web01", "web02" e "web03", accedi a ciascun server con l'account ssh.
ssh [email protected][01,02,03]
Modifica il file '/etc/hosts' con vim.
vim /etc/hosts
Incolla lì la seguente configurazione.
10.0.15.10 web01
10.0.15.11 web02
10.0.15.12 web03
Salva ed esci.
Ora prova la configurazione della mappatura 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.
Fase 2 - Installa Epel Repository e Nginx
In questo passaggio, installeremo il repository epel e quindi installeremo il server web Nginx. Per l'installazione dei pacchetti Nginx sono necessari EPEL o Extra Packages for Enterprise Linux.
Installa EPEL Repository utilizzando il seguente comando yum.
yum -y install epel-release
Ora installa il server web Nginx dal repository EPEL.
yum -y install nginx
Al termine dell'installazione, modifica la pagina index.html predefinita su ciascun server con una nuova pagina.
#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /usr/share/nginx/html/index.html
#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /usr/share/nginx/html/index.html
#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /usr/share/nginx/html/index.html
Il repository EPEL e il server web Nginx sono ora installati sul sistema.
Passaggio 3:installazione e configurazione di Pacemaker, Corosync e Pcsd
Pacemaker, Corosync e Pcsd sono disponibili nel repository di sistema predefinito. Quindi possono essere installati tutti dal repository CentOS utilizzando il seguente comando yum.
yum -y install corosync pacemaker pcs
Al termine dell'installazione, abilita l'avvio automatico di tutti i servizi all'avvio del sistema utilizzando i comandi systemctl riportati di seguito.
systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemaker
Ora avvia l'interfaccia della riga di comando di pcsd Pacemaker su tutti i server.
systemctl start pcsd
Quindi, crea una nuova password per l'utente 'hacluster' e usa la stessa password per tutti i server. Questo utente è stato creato automaticamente durante l'installazione del software.
Ecco come configurare una password per 'hacluster ' utente.
passwd hacluster
Enter new password:
Lo stack software ad alta disponibilità Pacemaker, Corosync e Pcsd sono installati nel sistema.
Fase 4:crea e configura il cluster
Nota :esegui i passaggi da 4 a 7 su 'web01' solo.
In questo passaggio creeremo un nuovo cluster con 3 server centos. Quindi configura l'indirizzo IP mobile e aggiungi 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 hacluster utente e password.
pcs cluster auth web01 web02 web03
Username: hacluster
Password: [email protected]
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.
pcs cluster start --all
pcs cluster enable --all
Quindi, controlla lo stato del cluster.
pcs status cluster
Passaggio 5 - Disattiva STONITH e ignora la politica del quorum
Dal momento che non stiamo usando il dispositivo di scherma, disabiliteremo lo STONITH. STONITH o Shoot The Other Node In The Head è l'implementazione della scherma su Pacemaker. Se sei in produzione, è meglio abilitare STONITH.
Disabilita STONITH con il seguente comando pcs.
pcs property set stonith-enabled=false
Quindi, per il criterio del quorum, ignoralo.
pcs property set no-quorum-policy=ignore
Controlla l'elenco delle proprietà e assicurati che stonith e il criterio del quorum siano disabilitati.
pcs property list
Il criterio STONITH e quorum è disabilitato.
Passaggio 6:aggiungi l'IP mobile e le risorse
L'IP mobile è 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 mobile per Pacemaker High-Availability come "10.0.15.15". Ora vogliamo aggiungere due risorse, la risorsa dell'indirizzo IP mobile con il nome 'virtual_ip' e una nuova risorsa per il server web Nginx denominata 'webserver'.
Aggiungi il nuovo indirizzo IP mobile della risorsa "ip_virtuale" 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
Quindi, aggiungi una nuova risorsa per il "server web" di Nginx.
pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"
Assicurati di non avere alcun risultato di errore, quindi controlla le risorse disponibili.
pcs status resources
Vedrai due risorse "ip_virtuale" e un "server web". Sono state aggiunte nuove risorse per l'IP mobile e il server web Nginx.
Passaggio 7:aggiungi regole di vincolo al cluster
In questo passaggio, imposteremo le regole di alta disponibilità e imposteremo il vincolo delle risorse con l'interfaccia della riga di comando pcs.
Imposta il vincolo di confronto per il server web e le risorse virtual_ip con il punteggio "INFINITY". Inoltre, imposta il server web e le risorse virtual_ip come identiche su tutti i nodi del server.
pcs constraint colocation add webserver virtual_ip INFINITY
Imposta le risorse 'virtual_ip' e 'webserver' sempre sugli stessi server del nodo.
pcs constraint order virtual_ip then the webserver
Quindi, arresta il cluster e ricomincia.
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 resources
ip_virtuale e le risorse del server web sono state avviate sullo stesso server/nodo 'web01'.
Passaggio 8 - Configura Firewalld
HA-Cluster verrà eseguito sotto la configurazione del firewall firewalld - installalo se non hai il pacchetto.
yum -y install firewalld
Avvia firewalld e abilitalo all'esecuzione automatica ogni volta all'avvio del sistema utilizzando i seguenti comandi systemctl.
systemctl start firewalld
systemctl enable firewalld
Quindi, aggiungi nuovi servizi al firewalld con i comandi firewall-cmd:aggiungi servizi ad alta disponibilità, 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.
Fase 9 - Test
In questo passaggio, faremo dei test per il cluster. Verifica lo stato del nodo ("Online" o "Offline"), verifica i membri e lo stato di corosync, quindi verifica l'elevata disponibilità del server web Nginx accedendo all'indirizzo IP mobile.
Verifica lo stato del nodo con il comando seguente.
pcs status nodes
Tutti i nodi sono 'Online'.
Testa i membri corosync.
corosync-cmapctl | grep members
Otterrai 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 il server web High Availability. Apri il tuo browser web e digita l'indirizzo IP mobile '10.0.15.15'.
Vedrai la pagina web dal server 'web01'.
Quindi, arresta il cluster sul server 'web01' con il comando seguente.
pcs cluster stop web01
E controlla di nuovo la pagina e otterrai la pagina dal server 'web02' come di seguito.
Aggiuntivo:
Verifica lo stato del cluster con il comando seguente.
pcs status
E otterrai il risultato come mostrato di seguito.
La configurazione del server web Nginx High Availability con Pacemaker, Corosync e Pcsd sul server CentOS 7 è stata completata con successo.