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?
- Mapování souboru Hosts.
- Nainstalujte a nakonfigurujte Nginx.
- Nainstalujte Pacemaker, Corosync a Crmsh.
- Nakonfigurujte klíč Corosync.
- Spusťte všechny služby.
- Vytvořte a nakonfigurujte klastr.
- 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.