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

Jak nakonfigurovat cluster s vysokou dostupností na CentOS 7 / RHEL 7

Klastr s vysokou dostupností alias Failover-cluster (aktivní-pasivní cluster) je jedním z nejrozšířenějších typů clusterů v produkčním prostředí. Tento typ clusteru vám poskytuje nepřetržitou dostupnost služeb, i když jeden z uzlů clusteru selže. Pokud aplikace na serveru z nějakého důvodu selhala (selhání hardwaru), klastrový software (kardiostimulátor) restartuje aplikaci na jiném uzlu.

High-Availability se používá hlavně pro databáze, vlastní aplikace a také pro sdílení souborů. Fail-over není jen spuštění aplikace. Je s ním spojena řada operací, jako je připojování souborových systémů, konfigurace sítí a spouštění závislých aplikací.

Životní prostředí

CentOS 7 / RHEL 7 podporuje Fail-over cluster pomocí kardiostimulátoru. Zde se podíváme na konfiguraci serveru Apache (webového) jako vysoce dostupné aplikace.

Jak jsem řekl, selhání je série operací, takže bychom museli nakonfigurovat souborový systém a sítě jako zdroj. Pro souborový systém bychom použili sdílené úložiště z úložiště iSCSI.

Název hostitele IP adresa OS Účel
node1.itzgeek.local 192.168.1.11 CentOS 7 Uzel clusteru 1
node2.itzgeek.local 192.168.1.12 Uzel clusteru 1
server.itzgeek.local 192.168.1.20 iSCSI sdílené úložiště
192.168.1.100 IP virtuálního clusteru (Apache)

Všechny běží na VMware Workstation.

Sdílené úložiště

Sdílené úložiště je jedním z důležitých zdrojů v clusteru s vysokou dostupností, protože obsahuje 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 nejpoužívanějším sdíleným úložištěm v produkčním prostředí. Pro tuto ukázku nakonfigurujeme cluster s úložištěm iSCSI pro demonstrační účely.

Instalovat balíčky

Server iSCSI

[root@server ~]# yum install targetcli -y

Uzly clusteru

Je čas nakonfigurovat uzly clusteru tak, aby využívaly úložiště iSCSI, proveďte níže uvedené kroky na všech uzlech clusteru.

# yum nainstalovat iscsi-initiator-utils -y

Instalační disk

Zde vytvoříme 10GB LVM disk na serveru iSCSI, který použijeme jako sdílené úložiště pro naše uzly clusteru. Uveďme seznam dostupných disků připojených k cílovému serveru pomocí příkazu.

[root@server ~]# fdisk -l | grep -i sd

Výstup:

Disk/Dev/SDA:107,4 GB, 107374182400 bajtů, 209715200 sektorů/dev/sda1 * 2048 1026047 512000 83 Linux/dev/SDA2 1026048 209715199 104344576 8E LINUX

Z výše uvedeného výstupu můžete vidět, že můj systém má 10 GB pevného disku (/dev/sdb). Vytvořte LVM pomocí /dev/sdb (nahraďte /dev/sdb názvem vašeho disku)

[root@server ~]# pvcreate /dev/sdb[root@server ~]# vgcreate vg_iscsi /dev/sdb[root@server ~]# 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:b11df35b6f75

Uzel 2:

InitiatorName=iqn.1994-05.com.redhat:119eaf9252a

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

[root@server ~]# targetcli

Výstup:

targetcli shell verze 2.1.fb46Copyright 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řit iscsi_shared_storage /dev/vg_iscsi/lv_iscsi Vytvořený objekt úložiště bloků iscsi_shared_storage pomocí /dev/vg_iscsi/lv_iscsi./backstores/block> cd /iscsi /iscsi> vytvořit Vytvořený cíl iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5.Vytvořený 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 strong>cd iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5/tpg1/acls /iscsi/iqn.20...ad5/tpg1/acls> vytvořit iqn.1994-05.com.redhat:b11df35b6f75 < Vytvořeno Node ACL pro iqn.1994-05.com.redhat:b11df35b6f75/iscsi/iqn.20...ad5/tpg1/acls> vytvořit iqn.1994-05.com.redhat:119eaf9252a Node < Vytvořeno Node ACL pro iqn.1994-05.com.redhat:119eaf9252a/iscsi/iqn.20...ad5/tpg1/acls> cd /iscsi/iqn.2003-01.org.linux-iscsi.server .x8664:sn.518a1f561ad5/tpg1/luns /iscsi/iqn.20...ad5/tpg1/luns> vytvořit /backstores/block/iscsi_shared_storage Vytvořené mapování LUN 0. Vytvořené mapování LUN 0->0 v uzlu ACL iqn.1994-05.com.redhat:119eaf9252aVytvořené mapování LUN 0->0 v uzlu ACL iqn.1994-05.com.redhat:b11df35b6f75 20...ad5/tpg1/luns> cd / /> ls o- / ................................................... ................................................................... ..... [...] o- backstores ...................................... ................................................................... .... [...] | o-blok ................................................... ................................ [Objekty úložiště:1] | | o- iscsi_shared_storage .................................. [/dev/vg_iscsi/lv_iscsi (10.0GiB) zápis aktivován] | | 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.server.x8664:sn.518a1f561ad5 ................................. .......... [TPG:1] | o- tpg1 ................................................... ............................. [no-gen-acls, no-auth] | o- acls ................................................. ........................................ [ACL:2] | | o- iqn.1994-05.com.redhat:119eaf9252a ...................................... ........... [Mapované LUN:1] | | | o- maped_lun0 ................................................... [lun0 block/iscsi_shared_storage (rw)] | | o- iqn.1994-05.com.redhat:b11df35b6f75 ...................................... .......... [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]/> saveconfig Konfigurace byla uložena do /etc/target/saveconfig.json/> exit Globální předvolba auto_save_on_exit=truePosledních 10 konfigurací uložených v /etc/target/backup/. Konfigurace uložena do /etc/target/saveconfig.json[root@server ~]#

Povolte a restartujte cílovou službu.

[root@server ~]# systemctl povolit cíl[root@server ~]# systemctl restartovat cíl

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

[root@server ~]# firewall-cmd --permanent --add-port=3260/tcp[root@server ~]# 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.1.20

Výstup:

192.168.1.20:3260,1 iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5

Nyní se přihlaste k cíli pomocí níže uvedeného příkazu.

# iscsiadm -m uzel -T iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5 -p 192.168.1.20 -l

Výstup:

Přihlášení do [iface:výchozí, cíl:iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5, portál:192.168.1.20,3260] (více)Přihlášení do [iface:výchozí , cíl:iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5, portál:192.168.1.20,3260] úspěšné.

Restartujte a povolte službu iniciátor.

# systemctl restart iscsid# systemctl povolit iscsid

Nastavení uzlů clusteru

Záznam hostitele

Vytvořte záznam hostitele na každém uzlu pro všechny uzly. 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.1.11 node1.itzgeek.local node1192.168.1.12 node2.itzgeek.local node2

Sdílené úložiště

Přejděte do všech svých uzlů a zkontrolujte, zda je nový disk viditelný nebo ne. V mých uzlech je /dev/sdb disk pocházející z našeho úložiště iSCSI.

# fdisk -l | grep -i sd

Výstup:

Disk /Dev /SDA:107,4 GB, 107374182400 bajtů, 209715200 sektorů /dev /sda1 * 2048 1026047 512000 83 Linux /dev /sda2 1026048 209715199 104344576 8E linux

Na libovolném uzlu (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ř. uzel2) pomocí příkazu níže.

[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 mFUyuk-xTtK-r7PV-PLPq-yoVC-Ktto-TcaYpS Přístup pro zápis LV pro čtení/zápis hostitel vytváření LV, time node1.itzgeek.local, 2019-07-05 08:57:33 +0530 Stav LV k dispozici # otevřeno 0 Velikost LV 9,96 GiB Aktuální LE 2551 Segmenty 1 Dědit přidělení sektorů číst dopředu Auto – aktuálně nastaveno na 8192 Blokovat zařízení 253:3 
Pokud systém nezobrazuje logický svazek, zvažte restartování druhého uzlu.

Instalovat balíčky

Nainstalujte clusterové balíčky (pacemaker) na všechny uzly pomocí níže uvedeného příkazu.

# yum nainstalovat pcs fence-agents-all -y

Povolit všem aplikacím s vysokou dostupností na bráně firewall správnou komunikaci mezi uzly. Pokud systém nemá nainstalovanou bránu firewall, můžete tento krok přeskočit.

# firewall-cmd --permanent --add-service=high-availability# firewall-cmd --add-service=high-availability

Použijte níže uvedený příkaz pro seznam povolených aplikací ve firewallu.

# firewall-cmd --list-service

Výstup:

Vysoká dostupnost klienta ssh dhcpv6

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 službu clusteru. Povolte také automatické spouštění při spuštění systému.

# systemctl start pcsd# systemctl enable pcsd

Nezapomeňte spustit výše uvedené příkazy na všech uzlech clusteru.

Vytvořte klastr 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 ~]# pcs cluster auth node1.itzgeek.local node2.itzgeek.local

Výstup:

Uživatelské jméno:hacluster Heslo:< node1.itzgeek.local:Authorizednode2.itzgeek.local:Authorized

Vytvořte cluster.

[root@node1 ~]# ks nastavení clusteru --start --name itzgeek_cluster node1.itzgeek.local node2.itzgeek.local

Výstup:

Zničení clusteru na uzlech:node1.itzgeek.local, node2.itzgeek.local...node1.itzgeek.local:Zastavení clusteru (kardiostimulátor)...node2.itzgeek.local:Zastavení clusteru (kardiostimulátor)... node2.itzgeek.local:Úspěšně zničeno clusternode1.itzgeek.local:Úspěšně zničeno authkey'node2.itzgeek.local:úspěšná distribuce souboru 'pacemaker_remote authkey'Odesílání konfiguračních souborů clusteru do uzlů...node1.itzgeek.local:Succeedednode2.itzgeek.local:SucceededStarting cluster na uzlech:node1.itzgeek.local, node2.itzgeek.local...node1.itzgeek.local:Starting Cluster (corosync)...node2.itzgeek.local:Starting Cluster (corosync)...node1.itzgeek.local:Starting Cluster (kardiostimulátor)... node2.itzgeek.local:Starting Cluster (pacemaker)...Synchronizace pcsd certifikátů na uzlech node1.itzgeek.local, node2.itzgeek.local...node1 .itzgeek.local:Successnode2.itzgeek.local:SuccessRestartování pcsd na uzlech za účelem opětovného načtení certifikátů...node1.itzgeek.local:Successnode2.itzgeek.local:Success

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

[root@node1 ~Povolení clusteru # pcs --all

Výstup:

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

Výstup:

Stav clusteru:Zásobník:corosync Aktuální DC:node2.itzgeek.local (verze 1.1.19-8.el7_6.4-c3c624ea3d) - oddíl s kvorem Poslední aktualizace:Pá 5. července 09:14:57 2019 Poslední změna:Pá 5. července 09:13:12 2019 od hacluster přes crmd na node2.itzgeek.local Nakonfigurováno 2 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 clusteru, včetně jeho prostředků, stavu kardiostimulátoru a podrobností 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:node2.itzgeek.local (verze 1.1.19-8.el7_6.4-c3c624ea3d) - oddíl s kvorem FriquolLast updated:09:15:37 2019Poslední změna:Pá 5. července 09:13:12 2019 pomocí haclusteru přes crmd na node2.itzgeek.local2 nodes configured0 resources configuredOnline:[ node1.itzgeek.local node2.itzgeek.local ]No resourcesDaemon aktivní/povolený kardiostimulátor:aktivní/povoleno pcsd:aktivní/povoleno

Oplocení

Šermířské zařízení je hardwarové/softwarové zařízení, které pomáhá odpojit problémový uzel resetováním uzlu / odpojením sdíleného úložiště z přístupu k němu. Můj ukázkový cluster běží na VMware Virtual Machine, takže vám neukazuji nastavení oplocení, ale můžete postupovat podle tohoto průvodce a nastavit oplocení.

Zdroje clusteru

Připravte zdroje

Webový server Apache

Nainstalujte webový server Apache na oba uzly.

# yum install -y httpd wget

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 Order odepřít, povolit Odepřít všem Povolit od 127.0.0.1

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

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

Povolte službu Apache ve firewallu na obou uzlech.

# firewall-cmd --permanent --add-service=http# firewall-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.

# pcs resource create 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 'Filesystem')

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ých uzlu.

# pcs resource create httpd_vip IPaddr2 ip=192.168.1.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, který bude sledovat stav serveru Apache a v případě selhání přesune prostředek do jiného uzlu.

# pcs resource create 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')

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

# pcs sada vlastností stonith-enabled=false

Zkontrolujte stav clusteru.

[root@node1 ~stav # kusů

Výstup:

Název clusteru:itzgeek_clusterStack:corosyncCurrent DC:node2.itzgeek.local (verze 1.1.19-8.el7_6.4-c3c624ea3d) - oddíl s kvorem Poslední aktualizace:pá 5. července 09:26:04 2019 5. července změna 09:25:58 2019 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::heartbeat:Filesystem):Spuštěno node1.itzgeek.local httpd_vip (ocf::heartbeat:IPaddr2):Spuštěno node1.itzgeek.local httpd_ser (ocf::heartbeat:apache):Spuštěno node1.itzgeek.local Stav démona:corosync:aktivní/povolený kardiostimulátor:aktivní/povoleno pcsd:aktivní/povoleno

Ověřte klastr s vysokou dostupností

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 s vysokou dostupností

Pojďme zkontrolovat převzetí služeb při selhání zdroje uzlu zastavením clusteru na aktivním uzlu.

[root@node1 ~]# pcs cluster stop node1.itzgeek.local

Závěr

To je vše. V tomto příspěvku jste se naučili, jak nastavit cluster High-Availability na CentOS 7. Sdělte nám prosím své myšlenky v sekci komentářů.


Cent OS
  1. CentOS / RHEL 7 :Jak nakonfigurovat jmenný server pouze v mezipaměti

  2. CentOS / RHEL 6,7 :Jak nakonfigurovat obrovské stránky

  3. Jak nakonfigurovat proxy v CentOS/RHEL/Fedora

  1. Jak nakonfigurovat virtuální síťové rozhraní na RHEL 8 / CentOS 8

  2. Jak nainstalovat a nakonfigurovat sambu na RHEL 8 / CentOS 8

  3. Jak nakonfigurovat firewallové přihlašování v CentOS/RHEL 8

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

  2. Jak nakonfigurovat server Rsyslog v CentOS 8 / RHEL 8

  3. Jak nakonfigurovat statickou IP adresu v RHEL 8 / CentOS 8