GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nastavit cluster s vysokou dostupností na CentOS 8 / RHEL 8

Cluster s vysokou dostupností, také známý jako klastr s přepnutím při selhání nebo aktivní-pasivní klastr, je jedním z nejrozšířenějších typů klastrů v produkčním prostředí, který zajišťuje nepřetržitou dostupnost služeb, i když jeden z uzlů klastru selže.

Z technického hlediska, pokud aplikace na serveru z nějakého důvodu selhala (např. selhání hardwaru), klastrový software (kardiostimulátor) restartuje aplikaci na pracovním uzlu.

Failover není jen restartování aplikace; je to řada operací s tím spojených, jako je připojování souborových systémů, konfigurace sítí a spouštění závislých aplikací.

Životní prostředí

Zde nakonfigurujeme cluster s podporou převzetí služeb při selhání s Pacemakerem, aby se server Apache (webový) stal vysoce dostupnou aplikací.

Zde nakonfigurujeme webový server Apache, souborový systém a sítě jako zdroje pro náš cluster.

Pro zdroj souborového systému bychom použili sdílené úložiště pocházející z úložiště iSCSI.

Název hostitele IP adresa OS Účel
node1.itzgeek.local 192.168.0.11 CentOS 8 Uzel clusteru 1
node2.itzgeek.local 192.168.0.12 Uzel clusteru 2
storage.itzgeek.local 192.168.0.20 sdílené úložiště iSCSI
192.168.0.100 Virtual Cluster IP (Apache)

Všechny běží na VMware Workstation.

Sdílené úložiště

Sdílené úložiště je jedním z kritických zdrojů v clusteru s vysokou dostupností, protože ukládá data běžící aplikace. Všechny uzly v clusteru budou mít přístup ke sdílenému úložišti pro nejnovější data.

Úložiště SAN je široce používané sdílené úložiště v produkčním prostředí. Kvůli omezení zdrojů pro tuto ukázku nakonfigurujeme cluster s úložištěm iSCSI pro účely demonstrace.

Instalovat balíčky

Server iSCSI

[root@storage ~]# instalace dnf -y targetcli lvm2 

Uzly clusteru

dnf install -y iscsi-initiator-utils lvm2 

Nastavení sdíleného disku

Pomocí níže uvedeného příkazu vypíšeme dostupné disky na serveru iSCSI.

[root@storage ~]# fdisk -l | grep -i sd 
Výstup:Disk/Dev/SDA:100 GIB, 107374182400 BYTES, 209715200 Sektory/SDA1 * 2048 2099199 2097152 1G 83 Linux/Dev/SDA2 2099200 209715199 207616000 99G 8E LINUX LVMDISK/DEVISK/DEVISK/DEV/SDA2 2099200 209715199 207616000 99G/Dev/SDA2; bajtů, 20971520 sektorů

Z výše uvedeného výstupu můžete vidět, že můj systém má 10GB pevný disk (/dev/sdb).

Zde vytvoříme LVM na serveru iSCSI, který použijeme jako sdílené úložiště pro naše uzly clusteru.

[root@storage ~]# pvcreate /dev/sdb[root@storage ~]# vgcreate vg_iscsi /dev/sdb[root@storage ~]# lvcreate -l 100% ZDARMA -n lv_iscsi vg_iscsi 

Vytvořit sdílené úložiště

Získejte podrobnosti o iniciátoru uzlů.

cat /etc/iscsi/initiatorname.iscsi 

Uzel 1:

InitiatorName=iqn.1994-05.com.redhat:121c93cbad3a

Uzel 2:

InitiatorName=iqn.1994-05.com.redhat:827e5e8fecb

Zadáním níže uvedeného příkazu získáte rozhraní iSCSI CLI pro interaktivní výzvu.

[root@storage ~]# targetcli 
Výstup:Upozornění:Nelze načíst soubor předvoleb /root/.targetcli/prefs.bin.targetcli shell verze 2.1.fb49Copyright 2011-2013 od Datera, Inc a dalších. Nápovědu k příkazům získáte zadáním 'help'./> cd /backstores/block/backstores/block> vytvořte iscsi_shared_storage /dev/vg_iscsi/lv_iscsiVytvořený objekt úložiště bloku iscsi_shared_storage pomocí /dev/vg_iscsi/lv_iscsi./backstores/block> cd /iscsi-3n.1 target icsi> createqq.0 .linux-iscsi.storage.x8664:sn.eac9425e5e18.Created TPG 1.Globální pref auto_add_default_portal=trueVytvořený výchozí portál naslouchající na všech IP (0.0.0.0), port 3260./iscsi> cd iqlin.org -iscsi.storage.x8664:sn.eac9425e5e18/tpg1/acls < vytvořit iqn.1994-05.com.redhat:121c93cbad3a < vytvořit iqn.1994-05.com.redhat:82ecb < cd /iscsi/iqn.2003-01.org.linux-iscsi.storage.x8664:sn.eac9425e5e18/tpg1/luns/iscsi/iqn.2 ..e18/tpg1/luns> vytvořit /backstores/block/iscsi_shared_storageCreated LUN 0. Vytvořené mapování LUN 0->0 v uzlu ACL iqn.1994-05.com.redhat:827e5e8fecbVytvořeno LUN v node ACL iqn mapping 1994-05.com.redhat:121c93cbad3a/iscsi/iqn.20...e18/tpg1/luns> cd //> lso- / ................... ................................................................... ................................................................... .. [...] o- backstores ...................................... ................................................................... ...................... [...] | o-blok ................................................... ................................................................... [Objekty úložiště:1] | | o- iscsi_shared_storage ................................................... [ /dev/vg_iscsi/lv_iscsi (10.0GiB) aktivován zápis] | | o- alua ................................................... ................................................................... .. [ALUA skupiny:1] | | o- default_tg_pt_gp ................................................... ........................ [stav ALUA:Aktivní/optimalizováno] | o-filio ................................................. ................................................................... [Objekty úložiště:0] | o-pscsi ................................................. ................................................................... [Objekty úložiště:0] | o-ramdisk ................................................. ................................................. [ Objekty úložiště:0] o- iscsi ................................................. ................................................................... ................ [Cíle:1] | o- iqn.2003-01.org.linux-iscsi.storage.x8664:sn.eac9425e5e18 ................................. ............................ [TPG:1] | o- tpg1 ................................................... ................................................ [Ne -gen-acls, no-auth] | o- acls ................................................. ................................................................... ......... [ACL:2] | | o- iqn.1994-05.com.redhat:121c93cbad3a ...................................... ............................. [Mapované LUN:1] | | | o- maped_lun0 ................................................... ................... [lun0 block/iscsi_shared_storage (rw)] | | o- iqn.1994-05.com.redhat:827e5e8fecb ...................................... ............................. [Mapované LUN:1] | | o- maped_lun0 ................................................... ................... [lun0 block/iscsi_shared_storage (rw)] | o-luns ................................................. ................................................................... ......... [LUN:1] | | o- lun0 ...................................... [blok/iscsi_shared_storage (/ dev/vg_iscsi/lv_iscsi) (default_tg_pt_gp)] | o- portály ................................................... ................................................................... ... [Portály:1] | o- 0.0.0.0:3260 ................................................. ................................................................... ........ [OK] o- zpětná smyčka ................................... ................................................................... ................... [Cíle:0]/> saveconfigConfiguration uložená do /etc/target/saveconfig.json/> exitGlobal pref auto_save_on_exit=truePosledních 10 konfigurací uložených v /etc /target/backup/.Konfigurace uložena do /etc/target/saveconfig.json

Povolte a restartujte službu Target.

[root@storage ~]# systemctl povolit cíl[root@storage ~]# systemctl restart target 

Nakonfigurujte bránu firewall tak, aby umožňovala provoz iSCSI.

[root@storage ~]# firewall-cmd --permanent --add-port=3260/tcp[root@storage ~]# firewall-cmd --reload 

Objevte sdílené úložiště

Na obou uzlech clusteru zjistěte cíl pomocí příkazu níže.

iscsiadm -m discovery -t st -p 192.168.0.20
Output:192.168.0.20:3260,1 qn.2003-01.org.linux-iscsi.storage.x8664:sn.eac9425e5e18

Nyní se přihlaste do cílového úložiště pomocí níže uvedeného příkazu.

iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.storage.x8664:sn.eac9425e5e18 -p 192.168.0.20 -l
Výstup:Přihlášení do [iface:výchozí, cíl:iqn.2003-01.org.linux-iscsi.storage.x8664:sn.eac9425e5e18, portál:192.168.0.20,3260]Přihlášení do [iface:výchozí, cíl:iqn.2003-01.org.linux-iscsi.storage.x8664:sn.eac9425e5e18, portál:192.168.0.20,3260] úspěšný.

Restartujte a povolte službu iniciátor.

restart systemctl iscsidsystemctl povolí iscsid 

Nastavení uzlů clusteru

Sdílené úložiště

Přejděte do všech uzlů clusteru a zkontrolujte, zda je nový disk ze serveru iSCSI viditelný nebo ne.

V mých uzlech je /dev/sdb sdílený disk z úložiště iSCSI.

fdisk -l | grep -i sd 
Výstup:Disk/Dev/SDA:100 GIB, 107374182400 BYTES, 209715200 Sektory/SDA1 * 2048 2099199 2097152 1G 83 Linux/Dev/SDA2 2099200 209715199 207616000 99G 8E LINUNS LVMDISK/DEVISK/DEVISK/DEV/SDA2 2099200 209715199 207616000 99G/Dev/SDA2; bajtů, 20963328 sektorů

Na kterémkoli z vašich uzlů (např. uzel1) vytvořte souborový systém pro webový server Apache, který bude uchovávat soubory webu. Vytvoříme souborový systém pomocí LVM.

[root@node1 ~]# pvcreate /dev/sdb[root@node1 ~]# vgcreate vg_apache /dev/sdb[root@node1 ~]# lvcreate -n lv_apache -l 100% ZDARMA vg_apache[root @node1 ~]# mkfs.ext4 /dev/vg_apache/lv_apache 

Nyní přejděte na jiný uzel a spusťte níže uvedené příkazy k detekci nového souborového systému.

[root@node2 ~]# pvscan[root@node2 ~]# vgscan[root@node2 ~]# lvscan 

Nakonec ověřte LVM, který jsme vytvořili na node1 je vám k dispozici na jiném uzlu (např. node2) pomocí níže uvedených příkazů.

ls -al /dev/vg_apache/lv_apache 

a

[root@node2 ~]# lvdisplay /dev/vg_apache/lv_apache 
Výstup:_Měli byste vidět /dev/vg_apache/lv_apache na node2.itzgeek.local_ --- Logický svazek --- Cesta LV /dev/vg_apache/lv_apache Název LV lv_apache Název VG vg_apache LV UUID gXeaoB-Vl 2VnZ-RpmW-iDeC-kQOxZE Přístup pro zápis LV pro čtení/zápis Hostitel vytváření LV, časový uzel1.itzgeek.local, 2020-03-30 08:08:17 -0400 Stav LV NENÍ k dispozici Velikost LV 9,96 GiB Aktuální LE 2551 Allocation Segments dědit Automatické čtení sektorů
Pokud systém nezobrazí logický svazek nebo soubor zařízení nebyl nalezen, zvažte restartování druhého uzlu.

Záznam hostitele

Vytvořte záznam hostitele o každém uzlu na všech uzlech. Cluster bude ke vzájemné komunikaci používat název hostitele.

vi /etc/hosts 

Položky hostitele budou vypadat podobně jako níže.

192.168.0.11 node1.itzgeek.local node1192.168.0.12 node2.itzgeek.local node2 

Instalovat balíčky

Clusterové balíčky jsou dostupné v úložišti High Availability. Nakonfigurujte tedy úložiště High Availability na vašem systému.

CentOS 8

dnf config-manager --set-enabled HighAvailability 

RHEL 8

Povolte předplatné Red Hat na RHEL 8 a poté povolte úložiště High Availability pro stahování clusterových balíčků z Red Hatu.

úložiště správce předplatného --enable=rhel-8-for-x86_64-highavailability-rpms 

Nainstalujte balíčky clusteru (pacemaker) se všemi dostupnými agenty plotu na všechny uzly pomocí příkazu níže.

dnf install -y pcs fence-agents-all pcp-zeroconf 

Přidejte pravidlo brány firewall, které umožní všem aplikacím s vysokou dostupností řádnou komunikaci mezi uzly. Pokud systém nemá povolenou bránu firewall, můžete tento krok přeskočit.

firewall-cmd --permanent --add-service=high-availabilityfirewall-cmd --add-service=high-availabilityfirewall-cmd --reload 

Nastavte heslo pro uživatele haclusteru.

Tento uživatelský účet je účtem pro správu clusteru. Doporučujeme nastavit stejné heslo pro všechny uzly.

passwd hacluster 

Spusťte klastrovou službu a povolte její automatické spouštění při spuštění systému.

systemctl start pcsdsystemctl enable pcsd 

Pamatujte:Výše ​​uvedené příkazy musíte spustit na všech uzlech clusteru.

Vytvoření clusteru s vysokou dostupností

Autorizujte uzly pomocí níže uvedeného příkazu. Spusťte níže uvedený příkaz v kterémkoli z uzlů, abyste uzly autorizovali.

[root@node1 ~]# ks ověření hostitele node1.itzgeek.local node2.itzgeek.local 
Výstup:Uživatelské jméno:haclusterPassword:< 

Vytvořte shluk. Změňte název clusteru itzgeek_cluster podle svých požadavků.

[root@node1 ~]# ks nastavení clusteru itzgeek_cluster --start node1.itzgeek.local node2.itzgeek.local
Výstup:Nejsou zadány žádné adresy pro hostitele 'node1.itzgeek.local' pomocí 'node1.itzgeek.local'Není zadány adresy pro hostitele 'node2.itzgeek.local', používá se 'node2.itzgeek.local'Zničení clusteru na hostitelé:'node1.itzgeek.local', 'node2.itzgeek.local'...node1.itzgeek.local:Úspěšně zničen clusternode2.itzgeek.local:Úspěšně zničen clusterPožadavek na odstranění 'pcsd settings' z 'node1.itzgeek.local' , 'node2.itzgeek.local'node1.itzgeek.local:úspěšné odstranění souboru 'pcsd settings'node2.itzgeek.local:úspěšné odstranění souboru 'pcsd settings'Odeslání 'corosync authkey', 'pacemaker authkey' do ' node1.itzgeek.local', 'node2.itzgeek.local'node1.itzgeek.local:úspěšná distribuce souboru 'corosync authkey'node1.itzgeek.local:úspěšná distribuce souboru 'pacemaker authkey'node2.itzgeek.local:úspěšná distribuce souboru 'corosync authkey'node2.itzgeek.local:úspěšná distribuce souboru 'pacemaker authkey'Odeslání 'corosync.conf' do 'node 1.itzgeek.local', 'node2.itzgeek.local'node1.itzgeek.local:úspěšná distribuce souboru 'corosync.conf'node2.itzgeek.local:úspěšná distribuce souboru 'corosync.conf'Cluster byla úspěšná nastavit. Spouštění clusteru na hostitelích:'node1.itzgeek.local', 'node2.itzgeek.local'...

Povolte spuštění clusteru při spuštění systému.

[root@node1 ~Povolení clusteru # pcs --all 
Output:node1.itzgeek.local:Cluster Enablednode2.itzgeek.local:Cluster Enabled

Pomocí níže uvedeného příkazu získáte stav clusteru.

[root@node1 ~ stav clusteru # ks 
Output:Cluster Status:Stack:corosync Aktuální DC:node1.itzgeek.local (verze 2.0.2-3.el8_1.2-744a30d655) - oddíl s kvorem Poslední aktualizace:Po Mar 30 08:28:08 2020 Last změna:po 30. březen 08:27:25 2020 pomocí haclusteru přes crmd na node1.itzgeek.local 2 nakonfigurovány uzly 0 prostředků konfigurovánoPCSD Stav:node1.itzgeek.local:Online node2.itzgeek.local:Online

Spuštěním níže uvedeného příkazu získáte podrobné informace o klastru, které zahrnují jeho zdroje, stav kardiostimulátoru a podrobnosti o uzlech.

[root@node1 ~ stav # kusů 
Výstup:Název klastru:itzgeek_clusterUPOZORNĚNÍ:Žádná zařízení stonith a podpora stonith není falseStack:corosyncCurrent DC:node1.itzgeek.local (verze 2.0.2-3.el8_1.2-744a30d655) – oddíl aktualizován:MonorumL 30. března 08:33:37 2020Poslední změna:Po 30. březen 08:27:25 2020 haclusterem přes crmd na node1.itzgeek.local2 nodes configured0 resources configuredOnline:[ node1.itzgeek.local Status node2.itzgeek.Daem ] corosync:aktivní/povolený kardiostimulátor:aktivní/povoleno pcsd:aktivní/povoleno

Oplocení zařízení

Šermířské zařízení je hardwarové zařízení, které pomáhá odpojit problematický uzel resetováním uzlu / odpojením sdíleného úložiště z přístupu k němu. Tento ukázkový cluster běží nad VMware a nemá žádné externí plotové zařízení k nastavení. Můžete však postupovat podle tohoto návodu a nastavit oplocení.

Protože nepoužíváme oplocení, deaktivujte jej (STONITH). Chcete-li spustit zdroje clusteru, musíte zakázat oplocení, ale zakázání STONITH v produkčním prostředí se nedoporučuje.

[root@node1 ~]# sada vlastností stonith-enabled=false 

Zdroje clusteru

Připravte zdroje

Webový server Apache

Nainstalujte webový server Apache na oba uzly.

instalace dnf -y httpd 

Upravte konfigurační soubor.

vi /etc/httpd/conf/httpd.conf 

Přidejte níže obsah na konec souboru na oba uzly clusteru.

 SetHandler server-status Vyžadovat místní 

Upravte konfiguraci logrotate webového serveru Apache, abyste řekli, že nemáte používat systemd, protože prostředek clusteru nepoužívá systemd k opětovnému načtení služby.

Změňte řádek níže.

OD:

/bin/systemctl reload httpd.service> /dev/null 2>/dev/null || true 

KOMU:

/usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd.pid" -k graceful> /dev/null 2>/dev/ null || true 

Nyní použijeme sdílené úložiště pro ukládání souboru webového obsahu (HTML). Proveďte níže uvedenou operaci v kterémkoli z uzlů.

[root@node1 ~]# mount /dev/vg_apache/lv_apache /var/www/[root@node1 ~]# mkdir /var/www/html[root@node1 ~]# mkdir /var/ www/cgi-bin[root@node1 ~]# mkdir /var/www/error[root@node1 ~]# restorecon -R /var/www[root@node1 ~]# cat <<-END>/var/www /html/index.htmlDobrý den, vítejte!. Tuto stránku poskytuje Red Hat High Availability ClusterEND[root@node1 ~]# umount /var/www 

Povolte službu Apache ve firewallu na obou uzlech.

firewall-cmd --permanent --add-service=httpfirewall-cmd --reload 

Vytvořit zdroje

Vytvořte prostředek souborového systému pro server Apache. Použijte úložiště pocházející ze serveru iSCSI.

[root@node1 ~ Vytvoření prostředku pro # ks httpd_fs Filesystem device="/dev/mapper/vg_apache-lv_apache" directory="/var/www" fstype="ext4" --group apache
Výstup:Předpokládaný název agenta 'ocf:`heartbeat`:Filesystem' (odvozeno z 'Souborový systém')

Vytvořte prostředek IP adresy. Tato IP adresa bude fungovat jako virtuální IP adresa pro Apache a klienti budou tuto IP adresu používat pro přístup k webovému obsahu namísto IP jednotlivého uzlu.

[root@node1 ~ Vytvoření prostředku pro # ks httpd_vip IPaddr2 ip=192.168.0.100 cidr_netmask=24 --group apache
Výstup:Předpokládaný název agenta 'ocf:`heartbeat`:IPaddr2' (odvozeno z 'IPaddr2')

Vytvořte prostředek Apache pro sledování stavu serveru Apache, který v případě selhání přesune prostředek do jiného uzlu.

[root@node1 ~ Vytvoření prostředku pro # ks httpd_ser apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group apache 
Výstup:Předpokládaný název agenta 'ocf:`heartbeat`:apache' (odvozeno z 'apache')

Zkontrolujte stav clusteru.

[root@node1 ~ stav # kusů 
Výstup:Název clusteru:itzgeek_clusterStack:corosyncCurrent DC:node1.itzgeek.local (verze 2.0.2-3.el8_1.2-744a30d655) - oddíl s kvorem Poslední aktualizace:Po 30. březen 09:02:07 Poslední změna 2:07 30. března 09:01:46 2020 uživatelem root přes cibadmin na node1.itzgeek.local2 nodes configured3 resources configuredOnline:[ node1.itzgeek.local node2.itzgeek.local ]Úplný seznam zdrojů:Skupina zdrojů:apache httpd_fs (ocf:💓system ):Spuštěno node1.itzgeek.local httpd_vip (ocf:💓IPaddr2):Spuštěno node1.itzgeek.local httpd_ser (ocf:💓apache):Spuštěno node1.itzgeek.localDaemon Stav:corosync:aktivní/povolený kardiostimulátor:aktivní/povolený pcsd aktivní/povoleno

Ověřit klastr vysoké dostupnosti

Jakmile je cluster v provozu, nasměrujte webový prohlížeč na virtuální IP adresu Apache. Měli byste získat webovou stránku jako níže.

Testovat klastr vysoké dostupnosti

Pojďme zkontrolovat převzetí služeb při selhání zdrojů uvedením aktivního uzlu (kde jsou spuštěny všechny prostředky) do pohotovostního režimu.

[root@node1 ~]# ks pohotovostního uzlu node1.itzgeek.local 

Důležité příkazy clusteru

Seznam prostředků clusteru:

stav zdroje ks 

Restartujte prostředek clusteru:

restartování zdroje počítače  

Přesunout prostředek z uzlu:

přesun prostředku ks   

Vložte cluster do údržby:

sada vlastností ks maintenance-mode=true 

Odebrat cluster z údržby:

sada vlastností ks maintenance-mode=false 

Spusťte uzel clusteru:

spuštění clusteru ks  

Zastavit uzel clusteru:

zastavení clusteru ks  

Spustit cluster:

spuštění clusteru ks --vše 

Zastavit cluster:

pcs cluster stop --all 

Zničit cluster:

zničí cluster pc  

Webové uživatelské rozhraní clusteru

Webové uživatelské rozhraní pcsd vám pomůže vytvářet, konfigurovat a spravovat clustery Pacemaker.

Webové rozhraní bude přístupné po spuštění služby pcsd na uzlu a je dostupné na portu číslo 2224.

https://název_uzlu:2224

Přihlaste se pomocí klastrového administrátora clusteru a jeho hesla.

Protože již máme cluster, klikněte na Add Existing a přidejte existující cluster Pacemaker. V případě, že chcete nastavit nový cluster, můžete si přečíst oficiální dokumentaci.

Chcete-li zjistit existující klastr, zadejte libovolný z uzlu klastru.

Za minutu nebo dvě byste ve webovém uživatelském rozhraní viděli svůj stávající cluster.

Chcete-li se dozvědět více o informacích o clusteru, vyberte cluster.

Kliknutím na název clusteru zobrazíte podrobnosti o uzlu.

Kliknutím na zdroje clusteru zobrazíte seznam zdrojů a jejich podrobnosti.

Reference :Dokumentace Red Hat.

Závěr

To je vše. V tomto příspěvku jste se naučili, jak nastavit cluster s vysokou dostupností na CentOS 8 / RHEL 8.


Cent OS
  1. Jak nastavit SysLog Server na CentOS 7 / RHEL 7

  2. Jak nastavit server NFS na CentOS 7 / RHEL 7

  3. Jak nastavit Icinga Web 2 na CentOS 7 / RHEL 7

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

  2. Jak nastavit mutt v CentOS/RHEL

  3. Jak nastavit proxy server squid na CentOS/RHEL 7

  1. Jak nastavit úložiště GlusterFS na CentOS 7 / RHEL 7

  2. Jak nastavit víceuzlový elastický stack cluster na RHEL 8 / CentOS 8

  3. Jak nastavit server NFS na CentOS 8 / RHEL 8