Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 — rozważania dotyczące 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 z wykorzystaniem samodzielnego serwera Enqueue 2 (ENSA2) w programie Pacemaker.
- Konfigurowanie replikacji systemu SAP HANA w klastrze Pacemaker.
- Rozwiązanie Red Hat Enterprise Linux HA dla skalowalności poziomej 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 zabezpieczeń w klastrze pacemaker dla systemu RHEL: agent ochrony Azure, który uruchamia ponownie nieudany węzeł za pomocą interfejsów API Azure, lub można użyć urządzenia SBD.
Ważne
Na platformie Azure klaster wysokiej dostępności RHEL z ogrodzeniem opartym na pamięci masowej (fence_sbd) używa programowo emulowanego watchdoga. Ważne jest, aby zapoznać się z ograniczeniami znanymi dla Software-Emulated Watchdog oraz z zasadami pomocy technicznej dla klastrów wysokiej dostępności RHEL — sbd i fence_sbd przy wyborze SBD jako mechanizmu ogrodzenia.
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:
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 docelowe iSCSI można jednak współdzielić 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 w klastrze pacemaker, co pozwala na tymczasowe wyłączenie jednego z urządzeń SBD (na przykład podczas stosowania poprawek systemu operacyjnego na serwerze docelowym iSCSI). Jeśli chcesz użyć więcej niż jednego urządzenia SBD na rozrusznik, pamiętaj, aby wdrożyć wiele serwerów docelowych dla iSCSI i połączyć jedno urządzenie SBD z każdego serwera docelowego dla 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, aby routing między maszynami wirtualnymi a tymi, które hostują urządzenia SBD, przechodził przez jakiekolwiek inne urządzenia, takie jak wirtualne urządzenie sieciowe (WUS).
Zdarzenia konserwacyjne i inne problemy związane z NVA mogą negatywnie wpłynąć na stabilność i niezawodność całej konfiguracji klastra. Aby uzyskać więcej informacji, zobacz Reguły routingu zdefiniowane przez użytkownika.
SBD z udostępnionym dyskiem 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 współdzielony w Azure z Premium SSD 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, które korzystają z dysku udostępnionego w warstwie Premium 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 używające LRS dla dysku udostępnionego Azure Premium (skuName — Premium_LRS) jest obsługiwane tylko w regionalnym wdrożeniu, takim jak zestaw dostępności.
- Urządzenie SBD korzystające z ZRS dla wspólnego dysku klasy Premium na platformie Azure (skuName — Premium_ZRS) jest zalecane do wdrożeń strefowych, takich jak strefa dostępności, lub w zestawach skalowania z FD=1.
- ZRS dla zarządzanego dysku 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 Pacemaker, z powodu bieżącego limitu maxShares, można używać dysku udostępnionego platformy Azure dla urządzeń SBD w klastrach z maksymalnie pięcioma węzłami na każdą lokację replikacji.
- Nie zalecamy dołączania urządzenia SBD udostępnionego dysku 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 głównej jednostki usługi albo tożsamości zarządzanego systemu (MSI), która umożliwia ponowne uruchomienie nieudanych węzłów za pośrednictwem interfejsów API platformy Azure. Agent ogrodzenia platformy Azure nie wymaga wdrożenia dodatkowych maszyn wirtualnych.
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ć wirtualne maszyny docelowe iSCSI. Docelowe serwery iSCSI można udostępniać dla wielu klastrów 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 Premium dla dysku systemu operacyjnego.
Nie jest konieczne używanie systemu RHEL dla oprogramowania SAP z wysoką dostępnością i usług aktualizacji ani używanie obrazu systemu operacyjnego RHEL dla SAP Apps jako 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, wstawiając odpowiednie nazwy hostów i identyfikatory SID według potrzeb.
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.
Na węzłach klastra połącz się i wykryj urządzenie iSCSI utworzone 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ść
SBD_DELAY_START
jest ustawiona nayes
, usługa SBD opóźni uruchomienie do momentu upływu limitu czasumsgwait
. 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 udostępnionym dyskiem 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
}
Skonfiguruj urządzenie SBD udostępnionego dysku 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
Polecenie wyświetla identyfikator urządzenia podłączonego dysku współdzielonego. 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
Zmiana właściwości urządzenia SBD, włączanie integracji z pacemakerem i zmiana trybu uruchamiania urządzenia 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ść
SBD_DELAY_START
jest ustawiona nayes
, usługa SBD opóźni uruchomienie do momentu upływu limitu czasumsgwait
. 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 izolujące używa tożsamości zarządzanej dla zasobu Azure lub głównego elementu usługi w celu autoryzacji w 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 głównego użytkownika 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.
Utwórz rolę niestandardową 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ć zarządzanej tożsamości lub głównemu podmiotowi 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 swoich subskrypcji, zastępując
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
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": [] }
Przypisz rolę niestandardową
Użyj tożsamości zarządzanej lub głównego użytkownika 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 systemowo dla maszyny wirtualnej wymaga przypisania roli do każdego zasobu maszyn wirtualnych w klastrze. 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 fence-agents, jeśli używasz urządzenia opartego na agencie fence 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 zabezpieczenia 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 Utwórz rolę niestandardową 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. Ten przykład pokazuje, jak używać pliku/etc/hosts
. 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 zawodzi, jeśli nazwy nie są dostępne, co może prowadzić do opóźnień w przełączaniu awaryjnym 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 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
Wskazówka
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
Utwórz urządzenie ochronne w klastrze Pacemaker
Wskazówka
- Aby uniknąć konfliktów typu fencing w klastrze zarządzanym przez Pacemaker z dwoma węzłami, możesz skonfigurować właściwość klastra
priority-fencing-delay
. Ta właściwość wprowadza dodatkowe opóźnienie procesu ogrodzenia węzła, który ma wyższy całkowity priorytet zasobów, gdy wystąpi scenariusz rozdziału systemu. Aby uzyskać więcej informacji, zobacz Czy program Pacemaker ogranicza dostęp do węzła klastra z najmniejszą liczbą uruchomionych zasobów?. - 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ć właściwośćpcmk_delay_max
. - 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 napotkasz następujący błąd w trakcie rozruchu klastra pacemaker, możesz zignorować ten 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 ochronny platformy Azure jako urządzenie zabezpieczające
[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 wsparcia dla RedHat na rządowej platformie chmurowej Azure, zobacz Zasady pomocy technicznej dla klastrów wysokiej dostępności RHEL — Microsoft Azure Virtual Machines jako członkowie klastra.Wskazówka
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 do odgradzania opartego na konfiguracji jednostki usługi, przeczytaj artykuł Change from SPN to MSI for Pacemaker clusters using Azure fencing (Zmiana SPN na MSI dla klastrów Pacemaker przy użyciu odgradzania Azure) i dowiedz się, jak przekonwertować 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 zabezpieczenia, nie ma opóźnienia w przełączaniu awaryjnym klastra, ponieważ operacja monitorowania jest już uruchomiona.
Wskazówka
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ą udostępniane za pośrednictwem usługi metadanych i umożliwiają aplikacji przygotowanie się do takich zdarzeń.
Agent zasobów azure-events-az monitoruje zaplanowane zdarzenia platformy Azure. Jeśli zdarzenia zostaną wykryte i agent zasobów ustali, że inny węzeł klastra jest dostępny, ustawia atrybut kondycji na poziomie węzła na wartość #health-azure
.
Gdy ten specjalny atrybut kondycji klastra jest ustawiony dla węzła, węzeł jest uznawany za w złej kondycji przez klaster, a wszystkie zasoby są migrowane z dala od węzła, którego dotyczy problem. Ograniczenie lokalizacji gwarantuje, że zasoby o nazwie rozpoczynającej się od "health-" są wykluczone, ponieważ agent musi działać w tym stanie złej kondycji. Gdy węzeł klastra, którego dotyczy problem, nie będzie mógł uruchamiać zasobów klastra, zaplanowane zdarzenie może wykonać jego akcję, taką jak ponowne uruchomienie, bez ryzyka uruchomienia zasobów.
Atrybut #heath-azure
jest ponownie ustawiany na 0
podczas uruchamiania modułu pacemaker, po przetworzeniu wszystkich zdarzeń, oznaczając węzeł jako ponownie zdrowy.
[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 ograniczenia węzła zdrowia 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, które zaczynają się od
health-
, chyba że są one opisane w następnych krokach.[1] Ustaw początkową wartość atrybutów klastra. Uruchom polecenie dla każdego węzła klastra i dla środowisk rozproszonych, w tym maszyny wirtualnej zapewniającej większość.
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 \ meta failure-timeout=120s \ op monitor interval=10s timeout=240s \ op start timeout=10s start-delay=90s sudo pcs resource clone health-azure-events allow-unhealthy-nodes=true
Usuń klaster Pacemaker z trybu konserwacji.
sudo pcs property set maintenance-mode=false
Wyczyść wszelkie błędy podczas włączania i sprawdź, czy zasoby
health-azure-events
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 uruchomienia i wdrożenia dla maszyn wirtualnych w klastrze. Aby uzyskać więcej informacji, zobacz Zaplanowane zdarzenia.
Opcjonalna konfiguracja ogrodzenia
Wskazówka
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 do odgradzania na podstawie agenta ogrodzenia fence_kdump
.
fence_kdump
Agent może wykryć, że węzeł wszedł w tryb odzyskiwania po awarii kdump i może pozwolić na ukończenie usługi odzyskiwania awaryjnego przed wywołaniem innych metod izolacji. 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 skonfigurowane jako urządzenie odgradzające pierwszego poziomu, powoduje to opóźnienia w operacjach odgradzania, a co za tym idzie, opóźnienia w przełączaniu awaryjnym zasobów aplikacji.
Jeśli zrzut awaryjny zostanie pomyślnie wykryty, izolacja zostanie opóźniona aż do zakończenia usługi odzyskiwania po awarii. Jeśli węzeł, który zakończył się niepowodzeniem, jest nieosiągalny lub nie odpowiada, izolacja jest opóźniona o określony z góry 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 fence_kdump
zabezpieczenia tylko wtedy, gdy jest to niezbędne do zebrania danych diagnostycznych na maszynie wirtualnej i zawsze w połączeniu z tradycyjnymi metodami zabezpieczeń, takimi jak SBD lub agent zabezpieczenia 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 zawodzi z "timeoutem 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ę skonfigurować kdump do użycia z dodatkiem RHEL 6, 7, 8 HA?.
- Aby uzyskać informacje na temat redukcji opóźnienia przy przełączeniu awaryjnym podczas korzystania z
fence_kdump
, zobacz w Czy mogę zmniejszyć oczekiwane opóźnienie przy przełączeniu awaryjnym 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 mechanizm ogrodzenia został uruchomiony jako pierwszy.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 w zaporze
fence_kdump
.firewall-cmd --add-port=7410/udp firewall-cmd --add-port=7410/udp --permanent
[A] Wykonaj konfigurację w
fence_kdump_nodes
, aby uniknąć sytuacji, w której/etc/kdump.conf
kończy się niepowodzeniem z powodu upływu limitu czasu w niektórych wersjachfence_kdump
. Aby uzyskać więcej informacji, zobacz fence_kdump przekracza limit czasu, gdy fence_kdump_nodes nie jest określony, z wersją narzędzi kexec-tools 2.0.15 lub nowszą oraz fence_kdump kończy się niepowodzeniem z "przekroczeniem limitu czasu po X sekundach" w klastrze RHEL 6 lub 7 High Availability z wersjami kexec-tools starszymi niż 2.0.14. W tym miejscu przedstawiono przykładową konfigurację klastra z dwoma węzłami. Po dokonaniu zmiany w/etc/kdump.conf
trzeba ponownie wygenerować obraz kdump. Uruchom ponownie usługękdump
, aby odtworzyć ją na nowo.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 zawiera plikifence_kdump
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.