In questo tutorial, ti mostrerò passo dopo passo come creare un server Web Nginx in cluster ad alta disponibilità con Pacemaker, Corosync e Crmsh. Creeremo un server Web Nginx con cluster attivo-passivo o cluster di failover utilizzando Pacemaker su Ubuntu 16.04.
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 sviluppato da ClusterLabs dal 2007.
Il Corosync Cluster Engine è un progetto open source derivato dal progetto OpenAIS nel 2008 e rilasciato sotto licenza BSD. È un sistema di comunicazione di gruppo con funzionalità aggiuntive per l'implementazione dell'alta disponibilità all'interno delle applicazioni.
Sono disponibili diverse applicazioni per l'interfaccia Pacemaker e Crmsh è uno di loro. È un'interfaccia della riga di comando di Pacemaker per gestire lo stack ad alta disponibilità di Pacemaker. Crmsh è scritto in Python. Siamo in grado di creare, configurare e risolvere i problemi dello stack Pacemaker HA con lo strumento da riga di comando Crmsh.
Prerequisiti
- Tre server Ubuntu 16.04
- web01 15.0.10.11
- web02 15.10.12
- web03 15.10.13
- Un indirizzo IP mobile 10.0.15.15
- privilegi radice
Cosa faremo?
- Mappatura del file host.
- Installa e configura Nginx.
- Installa Pacemaker, Corosync e CRM.
- Configura chiave Corosync.
- Avvia tutti i servizi.
- Crea e configura un cluster.
- Test.
Passaggio 1:mappatura del file host
Nota:
Esegui i passaggi 1 - 3 su tutti e tre i server 'web01', 'web02', 'web03'.
In questo tutorial utilizzerò 3 server Ubuntu 16.04 e ognuno di essi ha un nome host univoco:'web01', 'web02' e 'web03'. Ciascun server può connettersi agli altri server con il nome host del server.
Per ottenere ciò, modifica il file '/etc/hosts' su tutti i server con vim.
vim /etc/hosts
Incolla la configurazione di /etc/hosts di seguito.
10.0.15.11 web01
10.0.15.12 web02
10.0.15.13 web03
10.0.15.15 ha-web.co
Salva il file ed esci da vim.
Quindi, verifica tutti i server eseguendo il ping degli altri server tramite ciascun nome host.
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03
Fase 2 - Installa e configura Nginx
Ora iniziamo a creare la configurazione High Availability del server web Nginx creando il cluster di Failover con Pacemaker. Dobbiamo prima installare Nginx su ciascuno dei nodi del server.
Installa Nginx con il comando apt di seguito.
apt install -y nginx
Al termine dell'installazione, sostituisci la pagina predefinita di nginx con una pagina univoca su ciascun server eseguendo i comandi seguenti in modo da poter identificare in seguito quale server ha consegnato una pagina.
#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /var/www/html/index.html
#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /var/www/html/index.html
#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /var/www/html/index.html
Ora ferma il server web.
systemctl stop nginx
L'installazione e la configurazione di Nginx sono state completate.
Passaggio 3:installazione di Pacemaker, Corosync e Crmsh
Pacemaker è un'app di gestione cluster open source. Corosync è un Cluster Engine per Pacemaker e Crmsh è uno strumento basato su Python per gestire un cluster Pacemaker. Tutte queste applicazioni sono disponibili nel repository Uubuntu.
Installa Pacemaker, Corosync e crmsh con il comando apt di seguito.
apt install -y pacemaker corosync crmsh
Dopo l'installazione, tutti questi servizi vengono eseguiti automaticamente sul sistema. Fermali con i comandi systemctl di seguito.
systemctl stop corosync
systemctl stop pacemaker
Lo stack software che fornisce l'alta disponibilità per Nginx è stato installato.
Passaggio 4 - Configura Corosync
Nota:
Esegui il passaggio 4 solo sul server 'web01'.
Dal momento che non stiamo usando pcsd per Ubuntu, dobbiamo configurare Corosync manualmente. Genereremo la chiave Corosync per l'autenticazione del cluster e creeremo un nuovo file di configurazione Corosync sul server 'web01', quindi copieremo la chiave e la configurazione sugli altri server 'web02' e 'web03'.
Prima di generare la chiave Corosync, dobbiamo installare il nuovo pacchetto 'haveged'. Viene utilizzato per ottenere numeri casuali migliori per la generazione della chiave Corosync.
Installa haveged dal repository con il comando apt.
apt install -y haveged
Ora genera una nuova chiave Corosync con il comando seguente.
corosync-keygen
Quando la generazione della chiave è completa, puoi vedere la nuova chiave 'authkey' nella directory '/etc/corosync/'.
ls -lah /etc/corosync/
Quindi, vai alla directory '/etc/corosync' ed esegui il backup del file di configurazione predefinito 'corosync.conf'.
cd /etc/corosync/
mv corosync.conf corosync.conf.bekup
Quindi crea un nuovo file di configurazione 'corosync.conf' con vim.
vim corosync.conf
Incolla la configurazione di seguito in quel file.
# Totem Protocol Configuration
totem {
version: 2
cluster_name: hakase-cluster
transport: udpu
# Interface configuration for Corosync
interface {
ringnumber: 0
bindnetaddr: 10.0.15.0
broadcast: yes
mcastport: 5407
}
}
# Nodelist - Server List
nodelist {
node {
ring0_addr: web01
}
node {
ring0_addr: web02
}
node {
ring0_addr: web03
}
}
# Quorum configuration
quorum {
provider: corosync_votequorum
}
# Corosync Log configuration
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}
service {
name: pacemaker
ver: 0
}
Salva il file ed esci dall'editor.
Quindi, copia la chiave di autenticazione e il file di configurazione dal server 'web01' al server 'web02' e 'web03'.
scp /etc/corosync/* [email protected]:/etc/corosync/
scp /etc/corosync/* [email protected]:/etc/corosync/
Quando tutto è completo, vai sui server 'web02' e 'web03', quindi controlla i file.
ssh [email protected]
cd /etc/corosync/
ls -lah
La configurazione di Corosync è stata completata.
Passaggio 5:avvia tutti i servizi cluster
Nota:
Esegui il passaggio 5 su tutti i server.
Avviare lo stack software del cluster HA, pacemaker e corosync, su tutti i server. Quindi abilitalo per l'avvio automatico all'avvio.
Avvia Corosync e aggiungilo per avviarlo automaticamente all'avvio.
systemctl start corosync
systemctl enable corosync
Ora avvia il pacemaker e abilitalo all'avvio all'avvio.
systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemaker
Tutti i servizi sono stati avviati, controlla tutti i nodi e assicurati che lo stato del server sia "Online" su tutti loro.
crm status
Oppure puoi controllare lo stato controllando i membri di Corosync con il comando corosync-cmapctl di seguito.
corosync-cmapctl | grep members
Vedrai tutti gli indirizzi IP del server.
Fase 6:crea e configura il cluster
NOTA:
Esegui il passaggio 6 solo sul server web01
In questo passaggio, configureremo il cluster Nginx attivo-passivo utilizzando lo strumento da riga di comando crmsh. Dal momento che non stiamo utilizzando un dispositivo STONITH, vogliamo disabilitare STONITH e ignorare il criterio Quorum sul nostro cluster.
Esegui i comandi crm di seguito per disabilitare "STONITH" e ignorare il criterio del quorum.
crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore
Ora controlla lo stato di STONITH e la politica del quorum con il comando crm di seguito.
crm configure show
Vedrai il risultato come di seguito.
Successivamente, dobbiamo creare alcune nuove risorse per il cluster. Pacemaker supporta i seguenti tipi di Resource Agent (RA).
- LSB (basato su Linux Standard) - Fornito dalla distribuzione Linux. es:script '/etc/init.d/service'.
- OCF (Open Cluster Framework) - Set di strumenti per il cluster computing. Il progetto fa parte della Linux Foundation.
Per il nostro server web Nginx HA, dobbiamo creare due risorse OCF:'virtual_ip' per l'IP mobile e 'webserver' per il servizio nginx.
Crea una nuova risorsa 'virtual_ip' per la configurazione dell'IP mobile con il comando crm di seguito.
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"
E per il "server web" di nginx, crea la risorsa con il comando seguente.
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"
Al termine, controlla le nuove risorse "ip_virtuale" e "server web" con il comando seguente. Assicurati che tutte le risorse abbiano lo stato "avviato".
crm resource status
Infine, dobbiamo aggiungere un gruppo per la nuova configurazione del servizio IP di Failover. Vogliamo migrare il servizio 'Nginx' su una risorsa 'webserver' con un IP mobile su una risorsa 'virtual_ip'.
Abbiamo già creato l'IP mobile e il servizio, ora aggiungiamo quelle risorse a un nuovo gruppo chiamato 'hakase_balancing' con il comando seguente. Ovviamente puoi scegliere il nome del tuo gruppo qui, assicurati solo di sostituire il nome ovunque venga utilizzato.
sudo crm configure group hakase_balancing virtual_ip webserver
È stato definito un nuovo gruppo di risorse con il nome 'hakase_balancing'. Puoi verificarlo con il comando qui sotto.
crm resource show
Riceverai un gruppo chiamato hakase_balancing con i membri "ip_virtuale" e risorse "server web".
La configurazione del cluster è stata completata.
Fase 7 - Test
Test dello stato del nodo e dello stato del cluster.
crm status
Abbiamo 3 nodi con stato "Online".
Abbiamo un gruppo di risorse chiamato "hakase_balancing" e ora è in esecuzione sul nodo "web01".
Testare il server web Nginx da un browser web. Visita l'indirizzo IP mobile, il nome del mio server di prova è - ha-web.co . Usa qui il nome che hai scelto per il tuo server.
Tutte le risorse sono sul nodo 'web01'.
Test di cluster o failover attivo-passivo
Arrestare il cluster sul server "web01" eseguendo il comando seguente sul nodo "web01".
crm cluster stop
Otterrai il risultato "INFO:Servizi cluster interrotti '.
Ora accedi al nodo 'web02' e controlla lo stato del cluster.
crm status
Ora ottieni il risultato che il nodo 'web01' è 'Offline' e le risorse di virtual_ip e webserver sono passate al nodo 'web02'.
Quando visiti di nuovo l'IP mobile 'ha-web.co ', otterrai la pagina web02.
Nginx High Availability con Pacemaker, Corosync e Crmsh su Ubuntu 16.04 è stato installato e testato con successo.