Notatka
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.
Ten artykuł wyjaśnia, jak skonfigurować i uruchomić podstawowy dwuwęzłowy klaster Pacemaker w systemie Red Hat Enterprise Linux (RHEL). Instrukcje obejmują RHEL 8.6+, RHEL 9.x, oraz RHEL 10.x.
Wymagania wstępne
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 Azure
Dokumentacja systemu RHEL dla ofert SAP
Omówienie
Ten przewodnik zakłada, że już wdrożyłeś wymaganą grupę zasobów, sieć wirtualną Azure, podsieć oraz maszyny wirtualne (VM).
Klastry działające w systemie Linux wymagają agenta odgradzania do odgradzania niesprawnych węzłów. Aby wykonać to zadanie na Azure, użyj jednej z następujących metod:
- Storage Based Death (SBD) w usłudze Azure Shared Disk
- Storage Based Death (SBD) z targetami iSCSI
- Azure Fencing Agent
Uwaga
W tym dokumencie użyto następujących przedrostków:
- [A]: Dotyczy wszystkich węzłów.
- [1]: Dotyczy tylko węzła 1.
- [2]: Dotyczy tylko węzła 2.
Ważne
Na platformie Azure klastry wysokiej dostępności RHEL z mechanizmem fencing opartym na magazynie danych (fence_sbd) korzystają z programowo emulowanego mechanizmu watchdog. Zapoznaj się z poniższą dokumentacją podczas korzystania z SBD.
Korzystanie z SBD z dyskiem współdzielonym Azure
Korzystając z Azure Shared Disks, możesz zamontować ten sam dysk na wszystkich maszynach wirtualnych należących do klastra. Możesz hostować swoje urządzenie SBD na tym współdzielonym dysku bez dodatkowych wymagań infrastrukturalnych.
Benefits
- Zapewnia natywną opcję współdzielonego urządzenia blokowego Azure dla SBD bez konieczności korzystania z dodatkowych zasobów.
- Maszyny wirtualne bezpośrednio podłączają zarządzany dysk, zmniejszając zależność od dodatkowych aspektów sieciowych.
Istotne zagadnienia
- Możesz używać dysku współdzielonego platformy Azure o jednostce SKU
Premium SSDjako urządzenia SBD. - Przeglądaj listę obsługiwanych systemów operacyjnych.
- Urządzenia SBD korzystające z Azure premium shared disk obsługują lokalnie redundantną pamięć masową (LRS) oraz magazynowanie strefowe redundantne (ZRS).
- W zależności od typu wdrożenia wybierz odpowiedni magazyn redundantny na potrzeby dysku udostępnianego w Azure jako urządzenia SBD.
- Urządzenie SBD, które używa mechanizmu LRS dla dysku współdzielonego Azure Premium (skuName - Premium_LRS), obsługuje tylko wdrożenia w ramach zestawu dostępności.
- W przypadku wdrożeń w strefach dostępności zaleca się urządzenie SBD korzystające z ZRS dla współdzielonego dysku Azure Premium (skuName - Premium_ZRS).
- Dysk udostępniony 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. Na przykład możesz użyć rozmiarów dysków P1 lub P2 dla swojego urządzenia SBD na klastrze dwuwęzłowym, takim jak SAP ASCS/ERS lub skalowanie SAP HANA.
- W przypadku klastrów liczących więcej niż dwa węzły zobacz opisaną w dokumentacji wartość parametru maxShares dla wybranego dysku.
- Nie podłączaj urządzenia SBD z Azure na różnych klastrach Pacemaker.
- Jeśli używasz wielu urządzeń SBD z dyskami udostępnionymi Azure, sprawdź limit maksymalnej liczby dysków danych, które mogą być dołączone do maszyny wirtualnej.
- Aby uzyskać więcej informacji na temat ograniczeń dotyczących dysków udostępnionych Azure, uważnie zapoznaj się z sekcją "Ograniczenia" Azure dokumentacją dysku udostępnionego.
Wykorzystanie SBD z zasobami docelowymi iSCSI
To rozwiązanie wymaga hostowania celów Internet Small Computer System Interface (iSCSI) na co najmniej jednej dodatkowej maszynie wirtualnej (VM).
Benefits
- Te serwery hostów iSCSI mogą również udostępniać obiekty docelowe iSCSI innym klastrom Pacemaker w tym samym regionie.
- Jeśli już korzystasz z nich lokalnie, nie wymagają żadnych zmian w sposobie obsługi klastra Pacemaker.
Istotne zagadnienia
- Aby zapewnić najwyższy poziom odporności klastra, musisz użyć trzech serwerów iSCSI.
- Korzystanie tylko z jednego serwera powoduje pojedynczy punkt awarii, który uniemożliwia ogrodzenie klastra, jeśli jest niedostępny.
- Pacemaker nie pozwala na fencing, jeśli masz tylko dwa węzły docelowe, a jeden z nich jest niedostępny.
- Docelowe serwery iSCSI muszą znajdować się w tym samym regionie co Twoje klastry.
- Trasowanie sieci między klastrami a serwerami iSCSI nie może przechodzić przez żadne urządzenia sieciowe nieredundantne (takie jak Wirtualne Urządzenie Sieciowe).
- Zdarzenia konserwacyjne i inne problemy z urządzeniami sieciowymi mogą negatywnie wpływać na stabilność i niezawodność całej konfiguracji klastra.
Korzystanie z agenta Fence platformy Azure
Korzystając z agenta Azure Fence, klaster może ogrodzić węzły, wywołując bezpośrednio API Azure, aby ponownie uruchomić uszkodzone węzły.
Benefits
- Nie potrzeba dodatkowych zasobów.
- Tożsamości zarządzane eliminują potrzebę zarządzania poświadczeniami.
Istotne zagadnienia
- Do uwierzytelniania używaj Managed Identities. Jeśli obecnie korzystasz z service principal, zaktualizuj agenta Azure Fence z SPN na MSI.
- Agent Azure fence wymaga łączności wychodzącej do publicznych punktów końcowych Azure. 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.
- 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.
Wdróż dysk współdzielony platformy Azure dla SBD
Aby utworzyć i dołączyć współdzielony dysk Azure za pomocą PowerShell, wykonaj następujące polecenia. Jeśli chcesz wdrażać zasoby za pomocą Azure CLI lub portalu Azure, zobacz Deploy a ZRS disk.
$ResourceGroup = "<ResourceGroupName>"
$DiskSizeInGB = 4
$DiskName = "<SBDDiskName>"
# Must be Equal to or greater than the Number of Nodes in the Cluster
$ShareNodes = 2
# Options are "Premium_LRS" or "Premium_ZRS"
$SKUName = "<DiskSKU>"
# VMs to attach the disk to
$vmNames = @("sap-cl1", "sap-cl2")
# Lun to attach the disk to. You should use the same lun on all servers in the cluster.
$lunNumber = <lunNumber>
$diskConfig = New-AzDiskConfig -Location $Location -SkuName $SkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes
$dataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $diskConfig
# Attach SBD disk to cluster VMs
foreach ($vmName in $vmNames)
{
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun $lunNumber
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup -Verbose
}
Użyj obiektów docelowych iSCSI
Skonfiguruj serwery docelowe iSCSI
Wdroż trzy maszyny wirtualne działające na obsługiwanej wersji systemu operacyjnego RHEL. Maszyny wirtualne nie muszą być duże. Rozmiary maszyn wirtualnych, takie jak Standard_E2s czy Standard_D2s, są wystarczające.
Uwaga
Nie musisz używać ani RHEL for SAP with HA and Update Services, ani obrazu systemu RHEL for SAP Apps OS dla serwera docelowego iSCSI. Możesz użyć standardowego obrazu systemu operacyjnego RHEL. Jednak cykl życia wsparcia różni się między różnymi wersjami produktów systemu operacyjnego.
Zainstaluj najnowsze aktualizacje i zrestartuj komputer, jeśli trzeba.
sudo dnf -y updateZainstaluj pakiet docelowy iSCSI.
sudo dnf install -y targetcliWłącz i uruchom usługę iSCSI.
sudo systemctl start target sudo systemctl enable targetOtwórz port w zaporze.
sudo firewall-cmd --add-port=3260/tcp --permanent sudo firewall-cmd --reload
Tworzenie celów iSCSI
Dla każdego klastra musisz przydzielić dysk iSCSI na każdym serwerze iSCSI, a następnie przyzwolić każdemu węzłowi klastra dostęp do tego dysku. W tym przykładzie tworzysz dyski dla dwóch różnych klastrów:
- ascsnw1: Klaster ASCS/ERS dla NW1
- hdbnw1: Klaster baz danych HANA dla NW1
- sap-cl1 i sap-cl2: Nazwy hostów dla węzłów klastrowych NW1 ASCS/ERS
- sap-db1 i sap-db2: Nazwy hostów dla węzłów klastrowych NW1 HANA
- Utwórz folder główny dla wszystkich urządzeń SBD.
sudo mkdir /sbd - Utwórz urządzenie SBD dla pierwszego klastra (ascsnw1).
# Create Storage Object sudo targetcli backstores/fileio create sbdascsnw1 /sbd/sbdascsnw1 50M write_back=false # Create iSCSI Target sudo targetcli iscsi/ create iqn.2006-04.ascsnw1.local:ascsnw1 # Creates the LUN and attaches it to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/luns/ create /backstores/fileio/sbdascsnw1 # Grant Cluster Node 1 (sap-cl1) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.sap-cl1.local:sap-cl1 # Grant Cluster Node 2 (sap-cl2) access to the iSCSI Target 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 drugiego klastra (hdbnw1).
# Create Storage Object sudo targetcli backstores/fileio create sbdhdbnw1 /sbd/sbdhdbnw1 50M write_back=false # Create iSCSI Target sudo targetcli iscsi/ create iqn.2006-04.hdbnw1.local:hdbnw1 # Creates the LUN and attaches it to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/luns/ create /backstores/fileio/sbdhdbnw1 # Grant Cluster Node 1 (sap-db1) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/acls/ create iqn.2006-04.sap-db1.local:sap-db1 # Grant Cluster Node 2 (sap-db2) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/acls/ create iqn.2006-04.sap-db2.local:sap-db2 - Zapisz konfigurację.
sudo targetcli saveconfig - Sprawdź konfigurację.
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- sbdhdbnw1 ....................................... [/sbd/sbdhdbnw1 (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.hdbnw1.local:hdbnw1 ......................................................... [TPGs: 1] | | o- tpg1 ..................................................................... [no-gen-acls, no-auth] | | o- acls ................................................................................ [ACLs: 2] | | | o- iqn.2006-04.sap-db1.local:sap-db1 .......................................... [Mapped LUNs: 1] | | | | o- mapped_lun0 ..................................................... [lun0 fileio/sbdhdb (rw)] | | | o- iqn.2006-04.sap-db2.local:sap-db2 .......................................... [Mapped LUNs: 1] | | | o- mapped_lun0 ..................................................... [lun0 fileio/sbdhdb (rw)] | | o- luns ................................................................................ [LUNs: 1] | | | o- lun0 ................................. [fileio/sbdhdbnw1 (/sbd/sbdhdbnw1) (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/sbdascsnw1 (rw)] | | o- iqn.2006-04.sap-cl2.local:sap-cl2 .......................................... [Mapped LUNs: 1] | | o- mapped_lun0 ................................................. [lun0 fileio/sbdascsnw1 (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]
Skonfiguruj agenta ogrodzenia platformy Azure
Tworzenie tożsamości
Aby utworzyć zarządzaną tożsamość (MSI), należy utworzyć systemowo przypisaną zarządzaną tożsamość dla każdej maszyny wirtualnej w klastrze. Obecnie nie są obsługiwane tożsamości zarządzane przypisane przez użytkownika.
Stwórz niestandardową rolę.
Aby wykonywać operacje izolowania względem Twoich maszyn wirtualnych, Twoja tożsamość musi mieć uprawnienia przyznane za pomocą mechanizmu Azure RBAC. Aby spełnić wymagania Modelu Bezpieczeństwa Najmniej Uprzywilejowanego Dostępu (LPA), stwórz niestandardową rolę RBAC.
Użyj poniższej definicji swojej roli, zastępując identyfikator(y) subskrypcji tam, gdzie jest to potrzebne:
{ "Name": "Linux Fence Agent", "description": "Allowed to power-off and start virtual machines", "assignableScopes": [ "/subscriptions/<Subscription 1 ID (GUID)>", "/subscriptions/<Subscription N ID (GUID)>" ], "actions": [ "Microsoft.Compute/*/read", "Microsoft.Compute/virtualMachines/powerOff/action", "Microsoft.Compute/virtualMachines/start/action" ], "notActions": [], "dataActions": [], "notDataActions": [] }Przypisz własną rolę do swoich tożsamości.
Dla każdej maszyny wirtualnej w klastrze przypisz jej tożsamość zarządzaną do niestandardowej roli „Linux Fence Agent” dla każdej maszyny wirtualnej w klastrze, w tym dla niej samej. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie dostępu tożsamości zarządzanej do zasobu przy użyciu witryny Azure Portal.
Ważne
Pamiętaj, że przydzielenie i usunięcie autoryzacji z tożsamościami zarządzanymi może zostać opóźnione do momentu wejścia w życie.
Utwórz i skonfiguruj klaster
[A] Zaktualizuj system operacyjny i zrestartuj, jeśli zajdzie taka potrzeba.
sudo dnf -y update[A] Instalacja wymaganych pakietów klastrowych.
sudo dnf install -y nmap-ncat pcs pacemaker resource-agents resource-agents-cloud[A] Instalacja wymaganych pakietów ogrodzeń.
sudo dnf install -y sbd fence-agents-sbdsudo dnf install -y sbd fence-agents-sbd iscsi-initiator-utilssudo dnf install -y fence-agents-azure-arm[A] Skonfiguruj DNS.
Można użyć serwera DNS lub zmodyfikować
/etc/hostsna wszystkich węzłach. Ten przykład pokazuje, jak używać pliku/etc/hosts.Zaktualizuj wpisy, aby pasowały do Twoich adresów IP i nazw hostów.
sudo vi /etc/hosts [...] # IP address of cluster node 1 10.27.0.6 sap-cl1 # IP address of cluster node 2 10.27.0.7 sap-cl2sudo vi /etc/hosts [...] # IP address of cluster node 1 10.0.0.6 sap-cl1 # IP address of cluster node 2 10.0.0.7 sap-cl2 # IP address of iSCSI Target Host Server 1 10.0.0.17 sbd-iscsi1 # IP address of iSCSI Target Host Server 1 10.0.0.18 sbd-iscsi2 # IP address of iSCSI Target Host Server 1 10.0.0.19 sbd-iscsi3[A] Zaktualizuj hasło,
haclusteraby było takie samo na wszystkich węzłach.sudo passwd hacluster[A] Zaktualizuj zaporę.
sudo firewall-cmd --add-service=high-availability --permanent sudo firewall-cmd --reload[A] Włącz usługi Pacemaker.
sudo systemctl start pcsd.service sudo systemctl enable pcsd.service[1] Stwórz klaster.
sudo pcs host auth sap-cl1 sap-cl2 -u hacluster sudo pcs cluster setup ascsnw1 sap-cl1 sap-cl2 totem token=30000 sudo pcs cluster start --allSkonfiguruj opóźnienie uruchamiania rozrusznika serca.
Uruchomienie Pacemakera natychmiast po rozruchu systemu może spowodować, że węzeł ponownie dołączy do klastra, zanim zakończy się przełączenie awaryjne, uniemożliwiając to przełączenie lub opóźniając odzyskiwanie sprawności. Aby rozwiązać ten problem, użyj usługi timera, która opóźni uruchomienie rozrusznika po restarcie.
-
[A] Konfiguruj usługę timera.
sudo vi /etc/systemd/system/pacemaker.timer[Unit] Description=Delay start of pacemaker.service after boot [Timer] OnBootSec=186 Unit=pacemaker.service [Install] WantedBy=timers.target -
[A] Włącz usługę timera.
sudo systemctl daemon-reload sudo systemctl enable pacemaker.timer -
[1] Wyłącz usługi rozruszników serca.
sudo pcs cluster disable --all
-
[A] Konfiguruj usługę timera.
Zweryfikowaj klaster.
-
[1] Zweryfikuj klaster Pacemaker.
sudo pcs status Cluster name: ascsnw1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 3.0.0-5.1.el10_0-8818a21) - partition with quorum * Last updated: Tue May 19 22:15:08 2026 on sap-cl1 * Last change: Tue Apr 21 23:11:34 2026 by root via root on sap-cl1 * 2 nodes configured * 0 resource instances configured Node List: * Online: [ sap-cl1 sap-cl2 ] Full List of Resources: Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled -
[A] Walidacja usług.
systemctl list-unit-files pacemaker.timer pacemaker.service corosync.service pcsd.serviceUNIT FILE STATE PRESET corosync.service disabled disabled pacemaker.service disabled disabled pacemaker.timer enabled disabled pcsd.service enabled disabled
-
[1] Zweryfikuj klaster Pacemaker.
Konfiguruj ogrodzenie
-
[A] Włącz usługę SBD.
sudo systemctl enable sbd -
[A] Włącz system nadzorujący oprogramowanie.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[A] Odkryj identyfikator urządzenia iSCSI.
- Określ punkt montażu na podstawie numeru LUN
ls -l /dev/disk/azure/scsi1/lun1 lrwxrwxrwx. 1 root root 12 Apr 16 20:22 /dev/disk/azure/scsi1/lun1 -> ../../../sdb - Pobierz identyfikator urządzenia iSCSI z mount.
ls -l /dev/disk/by-id/scsi-3* | grep -i sdb lrwxrwxrwx. 1 root root 9 Apr 16 20:22 /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -> ../../sdb
- Określ punkt montażu na podstawie numeru LUN
-
[1] Tworzenie urządzenia SBD.
sudo sbd -d /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -1 60 -4 120 create
-
[1] Dodaj urządzenie SBD do klastra.
sudo pcs stonith create sbd fence_sbd devices=/dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 op monitor interval=600 timeout=15 -
[1] Zmień ustawienia konfiguracji SBD.
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] Zweryfikowaj plik konfiguracyjny SBD.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
-
[A] Włącz wymagane usługi.
sudo systemctl enable sbd iscsi iscsid -
[A] Włącz system nadzorujący oprogramowanie.
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[1] Zaktualizuj
InitiatorNamedla węzła 1.sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1 -
[2] Zaktualizuj
InitiatorNamedla węzła 2.# Node 2 sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2 -
[A] Zrestartuj usługi iSCSI.
sudo systemctl restart iscsi iscsid -
[A] Zamontuj cele iSCSI ze wszystkich serwerów hostów iSCSI.
for hostServer in sbd-iscsi1 sbd-iscsi2 sbd-iscsi3; do iscsiadm -m discovery --type=st --portal=${hostServer}:3260 iscsiadm -m node -T iqn.2006-04.ascsnw1.local:ascsnw1 --login --portal=${hostServer}:3260 iscsiadm -m node --portal=${hostServer}:3260 -T iqn.2006-04.ascsnw1.local:ascsnw1 --op=update --name=node.startup --value=automatic done -
[A] Odkryj identyfikatory urządzeń iSCSI.
- Określ punkty montażowe iSCSI.
lsscsi [0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda [1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb [2:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdc [3:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdd [4:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sde - Zdobądź identyfikatory urządzeń iSCSI.
ls -l /dev/disk/by-id/scsi-3* | grep sd[c,d,e] lrwxrwxrwx 1 root root 9 Jul 21 18:02 /dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528 -> ../../sdd lrwxrwxrwx 1 root root 9 Jul 21 17:50 /dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff -> ../../sdc lrwxrwxrwx 1 root root 9 Jul 21 18:04 /dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 -> ../../sde
- Określ punkty montażowe iSCSI.
-
[1] Stwórz urządzenia SBD.
sudo sbd -d /dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528 -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 -1 60 -4 120 create
-
[1] Dodaj urządzenia SBD do klastra.
sudo pcs stonith create sbd fence_sbd \ devices=/dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528,/dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff,/dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 \ op monitor interval=600 timeout=120 -
[1] Zmień ustawienia konfiguracji SBD.
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] Zweryfikowaj plik konfiguracyjny SBD.
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
[1] Configure Azure Fence Agent.
Uwaga
Podczas korzystania z chmury Azure Government należy określić opcję
cloud=podczas konfigurowania agenta Azure Fence Agent. Na przykładcloud=usgovdla chmury Azure dla instytucji rządowych USA.sudo pcs stonith create rsc_st_azure fence_azure_arm msi=true \ resourceGroup="<ResourceGroupName>" subscriptionId="<SubscriptionID>" \ pcmk_host_map="sap-cl1:<AzureVMNameCL1>;sap-cl2:<AzureVMNameCL2>" \ power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 \ pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \ meta failure-timeout=120s op monitor interval=3600 timeout=120[1] Skonfiguruj klaster dla agenta ogrodzenia platformy Azure.
sudo pcs property set stonith-enabled=true sudo pcs property set stonith-timeout=900
Tworzenie klastra Pacemaker składającego się z więcej niż dwóch węzłów
Jeśli budujesz większy klaster, miej na uwadze następujące kwestie:
[1] Dostosuj konfigurację gromady.
Wartości
Votequorum - Flags - 2NodeiVotequorum - Expected votessą automatycznie aktualizowane, gdy dodasz trzeci węzeł lub kolejne. Sprawdź, czy flaga2Nodejest nieobecna i jest równaVotequorum - Expected votesliczbie węzłów w klastrze.sudo pcs quorum status Quorum information ------------------ [...] Votequorum information ---------------------- Expected votes: 3 Highest expected: 3 Total votes: 3 Quorum: 2 Flags: Quorate WaitForAll Membership information ---------------------- [...]Dostosuj konfigurację ogrodzenia.
sudo crm resource param stonith-sbd delete pcmk_delay_max sudo crm resource param stonith-sbd set pcmk_action_limit -1sudo crm resource param rsc_st_azure delete pcmk_delay_max sudo crm resource param rsc_st_azure pcmk_action_limit -1
Konfigurowanie programu Pacemaker pod kątem zaplanowanych zdarzeń Azure
Scheduled Events to usługa metadanych Azure, która daje Twojej aplikacji czas na przygotowanie się do konserwacji maszyny wirtualnej. Dostarcza informacji o nadchodzących wydarzeniach konserwacyjnych, takich jak restart, aby aplikacja mogła się na nie przygotować i ograniczyć zakłócenia.
Agent zasobów azure-events-az monitoruje tę usługę metadanych. Gdy agent wykryje zdarzenia i ustali, że dostępny jest inny węzeł klastra, ustawia atrybut kondycji na poziomie węzła #health-azure na -1000000. Ta wartość powoduje, że klaster uznaje węzeł za niezdrowy i migruje zasoby z dala od dotkniętego węzła. Ograniczenie lokalizacji zapewnia, że zasoby zaczynające się od health- są wykluczone, ponieważ agent azure-events-az nadal musi działać na obu węzłach. Gdy dotknięty węzeł klastra jest wolny od aktywnych zasobów klastra, agent powiadamia usługę metadanych i zaplanowane zdarzenie może być kontynuowane. Po zakończeniu wszystkich zdarzeń agent zasobów przywraca #health-azure atrybut do 0, oznaczając węzeł ponownie jako zdrowy.
Ważne
Wcześniej w tym dokumencie opisano użycie agenta zasobów azure-events. Nowy agent azure-events-az w pełni obsługuje środowiska Azure wdrożone w różnych strefach dostępności. Użyj nowszego agenta azure-events-az dla wszystkich wysoko dostępnych systemów SAP z Pacemakerem.
Zainstaluj i zaktualizuj
resource-agentspakiet.sudo dnf install -y resource-agents[1] Umieść klaster w trybie konserwacji.
sudo pcs property set maintenance-mode=true[1] Ustaw strategię i ograniczenie węzła zdrowia klastra Pacemaker.
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.sudo pcs property set node-health-strategy=custom sudo pcs constraint location 'regexp%!health-.*' \ rule score-attribute='#health-azure' \ "defined #uname"[1] Ustaw początkową wartość atrybutów klastra.
Uruchom polecenie dla każdego węzła klastra. W środowiskach skalowanych horyzontalnie dołącz maszynę wirtualną majority maker.
# Node 1 sudo crm_attribute --node sap-cl1 --name '#health-azure' --update 0 # Node 2 sudo crm_attribute --node sap-cl2 --name '#health-azure' --update 0 # Node N sudo crm_attribute --node sap-clN --name '#health-azure' --update 0[1] Konfigurowanie zasobów w narzędziu Pacemaker. Zasoby muszą zaczynać 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=90ssudo pcs resource clone health-azure-events meta allow-unhealthy-nodes=trueWyjmij klaster rozruszników z trybu konserwacji i usuń wszelkie błędy
sudo pcs property set maintenance-mode=false sudo pcs resource cleanupSprawdź, czy
health-azure-eventsuruchamia się pomyślnie na wszystkich węzłach.sudo pcs status Cluster name: ascsnw1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 3.0.0-5.1.el10_0-8818a21) - partition with quorum * Last updated: Tue May 19 22:15:08 2026 on sap-cl1 * Last change: Tue Apr 21 23:11:34 2026 by root via root on sap-cl1 * 2 nodes configured * 3 resource instances configured Node List: * Online: [ sap-cl1 sap-cl2 ] Full List of Resources: * sbd (stonith:fence_sbd): Started sap-cl1 * Clone Set: health-azure-events-clone [health-azure-events]: * Started: [ sap-cl1 sap-cl2 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled sbd: active/enabledWykonywanie 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_kdumpogrodzeniowe .
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. Należy pamiętać, że fence_kdump nie zastępuje tradycyjnych mechanizmów ogrodzenia, takich jak SBD lub agent fencing dla Azure, gdy używasz maszyn wirtualnych 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.
Może być konieczne dostosowanie proponowanego fence_kdump limitu czasu do określonego środowiska.
Zalecamy skonfigurowanie fence_kdump fencing tylko wtedy, gdy jest to konieczne do zbierania diagnostyki na maszynie wirtualnej i zawsze w połączeniu z tradycyjnymi metodami fencing, takimi jak SBD lub Azure fence agent.
Następujące artykuły z bazy wiedzy red hat zawierają ważne informacje dotyczące konfigurowania fence_kdump ogrodzenia:
- Zobacz Jak skonfigurować fence_kdump w klastrze Red Hat Pacemaker?
- Zobacz Jak skonfigurować poziomy ogrodzenia i zarządzać nimi w klastrze RHEL za pomocą programu Pacemaker.
- Aby uzyskać informacje na temat zmiany domyślnego limitu czasu, zobacz Jak skonfigurować kdump do użycia z dodatkiem RHEL 6, 7, 8 HA?
- Aby uzyskać informacje na temat ograniczania opóźnienia przełączenia awaryjnego w przypadku korzystania z
fence_kdump, zobacz Czy mogę zmniejszyć oczekiwane opóźnienie przełączenia awaryjnego 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 Azure.
[A] Sprawdź, czy
kdumpjest aktywny i skonfigurowany.systemctl is-active kdump # Expected result # active[A] Zainstaluj agenta ogrodzenia
fence_kdump.sudo dnf install -y fence-agents-kdump[1] Utwórz
fence_kdumpurządzenie ogrodzeniowe w klastrze.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" timeout=30[1] Skonfiguruj poziomy ogrodzenia,
fence_kdumpaby mechanizm ogrodzenia został uruchomiony jako pierwszy.pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" pcs stonith level add 1 sap-cl1 rsc_st_kdump pcs stonith level add 1 sap-cl2 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 sap-cl1 <stonith-resource-name> pcs stonith level add 2 sap-cl2 <stonith-resource-name> # Check the fencing level configuration pcs stonith level # Example output # Target: sap-cl1 # Level 1 - rsc_st_kdump # Level 2 - <stonith-resource-name> # Target: sap-cl2 # 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 --permanent firewall-cmd --reload[A] Wykonaj konfigurację w
fence_kdump_nodes, aby uniknąć sytuacji, w której/etc/kdump.confkończy się niepowodzeniem z powodu upływu limitu czasu w niektórych wersjachfence_kdump. Więcej informacji znajdziesz w fence_kdump przestaje odpowiadać, gdy nie określono fence_kdump_nodes w narzędziu kexec-tools w wersji 2.0.15 lub nowszej. W tym miejscu przedstawiono przykładową konfigurację klastra z dwoma węzłami. Po dokonaniu zmiany w/etc/kdump.conftrzeba 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
initramfsplik obrazu zawiera plikifence_kdumpihosts.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_sendPrzetestuj konfigurację, rozbijając węzeł.
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
- Planowanie i implementacja usługi Azure Virtual Machines dla oprogramowania SAP.
- Wdrażanie usługi Azure Virtual Machines dla oprogramowania SAP.
- Wdrożenie usługi Azure Virtual Machines DBMS dla systemu SAP.
- Wysoka dostępność dla NFS Simple Mount na Azure VMs na Red Hat Enterprise Linux.
- Aby dowiedzieć się, jak ustanowić wysoką dostępność i plan odzyskiwania po awarii oprogramowania SAP HANA na maszynach wirtualnych platformy Azure, zobacz Wysoka dostępność oprogramowania SAP HANA na maszynach wirtualnych platformy Azure.