Konfigurowanie programu Pacemaker w systemie Red Hat Enterprise Linux na platformie Azure
W tym artykule opisano sposób konfigurowania podstawowego klastra Pacemaker na serwerze Red Hat Enterprise Server (RHEL). Instrukcje obejmują RHEL 7, RHEL 8 i RHEL 9.
Wymagania wstępne
Najpierw zapoznaj się z następującymi uwagami i artykułami SAP:
Dokumentacja wysokiej dostępności systemu RHEL (HA)
- Konfigurowanie klastrów wysokiej dostępności i zarządzanie nimi.
- Zasady obsługi klastrów wysokiej dostępności RHEL — sbd i fence_sbd.
- Zasady obsługi klastrów wysokiej dostępności RHEL — fence_azure_arm.
- Znane ograniczenia dotyczące emulowanego oprogramowania watchdog.
- Eksplorowanie składników wysokiej dostępności systemu RHEL — sbd i fence_sbd.
- Wskazówki dotyczące projektowania klastrów wysokiej dostępności RHEL — zagadnienia dotyczące usługi sbd.
- Zagadnienia dotyczące wdrażania systemu RHEL 8 — wysoka dostępność i klastry
Dokumentacja systemu RHEL specyficzna dla platformy Azure
Dokumentacja systemu RHEL dla ofert SAP
- Zasady obsługi klastrów wysokiej dostępności RHEL — zarządzanie oprogramowaniem SAP S/4HANA w klastrze.
- Konfigurowanie programu SAP S/4HANA ASCS/ERS przy użyciu autonomicznego serwera enqueue Server 2 (ENSA2) w programie Pacemaker.
- Konfigurowanie replikacji systemu SAP HANA w klastrze Pacemaker.
- Red Hat Enterprise Linux HA Solution for SAP HANA Scale-Out and System Replication (Rozwiązanie Red Hat Enterprise Linux HA dla skalowalnego w poziomie i replikacji systemu SAP HANA).
Omówienie
Ważne
Klastry Pacemaker obejmujące wiele sieci wirtualnych/podsieci nie są objęte standardowymi zasadami pomocy technicznej.
Na platformie Azure są dostępne dwie opcje konfigurowania ogrodzenia w klastrze pacemaker dla systemu RHEL: agent ogrodzenia platformy Azure, który uruchamia ponownie węzeł, który kończy się niepowodzeniem za pośrednictwem interfejsów API platformy Azure lub można użyć urządzenia SBD.
Ważne
Na platformie Azure klaster wysokiej dostępności RHEL z ogrodzeniem opartym na magazynie (fence_sbd) używa emulowanego oprogramowania watchdog. Podczas wybierania usługi SBD jako mechanizmu ogrodzenia ważne jest zapoznanie się ze znanymi ograniczeniami i zasadami pomocy technicznej dla klastrów wysokiej dostępności RHEL — sbd i fence_sbd podczas wybierania usługi SBD.
Korzystanie z urządzenia SBD
Uwaga
Mechanizm ogrodzenia z funkcją SBD jest obsługiwany w systemach RHEL 8.8 i nowszych oraz RHEL 9.0 i nowszych.
Urządzenie SBD można skonfigurować przy użyciu jednej z dwóch opcji:
Usługa SBD z serwerem docelowym iSCSI
Urządzenie SBD wymaga co najmniej jednej dodatkowej maszyny wirtualnej, która działa jako serwer docelowy Internet Small Compute System Interface (iSCSI) i udostępnia urządzenie SBD. Te serwery obiektów docelowych iSCSI mogą być jednak współużytkowane z innymi klastrami pacemaker. Zaletą korzystania z urządzenia SBD jest to, że jeśli korzystasz już z urządzeń SBD lokalnie, nie wymagają one żadnych zmian sposobu działania klastra pacemaker.
Można użyć maksymalnie trzech urządzeń SBD dla klastra pacemaker, aby umożliwić urządzeniu SBD stanie się niedostępne (na przykład podczas stosowania poprawek systemu operacyjnego serwera docelowego iSCSI). Jeśli chcesz użyć więcej niż jednego urządzenia SBD na moduł rozrusznika, pamiętaj, aby wdrożyć wiele serwerów docelowych iSCSI i połączyć jeden SBD z każdego serwera docelowego iSCSI. Zalecamy użycie jednego lub trzech urządzeń SBD. Program Pacemaker nie może automatycznie ogrodzać węzła klastra, jeśli skonfigurowano tylko dwa urządzenia SBD i jeden z nich jest niedostępny. Jeśli chcesz mieć możliwość ogrodzenia, gdy jeden serwer docelowy iSCSI nie działa, musisz użyć trzech urządzeń SBD i w związku z tym trzech serwerów docelowych iSCSI. Jest to najbardziej odporna konfiguracja podczas korzystania z dysków SSD.
Ważne
Podczas planowania wdrażania i konfigurowania węzłów klastra rozrusznika systemu Linux i urządzeń SBD nie zezwalaj na routing między maszynami wirtualnymi i maszynami wirtualnymi hostujących urządzenia SBD do przekazywania wszystkich innych urządzeń, takich jak wirtualne urządzenie sieciowe (WUS).
Zdarzenia konserwacji i inne problemy z urządzeniem WUS mogą mieć negatywny wpływ na stabilność i niezawodność ogólnej konfiguracji klastra. Aby uzyskać więcej informacji, zobacz Reguły routingu zdefiniowane przez użytkownika.
Usługa SBD z dyskiem udostępnionym platformy Azure
Aby skonfigurować urządzenie SBD, należy dołączyć co najmniej jeden dysk udostępniony platformy Azure do wszystkich maszyn wirtualnych będących częścią klastra pacemaker. Zaletą urządzenia SBD przy użyciu dysku udostępnionego platformy Azure jest to, że nie trzeba wdrażać i konfigurować dodatkowych maszyn wirtualnych.
Poniżej przedstawiono kilka ważnych zagadnień dotyczących urządzeń SBD podczas konfigurowania przy użyciu dysku udostępnionego platformy Azure:
- Dysk udostępniony platformy Azure z dyskiem SSD w warstwie Premium jest obsługiwany jako urządzenie SBD.
- Urządzenia SBD korzystające z dysku udostępnionego platformy Azure są obsługiwane w systemie RHEL 8.8 lub nowszym.
- Urządzenia SBD korzystające z dysku udziału w warstwie Premium platformy Azure są obsługiwane w magazynie lokalnie nadmiarowym (LRS) i magazynie strefowo nadmiarowym (ZRS).
- W zależności od typu wdrożenia wybierz odpowiedni magazyn nadmiarowy dla dysku udostępnionego platformy Azure jako urządzenie SBD.
- Urządzenie SBD korzystające z magazynu LRS dla dysku udostępnionego usługi Azure Premium (skuName — Premium_LRS) jest obsługiwane tylko w przypadku wdrożenia regionalnego, takiego jak zestaw dostępności.
- Urządzenie SBD korzystające z magazynu ZRS dla dysku udostępnionego w warstwie Premium platformy Azure (skuName — Premium_ZRS) jest zalecane w przypadku wdrożenia strefowego, takiego jak strefa dostępności, lub zestaw skalowania z FD=1.
- Magazyn ZRS dla dysku zarządzanego jest obecnie dostępny w regionach wymienionych w dokumencie dostępności regionalnej.
- Dysk udostępniony platformy Azure używany na potrzeby urządzeń SBD nie musi być duży. Wartość maxShares określa, ile węzłów klastra może używać dysku udostępnionego. Można na przykład użyć rozmiarów dysków P1 lub P2 dla urządzenia SBD w klastrze z dwoma węzłami, takimi jak SAP ASCS/ERS lub SAP HANA scale-up.
- W przypadku skalowania w poziomie platformy HANA z replikacją systemu HANA (HSR) i modułem rozrusznika można użyć dysku udostępnionego platformy Azure dla urządzeń SBD w klastrach z maksymalnie pięcioma węzłami na lokację replikacji z powodu bieżącego limitu maxShares.
- Nie zalecamy dołączania urządzenia SBD dysku udostępnionego platformy Azure w klastrach pacemaker.
- Jeśli używasz wielu urządzeń SBD dysku udostępnionego platformy Azure, sprawdź limit maksymalnej liczby dysków danych, które można dołączyć do maszyny wirtualnej.
- Aby uzyskać więcej informacji na temat ograniczeń dotyczących dysków udostępnionych platformy Azure, dokładnie zapoznaj się z sekcją "Ograniczenia" w dokumentacji dysku udostępnionego platformy Azure.
Korzystanie z agenta ogrodzenia platformy Azure
Ogrodzenie można skonfigurować przy użyciu agenta ogrodzenia platformy Azure. Agent ogrodzenia platformy Azure wymaga tożsamości zarządzanych dla maszyn wirtualnych klastra lub jednostki usługi lub tożsamości zarządzanego systemu (MSI), która zarządza ponownym uruchomieniem węzłów, które zakończyły się niepowodzeniem za pośrednictwem interfejsów API platformy Azure. Agent ogrodzenia platformy Azure nie wymaga wdrożenia dodatkowych maszyn wirtualnych.
Usługa SBD z serwerem docelowym iSCSI
Aby użyć urządzenia SBD, które używa serwera docelowego iSCSI do ogrodzenia, postępuj zgodnie z instrukcjami w następnych sekcjach.
Konfigurowanie serwera docelowego iSCSI
Najpierw należy utworzyć maszyny wirtualne obiektów docelowych iSCSI. Serwery docelowe iSCSI można udostępniać z wieloma klastrami pacemaker.
Wdróż maszyny wirtualne działające w obsługiwanej wersji systemu operacyjnego RHEL i nawiąż z nimi połączenie za pośrednictwem protokołu SSH. Maszyny wirtualne nie muszą mieć dużego rozmiaru. Rozmiary maszyn wirtualnych, takie jak Standard_E2s_v3 lub Standard_D2s_v3, są wystarczające. Pamiętaj, aby używać magazynu w warstwie Premium dla dysku systemu operacyjnego.
Nie jest konieczne używanie systemu RHEL dla oprogramowania SAP z wysoką dostępnością i usługami aktualizacji ani obrazu systemu operacyjnego RHEL dla systemu operacyjnego SAP Apps dla serwera docelowego iSCSI. Zamiast tego można użyć standardowego obrazu systemu operacyjnego RHEL. Należy jednak pamiętać, że cykl życia pomocy technicznej różni się między różnymi wersjami produktów systemu operacyjnego.
Uruchom następujące polecenia na wszystkich maszynach wirtualnych docelowych iSCSI.
Zaktualizuj RHEL.
sudo yum -y update
Uwaga
Po uaktualnieniu lub zaktualizowaniu systemu operacyjnego może być konieczne ponowne uruchomienie węzła.
Zainstaluj pakiet docelowy iSCSI.
sudo yum install targetcli
Uruchom i skonfiguruj element docelowy do uruchomienia w czasie rozruchu.
sudo systemctl start target sudo systemctl enable target
Otwieranie portu
3260
w zaporzesudo firewall-cmd --add-port=3260/tcp --permanent sudo firewall-cmd --add-port=3260/tcp
Tworzenie urządzenia iSCSI na serwerze docelowym iSCSI
Aby utworzyć dyski iSCSI dla klastrów systemowych SAP, wykonaj następujące polecenia na każdej docelowej maszynie wirtualnej iSCSI. W przykładzie pokazano tworzenie urządzeń SBD dla kilku klastrów, pokazując użycie jednego serwera docelowego iSCSI dla wielu klastrów. Urządzenie SBD jest skonfigurowane na dysku systemu operacyjnego, więc upewnij się, że jest wystarczająca ilość miejsca.
- ascsnw1: reprezentuje klaster ASCS/ERS NW1.
- dbhn1: reprezentuje klaster bazy danych HN1.
- sap-cl1 i sap-cl2: nazwy hostów węzłów klastra NW1 ASCS/ERS.
- hn1-db-0 i hn1-db-1: nazwy hostów węzłów klastra bazy danych.
W poniższych instrukcjach zmodyfikuj polecenie przy użyciu określonych nazw hostów i identyfikatorów SID zgodnie z potrzebami.
Utwórz folder główny dla wszystkich urządzeń SBD.
sudo mkdir /sbd
Utwórz urządzenie SBD dla serwerów ASCS/ERS systemu NW1.
sudo targetcli backstores/fileio create sbdascsnw1 /sbd/sbdascsnw1 50M write_back=false sudo targetcli iscsi/ create iqn.2006-04.ascsnw1.local:ascsnw1 sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/luns/ create /backstores/fileio/sbdascsnw1 sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.sap-cl1.local:sap-cl1 sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.sap-cl2.local:sap-cl2
Utwórz urządzenie SBD dla klastra bazy danych systemu HN1.
sudo targetcli backstores/fileio create sbddbhn1 /sbd/sbddbhn1 50M write_back=false sudo targetcli iscsi/ create iqn.2006-04.dbhn1.local:dbhn1 sudo targetcli iscsi/iqn.2006-04.dbhn1.local:dbhn1/tpg1/luns/ create /backstores/fileio/sbddbhn1 sudo targetcli iscsi/iqn.2006-04.dbhn1.local:dbhn1/tpg1/acls/ create iqn.2006-04.hn1-db-0.local:hn1-db-0 sudo targetcli iscsi/iqn.2006-04.dbhn1.local:dbhn1/tpg1/acls/ create iqn.2006-04.hn1-db-1.local:hn1-db-1
Zapisz konfigurację targetcli.
sudo targetcli saveconfig
Sprawdź, czy wszystko zostało poprawnie skonfigurowane
sudo targetcli ls o- / ......................................................................................................................... [...] o- backstores .............................................................................................................. [...] | o- block .................................................................................................. [Storage Objects: 0] | o- fileio ................................................................................................. [Storage Objects: 2] | | o- sbdascsnw1 ............................................................... [/sbd/sbdascsnw1 (50.0MiB) write-thru activated] | | | o- alua ................................................................................................... [ALUA Groups: 1] | | | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized] | | o- sbddbhn1 ................................................................... [/sbd/sbddbhn1 (50.0MiB) write-thru activated] | | o- alua ................................................................................................... [ALUA Groups: 1] | | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized] | o- pscsi .................................................................................................. [Storage Objects: 0] | o- ramdisk ................................................................................................ [Storage Objects: 0] o- iscsi ............................................................................................................ [Targets: 2] | o- iqn.2006-04.dbhn1.local:dbhn1 ..................................................................................... [TPGs: 1] | | o- tpg1 ............................................................................................... [no-gen-acls, no-auth] | | o- acls .......................................................................................................... [ACLs: 2] | | | o- iqn.2006-04.hn1-db-0.local:hn1-db-0 .................................................................. [Mapped LUNs: 1] | | | | o- mapped_lun0 ............................................................................... [lun0 fileio/sbdhdb (rw)] | | | o- iqn.2006-04.hn1-db-1.local:hn1-db-1 .................................................................. [Mapped LUNs: 1] | | | o- mapped_lun0 ............................................................................... [lun0 fileio/sbdhdb (rw)] | | o- luns .......................................................................................................... [LUNs: 1] | | | o- lun0 ............................................................. [fileio/sbddbhn1 (/sbd/sbddbhn1) (default_tg_pt_gp)] | | o- portals .................................................................................................... [Portals: 1] | | o- 0.0.0.0:3260 ..................................................................................................... [OK] | o- iqn.2006-04.ascsnw1.local:ascsnw1 ................................................................................. [TPGs: 1] | o- tpg1 ............................................................................................... [no-gen-acls, no-auth] | o- acls .......................................................................................................... [ACLs: 2] | | o- iqn.2006-04.sap-cl1.local:sap-cl1 .................................................................... [Mapped LUNs: 1] | | | o- mapped_lun0 ........................................................................... [lun0 fileio/sbdascsers (rw)] | | o- iqn.2006-04.sap-cl2.local:sap-cl2 .................................................................... [Mapped LUNs: 1] | | o- mapped_lun0 ........................................................................... [lun0 fileio/sbdascsers (rw)] | o- luns .......................................................................................................... [LUNs: 1] | | o- lun0 ......................................................... [fileio/sbdascsnw1 (/sbd/sbdascsnw1) (default_tg_pt_gp)] | o- portals .................................................................................................... [Portals: 1] | o- 0.0.0.0:3260 ..................................................................................................... [OK] o- loopback ......................................................................................................... [Targets: 0]
Konfigurowanie urządzenia SBD serwera docelowego iSCSI
[A]: Dotyczy wszystkich węzłów. [1]: Dotyczy tylko węzła 1. [2]: Dotyczy tylko węzła 2.
W węzłach klastra nawiąż połączenie i odnajdywanie urządzenia iSCSI utworzonego we wcześniejszej sekcji. Uruchom następujące polecenia w węzłach nowego klastra, który chcesz utworzyć.
[A] Zainstaluj lub zaktualizuj narzędzia inicjatora iSCSI na wszystkich węzłach klastra.
sudo yum install -y iscsi-initiator-utils
[A] Zainstaluj pakiety klastra i SBD na wszystkich węzłach klastra.
sudo yum install -y pcs pacemaker sbd fence-agents-sbd
[A] Włącz usługę iSCSI.
sudo systemctl enable iscsid iscsi
[1] Zmień nazwę inicjatora w pierwszym węźle klastra.
sudo vi /etc/iscsi/initiatorname.iscsi # Change the content of the file to match the access control ists (ACLs) you used when you created the iSCSI device on the iSCSI target server (for example, for the ASCS/ERS servers) InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1
[2] Zmień nazwę inicjatora w drugim węźle klastra.
sudo vi /etc/iscsi/initiatorname.iscsi # Change the content of the file to match the access control ists (ACLs) you used when you created the iSCSI device on the iSCSI target server (for example, for the ASCS/ERS servers) InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2
[A] Uruchom ponownie usługę iSCSI, aby zastosować zmiany.
sudo systemctl restart iscsid sudo systemctl restart iscsi
[A] Łączenie urządzeń iSCSI. W poniższym przykładzie 10.0.0.17 jest adresem IP serwera docelowego iSCSI, a 3260 jest portem domyślnym. Nazwa
iqn.2006-04.ascsnw1.local:ascsnw1
docelowa zostanie wyświetlona podczas uruchamiania pierwszego poleceniaiscsiadm -m discovery
.sudo iscsiadm -m discovery --type=st --portal=10.0.0.17:3260 sudo iscsiadm -m node -T iqn.2006-04.ascsnw1.local:ascsnw1 --login --portal=10.0.0.17:3260 sudo iscsiadm -m node -p 10.0.0.17:3260 -T iqn.2006-04.ascsnw1.local:ascsnw1 --op=update --name=node.startup --value=automatic
[A] Jeśli używasz wielu urządzeń SBD, połącz się również z drugim serwerem docelowym iSCSI.
sudo iscsiadm -m discovery --type=st --portal=10.0.0.18:3260 sudo iscsiadm -m node -T iqn.2006-04.ascsnw1.local:ascsnw1 --login --portal=10.0.0.18:3260 sudo iscsiadm -m node -p 10.0.0.18:3260 -T iqn.2006-04.ascsnw1.local:ascsnw1 --op=update --name=node.startup --value=automatic
[A] Jeśli używasz wielu urządzeń SBD, połącz się również z trzecim serwerem docelowym iSCSI.
sudo iscsiadm -m discovery --type=st --portal=10.0.0.19:3260 sudo iscsiadm -m node -T iqn.2006-04.ascsnw1.local:ascsnw1 --login --portal=10.0.0.19:3260 sudo iscsiadm -m node -p 10.0.0.19:3260 -T iqn.2006-04.ascsnw1.local:ascsnw1 --op=update --name=node.startup --value=automatic
[A] Upewnij się, że urządzenia iSCSI są dostępne i zanotuj nazwę urządzenia. W poniższym przykładzie trzy urządzenia iSCSI są odnajdywane przez połączenie węzła z trzema serwerami docelowymi iSCSI.
lsscsi [0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sde [1:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda [1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb [1:0:0:2] disk Msft Virtual Disk 1.0 /dev/sdc [1:0:0:3] disk Msft Virtual Disk 1.0 /dev/sdd [2:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdf [3:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdh [4:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdg
[A] Pobieranie identyfikatorów urządzeń iSCSI.
ls -l /dev/disk/by-id/scsi-* | grep -i sdf # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-1LIO-ORG_sbdhdb:85d254ed-78e2-4ec4-8b0d-ecac2843e086 -> ../../sdf # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-3600140585d254ed78e24ec48b0decac2 -> ../../sdf # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-SLIO-ORG_sbdhdb_85d254ed-78e2-4ec4-8b0d-ecac2843e086 -> ../../sdf ls -l /dev/disk/by-id/scsi-* | grep -i sdh # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-1LIO-ORG_sbdhdb:87122bfc-8a0b-4006-b538-d0a6d6821f04 -> ../../sdh # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-3600140587122bfc8a0b4006b538d0a6d -> ../../sdh # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-SLIO-ORG_sbdhdb_87122bfc-8a0b-4006-b538-d0a6d6821f04 -> ../../sdh ls -l /dev/disk/by-id/scsi-* | grep -i sdg # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-1LIO-ORG_sbdhdb:d2ddc548-060c-49e7-bb79-2bb653f0f34a -> ../../sdg # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-36001405d2ddc548060c49e7bb792bb65 -> ../../sdg # lrwxrwxrwx 1 root root 9 Jul 15 20:21 /dev/disk/by-id/scsi-SLIO-ORG_sbdhdb_d2ddc548-060c-49e7-bb79-2bb653f0f34a -> ../../sdg
Polecenie wyświetla listę trzech identyfikatorów urządzeń dla każdego urządzenia SBD. Zalecamy użycie identyfikatora rozpoczynającego się od scsi-3. W poprzednim przykładzie identyfikatory to:
- /dev/disk/by-id/scsi-3600140585d254ed78e24ec48b0decac2
- /dev/disk/by-id/scsi-3600140587122bfc8a0b4006b538d0a6d
- /dev/disk/by-id/scsi-36001405d2ddc548060c49e7bb792bb65
[1] Tworzenie urządzenia SBD.
Użyj identyfikatora urządzenia urządzeń iSCSI, aby utworzyć nowe urządzenia SBD w pierwszym węźle klastra.
sudo sbd -d /dev/disk/by-id/scsi-3600140585d254ed78e24ec48b0decac2 -1 60 -4 120 create
Utwórz również drugie i trzecie urządzenia SBD, jeśli chcesz użyć więcej niż jednego.
sudo sbd -d /dev/disk/by-id/scsi-3600140587122bfc8a0b4006b538d0a6d -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-36001405d2ddc548060c49e7bb792bb65 -1 60 -4 120 create
[A] Dostosowywanie konfiguracji SBD
Otwórz plik konfiguracji SBD.
sudo vi /etc/sysconfig/sbd
Zmień właściwość urządzenia SBD, włącz integrację modułu pacemaker i zmień tryb uruchamiania usługi SBD.
[...] SBD_DEVICE="/dev/disk/by-id/scsi-3600140585d254ed78e24ec48b0decac2;/dev/disk/by-id/scsi-3600140587122bfc8a0b4006b538d0a6d;/dev/disk/by-id/scsi-36001405d2ddc548060c49e7bb792bb65" [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...] SBD_DELAY_START=yes [...]
[A] Uruchom następujące polecenie, aby załadować
softdog
moduł.modprobe softdog
[A] Uruchom następujące polecenie, aby upewnić się, że
softdog
jest automatycznie ładowane po ponownym uruchomieniu węzła.echo softdog > /etc/modules-load.d/watchdog.conf systemctl restart systemd-modules-load
[A] Wartość limitu czasu usługi SBD jest domyślnie ustawiona na 90 s. Jeśli jednak wartość jest ustawiona
SBD_DELAY_START
nayes
, usługa SBD opóźni uruchomienie do momentu przekroczenia limitumsgwait
czasu. W związku z tym wartość limitu czasu usługi SBD powinna przekraczaćmsgwait
limit czasu, gdySBD_DELAY_START
jest włączony.sudo mkdir /etc/systemd/system/sbd.service.d echo -e "[Service]\nTimeoutSec=144" | sudo tee /etc/systemd/system/sbd.service.d/sbd_delay_start.conf sudo systemctl daemon-reload systemctl show sbd | grep -i timeout # TimeoutStartUSec=2min 24s # TimeoutStopUSec=2min 24s
Usługa SBD z dyskiem udostępnionym platformy Azure
Ta sekcja ma zastosowanie tylko wtedy, gdy chcesz użyć urządzenia SBD z dyskiem udostępnionym platformy Azure.
Konfigurowanie udostępnionego dysku platformy Azure przy użyciu programu PowerShell
Aby utworzyć i dołączyć dysk udostępniony platformy Azure za pomocą programu PowerShell, wykonaj następujące instrukcje. Jeśli chcesz wdrożyć zasoby przy użyciu interfejsu wiersza polecenia platformy Azure lub witryny Azure Portal, możesz również zapoznać się z artykułem Wdrażanie dysku ZRS.
$ResourceGroup = "MyResourceGroup"
$Location = "MyAzureRegion"
$DiskSizeInGB = 4
$DiskName = "SBD-disk1"
$ShareNodes = 2
$LRSSkuName = "Premium_LRS"
$ZRSSkuName = "Premium_ZRS"
$vmNames = @("prod-cl1-0", "prod-cl1-1") # VMs to attach the disk
# ZRS Azure shared disk: Configure an Azure shared disk with ZRS for a premium shared disk
$zrsDiskConfig = New-AzDiskConfig -Location $Location -SkuName $ZRSSkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes
$zrsDataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $zrsDiskConfig
# Attach ZRS disk to cluster VMs
foreach ($vmName in $vmNames) {
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Attach -ManagedDiskId $zrsDataDisk.Id -Lun 0
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup -Verbose
}
# LRS Azure shared disk: Configure an Azure shared disk with LRS for a premium shared disk
$lrsDiskConfig = New-AzDiskConfig -Location $Location -SkuName $LRSSkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes
$lrsDataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $lrsDiskConfig
# Attach LRS disk to cluster VMs
foreach ($vmName in $vmNames) {
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Attach -ManagedDiskId $lrsDataDisk.Id -Lun 0
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup -Verbose
}
Konfigurowanie urządzenia SBD dysku udostępnionego platformy Azure
[A] Zainstaluj pakiety klastra i SBD na wszystkich węzłach klastra.
sudo yum install -y pcs pacemaker sbd fence-agents-sbd
[A] Upewnij się, że dołączony dysk jest dostępny.
lsblk # NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT # sda 8:0 0 4G 0 disk # sdb 8:16 0 64G 0 disk # ├─sdb1 8:17 0 500M 0 part /boot # ├─sdb2 8:18 0 63G 0 part # │ ├─rootvg-tmplv 253:0 0 2G 0 lvm /tmp # │ ├─rootvg-usrlv 253:1 0 10G 0 lvm /usr # │ ├─rootvg-homelv 253:2 0 1G 0 lvm /home # │ ├─rootvg-varlv 253:3 0 8G 0 lvm /var # │ └─rootvg-rootlv 253:4 0 2G 0 lvm / # ├─sdb14 8:30 0 4M 0 part # └─sdb15 8:31 0 495M 0 part /boot/efi # sr0 11:0 1 1024M 0 rom lsscsi # [0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdb # [0:0:0:2] cd/dvd Msft Virtual DVD-ROM 1.0 /dev/sr0 # [1:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda # [1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdc
[A] Pobierz identyfikator urządzenia dołączonego dysku udostępnionego.
ls -l /dev/disk/by-id/scsi-* | grep -i sda # lrwxrwxrwx 1 root root 9 Jul 15 22:24 /dev/disk/by-id/scsi-14d534654202020200792c2f5cc7ef14b8a7355cb3cef0107 -> ../../sda # lrwxrwxrwx 1 root root 9 Jul 15 22:24 /dev/disk/by-id/scsi-3600224800792c2f5cc7e55cb3cef0107 -> ../../sda
Identyfikator urządzenia dołączonego dysku udostępnionego zawiera listę poleceń. Zalecamy użycie identyfikatora rozpoczynającego się od scsi-3. W tym przykładzie identyfikator to /dev/disk/by-id/scsi-3600224800792c2f5cc7e5cb3cef0107.
[1] Tworzenie urządzenia SBD
# Use the device ID from step 3 to create the new SBD device on the first cluster node sudo sbd -d /dev/disk/by-id/scsi-3600224800792c2f5cc7e55cb3cef0107 -1 60 -4 120 create
[A] Dostosowywanie konfiguracji SBD
Otwórz plik konfiguracji SBD.
sudo vi /etc/sysconfig/sbd
Zmienianie właściwości urządzenia SBD, włączanie integracji modułu pacemaker i zmienianie trybu uruchamiania usługi SBD
[...] SBD_DEVICE="/dev/disk/by-id/scsi-3600224800792c2f5cc7e55cb3cef0107" [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...] SBD_DELAY_START=yes [...]
[A] Uruchom następujące polecenie, aby załadować
softdog
moduł.modprobe softdog
[A] Uruchom następujące polecenie, aby upewnić się, że
softdog
jest automatycznie ładowane po ponownym uruchomieniu węzła.echo softdog > /etc/modules-load.d/watchdog.conf systemctl restart systemd-modules-load
[A] Wartość limitu czasu usługi SBD jest domyślnie ustawiona na 90 sekund. Jeśli jednak wartość jest ustawiona
SBD_DELAY_START
nayes
, usługa SBD opóźni uruchomienie do momentu przekroczenia limitumsgwait
czasu. W związku z tym wartość limitu czasu usługi SBD powinna przekraczaćmsgwait
limit czasu, gdySBD_DELAY_START
jest włączony.sudo mkdir /etc/systemd/system/sbd.service.d echo -e "[Service]\nTimeoutSec=144" | sudo tee /etc/systemd/system/sbd.service.d/sbd_delay_start.conf sudo systemctl daemon-reload systemctl show sbd | grep -i timeout # TimeoutStartUSec=2min 24s # TimeoutStopUSec=2min 24s
Konfiguracja agenta ogrodzenia platformy Azure
Urządzenie ogrodzenia używa tożsamości zarządzanej dla zasobu platformy Azure lub jednostki usługi do autoryzacji na platformie Azure. W zależności od metody zarządzania tożsamościami postępuj zgodnie z odpowiednimi procedurami —
Konfigurowanie zarządzania tożsamościami
Użyj tożsamości zarządzanej lub jednostki usługi.
Aby utworzyć tożsamość zarządzaną (MSI), utwórz tożsamość zarządzaną przypisaną przez system dla każdej maszyny wirtualnej w klastrze. Jeśli tożsamość zarządzana przypisana przez system już istnieje, zostanie użyta. Nie używaj obecnie tożsamości zarządzanych przypisanych przez użytkownika z programem Pacemaker. Urządzenie ogrodzenia oparte na tożsamości zarządzanej jest obsługiwane w systemach RHEL 7.9 i RHEL 8.x/RHEL 9.x.
Tworzenie roli niestandardowej dla agenta ogrodzenia
Zarówno tożsamość zarządzana, jak i jednostka usługi nie mają domyślnie uprawnień dostępu do zasobów platformy Azure. Musisz przyznać tożsamości zarządzanej lub jednostce usługi uprawnienia do uruchamiania i zatrzymywania (wyłączania) wszystkich maszyn wirtualnych klastra. Jeśli rola niestandardowa nie została jeszcze utworzona, możesz ją utworzyć przy użyciu programu PowerShell lub interfejsu wiersza polecenia platformy Azure.
Użyj następującej zawartości dla pliku wejściowego. Musisz dostosować zawartość do subskrypcji, czyli zastąpić
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
identyfikatory subskrypcji iyyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
identyfikatorami subskrypcji. Jeśli masz tylko jedną subskrypcję, usuń drugi wpis w plikuAssignableScopes
.{ "Name": "Linux Fence Agent Role", "description": "Allows to power-off and start virtual machines", "assignableScopes": [ "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "/subscriptions/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" ], "actions": [ "Microsoft.Compute/*/read", "Microsoft.Compute/virtualMachines/powerOff/action", "Microsoft.Compute/virtualMachines/start/action" ], "notActions": [], "dataActions": [], "notDataActions": [] }
Przypisywanie roli niestandardowej
Użyj tożsamości zarządzanej lub jednostki usługi.
Przypisz rolę
Linux Fence Agent Role
niestandardową utworzoną w ostatniej sekcji do każdej tożsamości zarządzanej maszyn wirtualnych klastra. Każda tożsamość zarządzana przypisana przez system maszyny wirtualnej wymaga roli przypisanej dla każdego zasobu maszyny wirtualnej klastra. Aby uzyskać więcej informacji, zobacz Przypisywanie dostępu tożsamości zarządzanej do zasobu przy użyciu witryny Azure Portal. Sprawdź, czy przypisanie roli tożsamości zarządzanej każdej maszyny wirtualnej zawiera wszystkie maszyny wirtualne klastra.Ważne
Należy pamiętać, że przypisanie i usunięcie autoryzacji z tożsamościami zarządzanymi może być opóźnione do momentu wprowadzenia w życie.
Instalacja klastra
Różnice w poleceniach lub konfiguracji między RHEL 7 i RHEL 8/RHEL 9 są oznaczone w dokumencie.
[A] Zainstaluj dodatek RHEL HA.
sudo yum install -y pcs pacemaker nmap-ncat
[A] W systemie RHEL 9.x zainstaluj agentów zasobów na potrzeby wdrażania w chmurze.
sudo yum install -y resource-agents-cloud
[A] Zainstaluj pakiet ogrodzenia agentów, jeśli używasz urządzenia ogrodzenia opartego na agencie ogrodzenia platformy Azure.
sudo yum install -y fence-agents-azure-arm
Ważne
Zalecamy następujące wersje agenta ogrodzenia platformy Azure (lub nowszego) dla klientów, którzy chcą używać tożsamości zarządzanych dla zasobów platformy Azure zamiast nazw głównych usług dla agenta ogrodzenia:
- RHEL 8.4: ogrodzenie-agenci-4.2.1-54.el8.
- RHEL 8.2: ogrodzenie-agenci-4.2.1-41.el8_2.4
- RHEL 8.1: ogrodzenie agentów-4.2.1-30.el8_1.4
- RHEL 7.9: ogrodzenie-agenci-4.2.1-41.el7_9.4.
Ważne
W systemie RHEL 9 zalecamy wykonanie następujących wersji pakietów (lub nowszych), aby uniknąć problemów z agentem ogrodzenia platformy Azure:
- ogrodzenia agenci-4.10.0-20.el9_0.7
- ogrodzenia agenci-common-4.10.0-20.el9_0.6
- ha-cloud-support-4.10.0-20.el9_0.6.x86_64.rpm
Sprawdź wersję agenta ogrodzenia platformy Azure. W razie potrzeby zaktualizuj ją do minimalnej wymaganej wersji lub nowszej.
# Check the version of the Azure Fence Agent sudo yum info fence-agents-azure-arm
Ważne
Jeśli musisz zaktualizować agenta ogrodzenia platformy Azure, a jeśli używasz roli niestandardowej, pamiętaj o zaktualizowaniu roli niestandardowej w celu uwzględnienia akcji powerOff. Aby uzyskać więcej informacji, zobacz Tworzenie roli niestandardowej dla agenta ogrodzenia.
[A] Skonfiguruj rozpoznawanie nazw hostów.
Możesz użyć serwera DNS lub zmodyfikować
/etc/hosts
plik na wszystkich węzłach. W tym przykładzie/etc/hosts
pokazano, jak używać pliku. Zastąp adres IP i nazwę hosta w następujących poleceniach.Ważne
Jeśli używasz nazw hostów w konfiguracji klastra, ważne jest, aby mieć niezawodne rozpoznawanie nazw hostów. Komunikacja z klastrem kończy się niepowodzeniem, jeśli nazwy nie są dostępne, co może prowadzić do opóźnień trybu failover klastra.
Zaletą użycia
/etc/hosts
jest to, że klaster staje się niezależny od systemu DNS, co może być również pojedynczym punktem awarii.sudo vi /etc/hosts
Wstaw następujące wiersze do
/etc/hosts
. Zmień adres IP i nazwę hosta, aby pasować do twojego środowiska.# IP address of the first cluster node 10.0.0.6 prod-cl1-0 # IP address of the second cluster node 10.0.0.7 prod-cl1-1
[A] Zmień
hacluster
hasło na to samo hasło.sudo passwd hacluster
[A] Dodaj reguły zapory dla programu Pacemaker.
Dodaj następujące reguły zapory do całej komunikacji klastra między węzłami klastra.
sudo firewall-cmd --add-service=high-availability --permanent sudo firewall-cmd --add-service=high-availability
[A] Włącz podstawowe usługi klastra.
Uruchom następujące polecenia, aby włączyć usługę Pacemaker i uruchomić ją.
sudo systemctl start pcsd.service sudo systemctl enable pcsd.service
[1] Tworzenie klastra Pacemaker.
Uruchom następujące polecenia, aby uwierzytelnić węzły i utworzyć klaster. Ustaw token na 30000, aby umożliwić konserwację pamięci. Aby uzyskać więcej informacji, zobacz ten artykuł dla systemu Linux.
Jeśli tworzysz klaster w systemie RHEL 7.x, użyj następujących poleceń:
sudo pcs cluster auth prod-cl1-0 prod-cl1-1 -u hacluster sudo pcs cluster setup --name nw1-azr prod-cl1-0 prod-cl1-1 --token 30000 sudo pcs cluster start --all
Jeśli tworzysz klaster w systemie RHEL 8.x/RHEL 9.x, użyj następujących poleceń:
sudo pcs host auth prod-cl1-0 prod-cl1-1 -u hacluster sudo pcs cluster setup nw1-azr prod-cl1-0 prod-cl1-1 totem token=30000 sudo pcs cluster start --all
Sprawdź stan klastra, uruchamiając następujące polecenie:
# Run the following command until the status of both nodes is online sudo pcs status # Cluster name: nw1-azr # WARNING: no stonith devices and stonith-enabled is not false # Stack: corosync # Current DC: prod-cl1-1 (version 1.1.18-11.el7_5.3-2b07d5c5a9) - partition with quorum # Last updated: Fri Aug 17 09:18:24 2018 # Last change: Fri Aug 17 09:17:46 2018 by hacluster via crmd on prod-cl1-1 # # 2 nodes configured # 0 resources configured # # Online: [ prod-cl1-0 prod-cl1-1 ] # # No resources # # Daemon Status: # corosync: active/disabled # pacemaker: active/disabled # pcsd: active/enabled
[A] Ustaw oczekiwane głosy.
# Check the quorum votes pcs quorum status # If the quorum votes are not set to 2, execute the next command sudo pcs quorum expected-votes 2
Napiwek
Jeśli tworzysz klaster wielowęzłowy, czyli klaster z więcej niż dwoma węzłami, nie ustawiaj głosów na 2.
[1] Zezwalaj na współbieżne akcje ogrodzenia.
sudo pcs property set concurrent-fencing=true
Tworzenie urządzenia ogrodzenia w klastrze Pacemaker
Napiwek
- Aby uniknąć wyścigów ogrodzenia w klastrze rozrusznika z dwoma węzłami, możesz skonfigurować właściwość klastra
priority-fencing-delay
. Ta właściwość wprowadza dodatkowe opóźnienie w ogrodzeniu węzła, który ma wyższy całkowity priorytet zasobów, gdy wystąpi scenariusz podziału mózgu. Aby uzyskać więcej informacji, zobacz Czy program Pacemaker ogrodzy węzeł klastra z najmniej uruchomionymi zasobami?. - Właściwość
priority-fencing-delay
ma zastosowanie do programu Pacemaker w wersji 2.0.4-6.el8 lub nowszej i w klastrze z dwoma węzłami. Jeśli skonfigurujesz właściwość klastrapriority-fencing-delay
, nie musisz ustawiaćpcmk_delay_max
właściwości. Jeśli jednak wersja pacemaker jest mniejsza niż 2.0.4-6.el8, należy ustawićpcmk_delay_max
właściwość . - Aby uzyskać instrukcje dotyczące sposobu ustawiania właściwości klastra
priority-fencing-delay
, zobacz odpowiednie dokumenty SAP ASCS/ERS i SAP HANA scale-up HA.
Na podstawie wybranego mechanizmu ogrodzenia wykonaj tylko jedną sekcję, aby uzyskać odpowiednie instrukcje: SBD jako urządzenie ogrodzeniowe lub agent ogrodzenia platformy Azure jako urządzenie ogrodzenia.
SBD jako urządzenie ogrodzeniowe
[A] Włączanie usługi SBD
sudo systemctl enable sbd
[1] W przypadku urządzenia SBD skonfigurowanego przy użyciu serwerów docelowych iSCSI lub dysku udostępnionego platformy Azure uruchom następujące polecenia.
sudo pcs property set stonith-timeout=144 sudo pcs property set stonith-enabled=true # Replace the device IDs with your device ID. pcs stonith create sbd fence_sbd \ devices=/dev/disk/by-id/scsi-3600140585d254ed78e24ec48b0decac2,/dev/disk/by-id/scsi-3600140587122bfc8a0b4006b538d0a6d,/dev/disk/by-id/scsi-36001405d2ddc548060c49e7bb792bb65 \ op monitor interval=600 timeout=15
[1] Uruchom ponownie klaster
sudo pcs cluster stop --all # It would take time to start the cluster as "SBD_DELAY_START" is set to "yes" sudo pcs cluster start --all
Uwaga
Jeśli wystąpi następujący błąd podczas uruchamiania klastra pacemaker, możesz zignorować komunikat. Alternatywnie możesz uruchomić klaster przy użyciu polecenia
pcs cluster start --all --request-timeout 140
.Błąd: nie można uruchomić wszystkich węzłów node1/node2: Nie można nawiązać połączenia z węzłem1/node2, sprawdź, czy pcsd jest tam uruchomiony, lub spróbuj ustawić wyższy limit czasu z opcją
--request-timeout
(upłynął limit czasu operacji po 60000 milisekundach z odebranymi 0 bajtami)
Agent ogrodzenia platformy Azure jako urządzenie ogrodzenia
[1] Po przypisaniu ról do obu węzłów klastra można skonfigurować urządzenia ogrodzeniowe w klastrze.
sudo pcs property set stonith-timeout=900 sudo pcs property set stonith-enabled=true
[1] Uruchom odpowiednie polecenie w zależności od tego, czy używasz tożsamości zarządzanej, czy jednostki usługi dla agenta ogrodzenia platformy Azure.
Uwaga
W przypadku korzystania z chmury Azure Government należy określić
cloud=
opcję podczas konfigurowania agenta ogrodzenia. Na przykładcloud=usgov
dla chmury platformy Azure dla instytucji rządowych USA. Aby uzyskać szczegółowe informacje na temat obsługi oprogramowania RedHat w chmurze dla instytucji rządowych platformy Azure, zobacz Zasady pomocy technicznej dla klastrów wysokiej dostępności RHEL — Microsoft Azure Virtual Machines jako elementy członkowskie klastra.Napiwek
Opcja
pcmk_host_map
jest wymagana tylko w poleceniu, jeśli nazwy hostów RHEL i nazwy maszyn wirtualnych platformy Azure nie są identyczne. Określ mapowanie w formacie nazwa hosta:vm-name. Aby uzyskać więcej informacji, zobacz Jaki format należy używać do określania mapowań węzłów na urządzeniach ogrodzeniowych w pcmk_host_map?.W przypadku systemu RHEL 7.x użyj następującego polecenia, aby skonfigurować urządzenie ogrodzenia:
sudo pcs stonith create rsc_st_azure fence_azure_arm msi=true resourceGroup="resource group" \ subscriptionId="subscription id" pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \ power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \ op monitor interval=3600
W przypadku systemu RHEL 8.x/9.x użyj następującego polecenia, aby skonfigurować urządzenie ogrodzenia:
# Run following command if you are setting up fence agent on (two-node cluster and pacemaker version greater than 2.0.4-6.el8) OR (HANA scale out) sudo pcs stonith create rsc_st_azure fence_azure_arm msi=true resourceGroup="resource group" \ subscriptionId="subscription id" pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \ power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 pcmk_monitor_retries=4 pcmk_action_limit=3 \ op monitor interval=3600 # Run following command if you are setting up fence agent on (two-node cluster and pacemaker version less than 2.0.4-6.el8) sudo pcs stonith create rsc_st_azure fence_azure_arm msi=true resourceGroup="resource group" \ subscriptionId="subscription id" pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \ power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \ op monitor interval=3600
Jeśli używasz urządzenia ogrodzenia opartego na konfiguracji jednostki usługi, przeczytaj artykuł Change from SPN to MSI for Pacemaker clusters using Azure fencing (Zmiana nazwy SPN na msi dla klastrów Pacemaker przy użyciu ogrodzenia platformy Azure) i dowiedz się, jak konwertować na konfigurację tożsamości zarządzanej.
Operacje monitorowania i ogrodzenia są deserializowane. W związku z tym, jeśli istnieje już uruchomiona operacja monitorowania i jednoczesne zdarzenie ogrodzenia, nie ma opóźnienia w trybie failover klastra, ponieważ operacja monitorowania jest już uruchomiona.
Napiwek
Agent ogrodzenia platformy Azure wymaga łączności wychodzącej z publicznymi punktami końcowymi. Aby uzyskać więcej informacji wraz z możliwymi rozwiązaniami, zobacz Łączność z publicznym punktem końcowym dla maszyn wirtualnych korzystających ze standardowego modułu równoważenia obciążenia.
Konfigurowanie programu Pacemaker dla zaplanowanych zdarzeń platformy Azure
Platforma Azure oferuje zaplanowane zdarzenia. Zaplanowane zdarzenia są wysyłane za pośrednictwem usługi metadanych i umożliwiają aplikacji przygotowanie się do takich zdarzeń.
Agent azure-events-az
zasobów Pacemaker monitoruje zaplanowane zdarzenia platformy Azure. Jeśli wykryto zdarzenia, a agent zasobów ustali, że dostępny jest inny węzeł klastra, ustawia atrybut kondycji klastra.
Gdy atrybut kondycji klastra jest ustawiony dla węzła, ograniczenie lokalizacji wyzwala i wszystkie zasoby o nazwach, które nie zaczynają się od health-
, są migrowane z dala od węzła z zaplanowanym zdarzeniem. Po uwolnieniu węzła klastra od uruchamiania zasobów klastra zaplanowane zdarzenie zostanie potwierdzone i może wykonać jego akcję, taką jak ponowne uruchomienie.
[A] Upewnij się, że pakiet agenta
azure-events-az
jest już zainstalowany i aktualny.RHEL 8.x: sudo dnf info resource-agents RHEL 9.x: sudo dnf info resource-agents-cloud
Minimalne wymagania dotyczące wersji:
- RHEL 8.4:
resource-agents-4.1.1-90.13
- RHEL 8.6:
resource-agents-4.9.0-16.9
- RHEL 8.8:
resource-agents-4.9.0-40.1
- RHEL 9.0:
resource-agents-cloud-4.10.0-9.6
- RHEL 9.2 i nowsze:
resource-agents-cloud-4.10.0-34.1
- RHEL 8.4:
[1] Konfigurowanie zasobów w narzędziu Pacemaker.
#Place the cluster in maintenance mode sudo pcs property set maintenance-mode=true
[1] Ustaw strategię i ograniczenie węzła kondycji klastra Pacemaker.
sudo pcs property set node-health-strategy=custom sudo pcs constraint location 'regexp%!health-.*' \ rule score-attribute='#health-azure' \ defined '#uname'
Ważne
Nie należy definiować żadnych innych zasobów w klastrze, zaczynając od
health-
innych zasobów opisanych w następnych krokach.[1] Ustaw początkową wartość atrybutów klastra. Uruchom polecenie dla każdego węzła klastra i dla środowisk skalowalnego w poziomie, w tym maszyny wirtualnej twórcy większości.
sudo crm_attribute --node prod-cl1-0 --name '#health-azure' --update 0 sudo crm_attribute --node prod-cl1-1 --name '#health-azure' --update 0
[1] Konfigurowanie zasobów w narzędziu Pacemaker. Upewnij się, że zasoby zaczynają się od
health-azure
.sudo pcs resource create health-azure-events \ ocf:heartbeat:azure-events-az \ op monitor interval=10s timeout=240s \ op start timeout=10s start-delay=90s sudo pcs resource clone health-azure-events allow-unhealthy-nodes=true failure-timeout=120s
Wyjmij klaster Pacemaker z trybu konserwacji.
sudo pcs property set maintenance-mode=false
Wyczyść wszelkie błędy podczas włączania i sprawdź,
health-azure-events
czy zasoby zostały pomyślnie uruchomione we wszystkich węzłach klastra.sudo pcs resource cleanup
Wykonywanie zapytania po raz pierwszy dla zaplanowanych zdarzeń może potrwać do dwóch minut. Testy pacemaker z zaplanowanymi zdarzeniami mogą używać akcji ponownego uruchamiania lub ponownego wdrażania dla maszyn wirtualnych klastra. Aby uzyskać więcej informacji, zobacz Zaplanowane zdarzenia.
Opcjonalna konfiguracja ogrodzenia
Napiwek
Ta sekcja ma zastosowanie tylko wtedy, gdy chcesz skonfigurować specjalne urządzenie fence_kdump
ogrodzeniowe .
Jeśli musisz zebrać informacje diagnostyczne w ramach maszyny wirtualnej, może być przydatne skonfigurowanie innego urządzenia ogrodzenia na podstawie agenta fence_kdump
ogrodzenia . fence_kdump
Agent może wykryć, że węzeł wszedł do odzyskiwania awaryjnego kdump i może umożliwić ukończenie usługi odzyskiwania awaryjnego przed wywołaniem innych metod ogrodzenia. Pamiętaj, że fence_kdump
nie jest to zamiennik tradycyjnych mechanizmów ogrodzenia, takich jak SBD lub agent ogrodzenia platformy Azure, gdy używasz maszyn wirtualnych platformy Azure.
Ważne
Należy pamiętać, że jeśli fence_kdump
jest skonfigurowany jako urządzenie ogrodzeniowe pierwszego poziomu, wprowadza opóźnienia w operacjach ogrodzenia i, odpowiednio, opóźnienia w trybie failover zasobów aplikacji.
Jeśli zrzut awaryjny zostanie pomyślnie wykryty, ogrodzenie zostanie opóźnione do momentu zakończenia usługi odzyskiwania po awarii. Jeśli węzeł, który zakończył się niepowodzeniem, jest nieosiągalny lub nie odpowiada, ogrodzenie jest opóźnione o określony czas, skonfigurowaną liczbę iteracji i fence_kdump
limit czasu. Aby uzyskać więcej informacji, zobacz Jak mogę skonfigurować fence_kdump w klastrze Red Hat Pacemaker?.
Może być konieczne dostosowanie proponowanego fence_kdump
limitu czasu do określonego środowiska.
Zalecamy skonfigurowanie ogrodzenia tylko wtedy, gdy jest to konieczne, aby zebrać fence_kdump
diagnostykę na maszynie wirtualnej i zawsze w połączeniu z tradycyjnymi metodami ogrodzenia, takimi jak SBD lub agent ogrodzenia platformy Azure.
Następujące artykuły z bazy wiedzy red hat zawierają ważne informacje dotyczące konfigurowania fence_kdump
ogrodzenia:
- Zobacz Jak mogę skonfigurować fence_kdump w klastrze Red Hat Pacemaker?.
- Zobacz Jak skonfigurować poziomy ogrodzenia i zarządzać nimi w klastrze RHEL za pomocą programu Pacemaker.
- Zobacz fence_kdump kończy się niepowodzeniem z "limitem czasu po X sekundach" w klastrze RHEL 6 lub 7 HA z narzędziami kexec-tools starszymi niż 2.0.14.
- Aby uzyskać informacje na temat zmiany domyślnego limitu czasu, zobacz Jak mogę configure kdump for use with the RHEL 6, 7, 8 HA Add-On?.
- Aby uzyskać informacje na temat ograniczania opóźnienia pracy w trybie failover w przypadku korzystania z
fence_kdump
usługi , zobacz Czy mogę zmniejszyć oczekiwane opóźnienie pracy w trybie failover podczas dodawania konfiguracji fence_kdump?.
Uruchom następujące opcjonalne kroki, aby dodać fence_kdump
jako konfigurację ogrodzenia pierwszego poziomu oprócz konfiguracji agenta ogrodzenia platformy Azure.
[A] Sprawdź, czy
kdump
jest aktywny i skonfigurowany.systemctl is-active kdump # Expected result # active
[A] Zainstaluj agenta ogrodzenia
fence_kdump
.yum install fence-agents-kdump
[1] Utwórz
fence_kdump
urządzenie ogrodzeniowe w klastrze.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="prod-cl1-0 prod-cl1-1" timeout=30
[1] Skonfiguruj poziomy ogrodzenia,
fence_kdump
aby najpierw zaangażował się mechanizm ogrodzenia.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="prod-cl1-0 prod-cl1-1" pcs stonith level add 1 prod-cl1-0 rsc_st_kdump pcs stonith level add 1 prod-cl1-1 rsc_st_kdump # Replace <stonith-resource-name> to the resource name of the STONITH resource configured in your pacemaker cluster (example based on above configuration - sbd or rsc_st_azure) pcs stonith level add 2 prod-cl1-0 <stonith-resource-name> pcs stonith level add 2 prod-cl1-1 <stonith-resource-name> # Check the fencing level configuration pcs stonith level # Example output # Target: prod-cl1-0 # Level 1 - rsc_st_kdump # Level 2 - <stonith-resource-name> # Target: prod-cl1-1 # Level 1 - rsc_st_kdump # Level 2 - <stonith-resource-name>
[A] Zezwalaj na wymagane porty przez
fence_kdump
zaporę.firewall-cmd --add-port=7410/udp firewall-cmd --add-port=7410/udp --permanent
[A] Wykonaj konfigurację
fence_kdump_nodes
,/etc/kdump.conf
aby uniknąćfence_kdump
niepowodzenia z przekroczeniem limitu czasu dla niektórychkexec-tools
wersji. Aby uzyskać więcej informacji, zobacz fence_kdump przekroczenie limitu czasu, gdy fence_kdump_nodes nie jest określony z narzędzi kexec-tools w wersji 2.0.15 lub nowszej , a fence_kdump kończy się niepowodzeniem z "przekroczeniem limitu czasu po X sekundach" w klastrze RHEL 6 lub 7 High Availability z wersjami narzędzi kexec-tools starszymi niż 2.0.14. W tym miejscu przedstawiono przykładową konfigurację klastra z dwoma węzłami. Po wprowadzeniu zmiany w/etc/kdump.conf
pliku należy ponownie wygenerować obraz kdump. Aby ponownie wygenerować, uruchom ponownie usługękdump
.vi /etc/kdump.conf # On node prod-cl1-0 make sure the following line is added fence_kdump_nodes prod-cl1-1 # On node prod-cl1-1 make sure the following line is added fence_kdump_nodes prod-cl1-0 # Restart the service on each node systemctl restart kdump
[A] Upewnij się, że
initramfs
plik obrazu zawierafence_kdump
pliki ihosts
. Aby uzyskać więcej informacji, zobacz Jak mogę skonfigurować fence_kdump w klastrze Red Hat Pacemaker?.lsinitrd /boot/initramfs-$(uname -r)kdump.img | egrep "fence|hosts" # Example output # -rw-r--r-- 1 root root 208 Jun 7 21:42 etc/hosts # -rwxr-xr-x 1 root root 15560 Jun 17 14:59 usr/libexec/fence_kdump_send
Przetestuj konfigurację, rozbijając węzeł. Aby uzyskać więcej informacji, zobacz Jak mogę skonfigurować fence_kdump w klastrze Red Hat Pacemaker?.
Ważne
Jeśli klaster jest już wydajnie używany, należy odpowiednio zaplanować test, ponieważ awaria węzła ma wpływ na aplikację.
echo c > /proc/sysrq-trigger
Następne kroki
- Zobacz Planowanie i implementacja usługi Azure Virtual Machines dla oprogramowania SAP.
- Zobacz Wdrażanie usługi Azure Virtual Machines dla oprogramowania SAP.
- Zobacz Wdrażanie systemu DBMS usługi Azure Virtual Machines dla systemu SAP.
- Aby dowiedzieć się, jak ustanowić wysoką dostępność i zaplanować odzyskiwanie po awarii oprogramowania SAP HANA na maszynach wirtualnych platformy Azure, zobacz Wysoka dostępność oprogramowania SAP HANA na maszynach wirtualnych platformy Azure.