GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit vysokou dostupnost Nginx pomocí Pacemaker, Corosync a Crmsh na Ubuntu 16.04

V tomto tutoriálu vám krok za krokem ukážu, jak vytvořit webový server Nginx s clustery s vysokou dostupností s Pacemakerem, Corosync a Crmsh. Vytvoříme webový server Active-Passive Cluster nebo Failover Cluster Nginx pomocí Pacemaker na Ubuntu 16.04.

Pacemaker je open source software pro správu clusterů, který dosahuje maximálně vysoké dostupnosti vašich služeb. Je to pokročilý a škálovatelný správce clusteru HA vyvinutý společností ClusterLabs od roku 2007.

TheCorosync Cluster Engine je open source projekt odvozený od projektu OpenAIS v roce 2008 a vydaný pod licencí BSD. Je to skupinový komunikační systém s dalšími funkcemi pro implementaci vysoké dostupnosti v aplikacích.

Pro rozhraní Pacemaker a Crmsh je k dispozici několik aplikací je jedním z nich. Jedná se o rozhraní příkazového řádku kardiostimulátoru pro správu sady Pacemaker High Availability Stack. Crmsh je napsán v pythonu. Můžeme vytvořit, nakonfigurovat a odstraňovat problémy se zásobníkem Pacemaker HA pomocí nástroje příkazového řádku Crmsh.

Předpoklady

  • Tři servery Ubuntu 16.04
    • web01       10.0.15.11
    • web02       10.0.15.12
    • web03       10.0.15.13
  • Plovoucí IP adresa 10.0.15.15
  • Kořenová oprávnění

Co budeme dělat?

  1. Mapování souboru Hosts.
  2. Nainstalujte a nakonfigurujte Nginx.
  3. Nainstalujte Pacemaker, Corosync a Crmsh.
  4. Nakonfigurujte klíč Corosync.
  5. Spusťte všechny služby.
  6. Vytvořte a nakonfigurujte klastr.
  7. Testování.

Krok 1 – Mapování souboru Hosts

Poznámka:
Spusťte krok 1–3 na všech třech serverech 'web01', 'web02', 'web03'.

V tomto tutoriálu budu používat 3 servery Ubuntu 16.04 a každý z nich má jedinečný název hostitele:'web01', 'web02' a 'web03'. Každý server se může připojit k ostatním serverům pomocí názvu hostitele serveru.

Chcete-li toho dosáhnout, upravte soubor '/etc/hosts' na všech serverech pomocí vim.

vim /etc/hosts

Níže vložte konfiguraci /etc/hosts.

10.0.15.11      web01
10.0.15.12      web02
10.0.15.13      web03
10.0.15.15      ha-web.co

Uložte soubor a ukončete vim.

Dále otestujte všechny servery pomocí příkazu ping na ostatní servery prostřednictvím každého názvu hostitele.

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

Krok 2 – Instalace a konfigurace Nginx

Nyní začneme vytvářet nastavení vysoké dostupnosti webového serveru Nginx vytvořením clusteru převzetí služeb při selhání s Pacemakerem. Nejprve musíme nainstalovat Nginx na každý ze serverových uzlů.

Nainstalujte Nginx pomocí příkazu apt níže.

apt install -y nginx

Po dokončení instalace nahraďte výchozí stránku nginx jedinečnou stránkou na každém serveru spuštěním příkazů níže, abychom mohli později identifikovat, který server stránku doručil.

#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

Nyní zastavte webový server.

systemctl stop nginx

Instalace a konfigurace Nginx byly dokončeny.

Krok 3 – Instalace Pacemaker, Corosync a Crmsh

Pacemaker je open source aplikace pro správu clusterů. Corosync je Cluster Engine pro Pacemaker a Crmsh je nástroj založený na pythonu pro správu clusteru Pacemaker. Všechny tyto aplikace jsou dostupné v úložišti Uubuntu.

Nainstalujte Pacemaker, Corosync a crmsh pomocí příkazu apt níže.

apt install -y pacemaker corosync crmsh

Po instalaci jsou všechny tyto služby v systému spuštěny automaticky. Zastavte je pomocí příkazů systemctl níže.

systemctl stop corosync
systemctl stop pacemaker

Byl nainstalován softwarový balík, který poskytuje vysokou dostupnost pro Nginx.

Krok 4 – Konfigurace Corosync

Poznámka:
Krok 4 spusťte pouze na serveru 'web01'.

Protože pro Ubuntu nepoužíváme pcsd, musíme Corosync nakonfigurovat ručně. Vygenerujeme klíč Corosync pro autentizaci clusteru a vytvoříme nový konfigurační soubor Corosync na serveru 'web01', poté zkopírujeme klíč a konfiguraci na jiné servery 'web02' a 'web03'.

Než vygenerujeme klíč Corosync, musíme nainstalovat nový balíček 'haveged'. Používá se pro získání lepších náhodných čísel pro generování klíče Corosync.

Nainstalujte haveged z úložiště pomocí příkazu apt.

apt install -y haveged

Nyní vygenerujte nový klíč Corosync pomocí příkazu níže.

corosync-keygen

Po dokončení generování klíče uvidíte nový klíč 'authkey' v adresáři '/etc/corosync/'.

ls -lah /etc/corosync/

Dále přejděte do adresáře '/etc/corosync' a zálohujte výchozí konfigurační soubor 'corosync.conf'.

cd /etc/corosync/
mv corosync.conf corosync.conf.bekup

Poté vytvořte nový konfigurační soubor 'corosync.conf' pomocí vim.

vim corosync.conf

Do tohoto souboru vložte níže uvedenou konfiguraci.

# 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
}

Uložte soubor a ukončete editor.

Dále zkopírujte ověřovací klíč a konfigurační soubor ze serveru 'web01' na server 'web02' a 'web03'.

scp /etc/corosync/* [email protected]:/etc/corosync/
scp /etc/corosync/* [email protected]:/etc/corosync/

Až bude vše hotovo, přejděte na servery 'web02' a 'web03' a zkontrolujte soubory.

ssh [email protected]
cd /etc/corosync/
ls -lah

Konfigurace Corosync byla dokončena.

Krok 5 – Spuštění všech klastrových služeb

Poznámka:
Spusťte krok 5 na všech serverech.

Spusťte softwarový zásobník HA clusteru, kardiostimulátor a corosync, na všech serverech. Poté povolte automatické spouštění při spouštění.

Spusťte Corosync a přidejte jej, aby se spouštěl automaticky při startu.

systemctl start corosync
systemctl enable corosync

Nyní spusťte kardiostimulátor a povolte jeho spuštění při startu.

systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemaker

Všechny služby byly spuštěny, zkontrolujte všechny uzly a ujistěte se, že na všech je stav serveru 'Online'.

crm status

Nebo můžete zkontrolovat stav kontrolou členů Corosync pomocí příkazu corosync-cmapctl níže.

corosync-cmapctl | grep members

Uvidíte všechny IP adresy serveru.

Krok 6 – Vytvoření a konfigurace clusteru

POZNÁMKA:
Krok 6 spusťte pouze na serveru web01

V tomto kroku nakonfigurujeme Active-Passive Nginx Cluster pomocí nástroje příkazového řádku crmsh. Protože nepoužíváme zařízení STONITH, chceme deaktivovat STONITH a ignorovat zásady kvora v našem clusteru.

Spuštěním příkazů crm níže deaktivujte „STONITH“ a ignorujte zásady kvora.

crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore

Nyní zkontrolujte stav STONITH a zásady kvora pomocí příkazu crm níže.

crm configure show

Výsledek uvidíte níže.

Dále musíme vytvořit nějaké nové prostředky pro cluster. Pacemaker podporuje následující typy agentů zdrojů (RA).

  • LSB (Linux Standard Based) – Poskytováno distribucí Linuxu. např. skript '/etc/init.d/service'.
  • OCF (Open Cluster Framework) – Sada nástrojů pro clusterové výpočty. Projekt je součástí Linux Foundation.

Pro náš webový server Nginx HA potřebujeme vytvořit dva zdroje OCF:'virtual_ip' pro plovoucí IP a 'webserver' pro službu nginx.

Vytvořte nový zdroj 'virtual_ip' pro konfiguraci plovoucí IP pomocí příkazu crm níže.

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"

A pro nginx 'webserver' vytvořte prostředek pomocí příkazu níže.

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"

Až to uděláte, zkontrolujte nové zdroje 'virtual_ip' a 'webserver' pomocí příkazu níže. Ujistěte se, že všechny zdroje mají stav 'spuštěno'.

crm resource status

Nakonec musíme přidat skupinu pro novou konfiguraci služby Failover IP. Chceme migrovat službu 'Nginx' na zdroj 'webový server' s plovoucí IP na zdroj 'virtual_ip'.

Plovoucí IP a službu jsme již vytvořili, nyní přidejte tyto prostředky do nové skupiny s názvem 'hakase_balancing' pomocí příkazu níže. Zde si samozřejmě můžete vybrat svůj vlastní název skupiny, jen se ujistěte, že název nahradíte všude tam, kde se použije.

sudo crm configure group hakase_balancing virtual_ip webserver

Byla definována nová skupina zdrojů s názvem 'hakase_balancing'. Můžete to zkontrolovat pomocí příkazu níže.

crm resource show

Získáte skupinu s názvem hakase_balancing se zdroji členů 'virtual_ip' a 'webserver'.

Konfigurace clusteru byla dokončena.

Krok 7 – Testování

Testování stavu uzlu a stavu clusteru.

crm status

Máme 3 uzly se stavem 'Online'.

Máme skupinu prostředků s názvem 'hakase_balancing' a nyní běží na uzlu 'web01'.

Testování webového serveru Nginx z webového prohlížeče. Navštivte plovoucí IP adresu, název mého testovacího serveru je - ha-web.co . Zde použijte název, který jste vybrali pro svůj server.

Všechny zdroje jsou na uzlu 'web01'.

Testování aktivního a pasivního clusteru nebo převzetí služeb při selhání

Zastavte cluster na serveru 'web01' provedením příkazu níže na uzlu 'web01'.

crm cluster stop

Získáte výsledek 'INFO:Clusterové služby zastaveny '.

Nyní se přihlaste k uzlu 'web02' a zkontrolujte stav clusteru.

crm status


Nyní máte výsledek, že uzel 'web01' je 'Offline' a zdroje virtual_ip a webserver jsou přepnuty na uzel 'web02'.

Při opětovné návštěvě plovoucí IP adresy 'ha-web.co ', získáte stránku web02.

Nginx High Availability with Pacemaker, Corosync a Crmsh na Ubuntu 16.04 byla úspěšně nainstalována a otestována.


Ubuntu
  1. Jak nastavit vysokou dostupnost MariaDB s Heartbeat a DRBD na Ubuntu 16.04 LTS

  2. Jak nainstalovat Nginx s PHP5 a MySQL na Ubuntu 11.10

  3. Jak nainstalovat a nastavit PHP a Nginx (LEMP) na Ubuntu 20.04

  1. Jak nakonfigurovat bránu firewall Ubuntu pomocí UFW a nastavit pravidla brány firewall

  2. Jak nainstalovat Mattermost s PostgreSQL a Nginx na Ubuntu 16.04

  3. Jak nastavit Nginx High Availability Cluster pomocí Pacemaker na CentOS 7

  1. Jak nastavit Nginx High Availability s Pacemakerem a Corosync na CentOS 7

  2. Jak nainstalovat Magento 2 s Nginx a Letsencrypt na Ubuntu 18.04

  3. Jak nainstalovat Gitlab s PostgreSQL a Nginx na Ubuntu 15.04