GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare l'alta disponibilità di Nginx con Pacemaker, Corosync e Crmsh su Ubuntu 16.04

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?

  1. Mappatura del file host.
  2. Installa e configura Nginx.
  3. Installa Pacemaker, Corosync e CRM.
  4. Configura chiave Corosync.
  5. Avvia tutti i servizi.
  6. Crea e configura un cluster.
  7. 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.


Ubuntu
  1. Come configurare il firewall di Ubuntu con UFW e impostare le regole del firewall

  2. Come configurare MariaDB High Availability con Heartbeat e DRBD su Ubuntu 16.04 LTS

  3. Come installare Nginx con PHP5 e MySQL su Ubuntu 11.10

  4. Come installare e configurare PHP e Nginx (LEMP) su Ubuntu 20.04

  5. Come configurare il cluster ad alta disponibilità Nginx utilizzando Pacemaker su CentOS 7

Come installare Django con PostgreSQL e Nginx su Ubuntu 16.04

Come installare Nginx con PHP e MySQL (stack LEMP) su Ubuntu 18.04

Come installare Wordpress con Nginx, MariaDB e HHVM in Ubuntu 15.04

Come installare OWASP Core Rule Set su Modsecurity con Nginx su Ubuntu 20.04

Come configurare ModSecurity con Nginx su Debian/Ubuntu

Come configurare un server Seafile con Nginx su Ubuntu 18.04