Konfigurowanie programu Pacemaker na serwerze SUSE Linux Enterprise Server na platformie Azure

W tym artykule omówiono sposób konfigurowania programu Pacemaker w systemie SUSE Linux Enterprise Server (SLES) na platformie Azure.

Omówienie

Na platformie Azure dostępne są dwie opcje konfigurowania ogrodzenia w klastrze Pacemaker dla systemu SLES. Możesz użyć agenta 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żesz użyć urządzenia SBD.

Korzystanie z urządzenia SBD

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 Computer 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ą ż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 program Pacemaker, należy wdrożyć wiele serwerów obiektów docelowych iSCSI i połączyć jeden SBD z każdego serwera docelowego iSCSI. Zalecamy użycie jednego urządzenia SBD lub trzech. Program Pacemaker nie może automatycznie ogrodzać węzła klastra, jeśli skonfigurowano tylko dwa urządzenia SBD i jedna z nich jest niedostępna. 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.

    Diagram programu Pacemaker w systemie SLES — omówienie.

    Ważne

    Podczas planowania i wdrażania węzłów klastrowanych programu Pacemaker 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ć dodatkowych maszyn wirtualnych.

    Diagram urządzenia SBD dysku udostępnionego platformy Azure dla klastra SLES Pacemaker.

    Poniżej przedstawiono kilka ważnych zagadnień dotyczących urządzeń SBD podczas korzystania z 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 SLES High Availability 15 SP01 lub nowszym.
    • Urządzenia SBD korzystające z dysku udostępnionego usługi Azure Premium 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 udostępnionego dysku azure Premium (skuName — Premium_LRS) jest obsługiwane tylko w przypadku wdrożenia w zestawie 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 we wdrożeniu w strefach dostępności.
    • Magazyn ZRS dla dysku zarządzanego jest obecnie niedostępny we wszystkich regionach ze strefami dostępności. Aby uzyskać więcej informacji, zapoznaj się z sekcją "Ograniczenia" magazynu ZRS w temacie Opcje nadmiarowości dla dysków zarządzanych.
    • 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 można użyć dysku udostępnionego platformy Azure dla urządzeń SBD w klastrach z maksymalnie czterema 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, która zarządza ponownym uruchamianiem 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ć w wielu klastrach Pacemaker.

  1. Wdróż nowe maszyny wirtualne SLES 12 SP3 lub nowsze i połącz się z nimi za pośrednictwem protokołu SSH. Maszyny nie muszą być duże. Rozmiary maszyn wirtualnych Standard_E2s_v3 lub Standard_D2s_v3 są wystarczające. Pamiętaj, aby używać magazynu w warstwie Premium dla dysku systemu operacyjnego.

  2. Na maszynach wirtualnych obiektów docelowych iSCSI uruchom następujące polecenia:

    a. Zaktualizuj usługę SLES.

    sudo zypper update
    

    Uwaga

    Po uaktualnieniu lub zaktualizowaniu systemu operacyjnego może być konieczne ponowne uruchomienie systemu operacyjnego.

    b. Usuń pakiety.

    Aby uniknąć znanego problemu z elementami targetcli i SLES 12 SP3, odinstaluj następujące pakiety. Błędy dotyczące pakietów, których nie można znaleźć, można zignorować.

    sudo zypper remove lio-utils python-rtslib python-configshell targetcli
    

    c. Zainstaluj pakiety obiektów docelowych iSCSI.

    sudo zypper install targetcli-fb dbus-1-python
    

    d. Włącz usługę docelową iSCSI.

    sudo systemctl enable targetcli
    sudo systemctl start targetcli
    

Tworzenie urządzenia iSCSI na serwerze docelowym iSCSI

Aby utworzyć dyski iSCSI dla klastrów, które mają być używane przez systemy SAP, uruchom następujące polecenia na wszystkich docelowych maszynach wirtualnych iSCSI. W tym przykładzie tworzone są urządzenia SBD dla wielu klastrów. Przedstawiono w nim sposób użycia jednego serwera docelowego iSCSI dla wielu klastrów. Urządzenia SBD są umieszczane na dysku systemu operacyjnego. Upewnij się, że masz wystarczającą ilość miejsca.

  • nfs: identyfikuje klaster NFS.
  • ascsnw1: identyfikuje klaster ASCS NW1.
  • dbnw1: identyfikuje klaster bazy danych NW1.
  • nfs-0 i nfs-1: nazwy hostów węzłów klastra NFS.
  • nw1-xscs-0 i nw1-xscs-1: nazwy hostów węzłów klastra NW1 ASCS.
  • nw1-db-0 i nw1-db-1: nazwy hostów węzłów klastra bazy danych.

W poniższych instrukcjach zastąp ciąg dostosuj nazwy hostów węzłów klastra i identyfikator SID systemu SAP.

  1. Utwórz folder główny dla wszystkich urządzeń SBD.

    sudo mkdir /sbd
    
  2. Utwórz urządzenie SBD dla serwera NFS.

    sudo targetcli backstores/fileio create sbdnfs /sbd/sbdnfs 50M write_back=false
    sudo targetcli iscsi/ create iqn.2006-04.nfs.local:nfs
    sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/luns/ create /backstores/fileio/sbdnfs
    sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/acls/ create iqn.2006-04.nfs-0.local:nfs-0
    sudo targetcli iscsi/iqn.2006-04.nfs.local:nfs/tpg1/acls/ create iqn.2006-04.nfs-1.local:nfs-1
    
  3. Utwórz urządzenie SBD dla serwera ASCS systemu SAP 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.nw1-xscs-0.local:nw1-xscs-0
    sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.nw1-xscs-1.local:nw1-xscs-1
    
  4. Utwórz urządzenie SBD dla klastra bazy danych systemu SAP NW1.

    sudo targetcli backstores/fileio create sbddbnw1 /sbd/sbddbnw1 50M write_back=false
    sudo targetcli iscsi/ create iqn.2006-04.dbnw1.local:dbnw1
    sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/luns/ create /backstores/fileio/sbddbnw1
    sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/acls/ create iqn.2006-04.nw1-db-0.local:nw1-db-0
    sudo targetcli iscsi/iqn.2006-04.dbnw1.local:dbnw1/tpg1/acls/ create iqn.2006-04.nw1-db-1.local:nw1-db-1
    
  5. Zapisz zmiany elementu targetcli.

    sudo targetcli saveconfig
    
  6. Sprawdź, czy wszystko zostało poprawnie skonfigurowane.

    sudo targetcli ls
    
    o- / .......................................................................................................... [...]
    o- backstores ............................................................................................... [...]
    | o- block ................................................................................... [Storage Objects: 0]
    | o- fileio .................................................................................. [Storage Objects: 3]
    | | o- sbdascsnw1 ................................................ [/sbd/sbdascsnw1 (50.0MiB) write-thru activated]
    | | | o- alua .................................................................................... [ALUA Groups: 1]
    | | |   o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
    | | o- sbddbnw1 .................................................... [/sbd/sbddbnw1 (50.0MiB) write-thru activated]
    | | | o- alua .................................................................................... [ALUA Groups: 1]
    | | |   o- default_tg_pt_gp ........................................................ [ALUA state: Active/optimized]
    | | o- sbdnfs ........................................................ [/sbd/sbdnfs (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: 3]
    | o- iqn.2006-04.ascsnw1.local:ascsnw1 .................................................................. [TPGs: 1]
    | | o- tpg1 ................................................................................ [no-gen-acls, no-auth]
    | |   o- acls ........................................................................................... [ACLs: 2]
    | |   | o- iqn.2006-04.nw1-xscs-0.local:nw1-xscs-0 ............................................... [Mapped LUNs: 1]
    | |   | | o- mapped_lun0 ............................................................ [lun0 fileio/sbdascsnw1 (rw)]
    | |   | o- iqn.2006-04.nw1-xscs-1.local:nw1-xscs-1 ............................................... [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- iqn.2006-04.dbnw1.local:dbnw1 ...................................................................... [TPGs: 1]
    | | o- tpg1 ................................................................................ [no-gen-acls, no-auth]
    | |   o- acls ........................................................................................... [ACLs: 2]
    | |   | o- iqn.2006-04.nw1-db-0.local:nw1-db-0 ................................................... [Mapped LUNs: 1]
    | |   | | o- mapped_lun0 .............................................................. [lun0 fileio/sbddbnw1 (rw)]
    | |   | o- iqn.2006-04.nw1-db-1.local:nw1-db-1 ................................................... [Mapped LUNs: 1]
    | |   |   o- mapped_lun0 .............................................................. [lun0 fileio/sbddbnw1 (rw)]
    | |   o- luns ........................................................................................... [LUNs: 1]
    | |   | o- lun0 .............................................. [fileio/sbddbnw1 (/sbd/sbddbnw1) (default_tg_pt_gp)]
    | |   o- portals ..................................................................................... [Portals: 1]
    | |     o- 0.0.0.0:3260 ...................................................................................... [OK]
    | o- iqn.2006-04.nfs.local:nfs .......................................................................... [TPGs: 1]
    |   o- tpg1 ................................................................................ [no-gen-acls, no-auth]
    |     o- acls ........................................................................................... [ACLs: 2]
    |     | o- iqn.2006-04.nfs-0.local:nfs-0 ......................................................... [Mapped LUNs: 1]
    |     | | o- mapped_lun0 ................................................................ [lun0 fileio/sbdnfs (rw)]
    |     | o- iqn.2006-04.nfs-1.local:nfs-1 ......................................................... [Mapped LUNs: 1]
    |     |   o- mapped_lun0 ................................................................ [lun0 fileio/sbdnfs (rw)]
    |     o- luns ........................................................................................... [LUNs: 1]
    |     | o- lun0 .................................................. [fileio/sbdnfs (/sbd/sbdnfs) (default_tg_pt_gp)]
    |     o- portals ..................................................................................... [Portals: 1]
    |       o- 0.0.0.0:3260 ...................................................................................... [OK]
    o- loopback .......................................................................................... [Targets: 0]
    o- vhost ............................................................................................. [Targets: 0]
    o- xen-pvscsi ........................................................................................ [Targets: 0]
    

Konfigurowanie urządzenia SBD serwera docelowego iSCSI

Połączenie do urządzenia iSCSI utworzonego w ostatnim kroku z klastra. Uruchom następujące polecenia w węzłach nowego klastra, który chcesz utworzyć.

Uwaga

  • [A]: Dotyczy wszystkich węzłów.
  • [1]: Dotyczy tylko węzła 1.
  • [2]: Dotyczy tylko węzła 2.
  1. [A] Zainstaluj pakiet iSCSI.

    sudo zypper install open-iscsi
    
  2. [A] Połączenie do urządzeń iSCSI. Najpierw włącz usługi iSCSI i SBD.

    sudo systemctl enable iscsid
    sudo systemctl enable iscsi
    sudo systemctl enable sbd
    
  3. [1] Zmień nazwę inicjatora w pierwszym węźle.

    sudo vi /etc/iscsi/initiatorname.iscsi
    
  4. [1] Zmień zawartość pliku tak, aby była zgodna z listami kontroli dostępu (ACL) używanymi podczas tworzenia urządzenia iSCSI na serwerze docelowym iSCSI (na przykład dla serwera NFS).

    InitiatorName=iqn.2006-04.nfs-0.local:nfs-0
    
  5. [2] Zmień nazwę inicjatora w drugim węźle.

    sudo vi /etc/iscsi/initiatorname.iscsi
    
  6. [2] Zmień zawartość pliku tak, aby była zgodna z listami ACL używanymi podczas tworzenia urządzenia iSCSI na serwerze docelowym iSCSI.

    InitiatorName=iqn.2006-04.nfs-1.local:nfs-1
    
  7. [A] Uruchom ponownie usługę iSCSI, aby zastosować zmianę.

    sudo systemctl restart iscsid
    sudo systemctl restart iscsi
    
  8. [A] Połą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. iqn.2006-04.nfs.local:nfs jest jedną z nazw docelowych wymienionych podczas uruchamiania pierwszego polecenia . iscsiadm -m discovery

    sudo iscsiadm -m discovery --type=st --portal=10.0.0.17:3260   
    sudo iscsiadm -m node -T iqn.2006-04.nfs.local:nfs --login --portal=10.0.0.17:3260
    sudo iscsiadm -m node -p 10.0.0.17:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic
    
  9. [A] Jeśli chcesz użyć 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.nfs.local:nfs --login --portal=10.0.0.18:3260
    sudo iscsiadm -m node -p 10.0.0.18:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic
    
  10. [A] Jeśli chcesz użyć 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.nfs.local:nfs --login --portal=10.0.0.19:3260
    sudo iscsiadm -m node -p 10.0.0.19:3260 -T iqn.2006-04.nfs.local:nfs --op=update --name=node.startup --value=automatic
    
  11. [A] Upewnij się, że urządzenia iSCSI są dostępne i zanotuj nazwę urządzenia (/dev/sde, w poniższym przykładzie).

    lsscsi
    
    # [2:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sda
    # [3:0:1:0]    disk    Msft     Virtual Disk     1.0   /dev/sdb
    # [5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc
    # [5:0:0:1]    disk    Msft     Virtual Disk     1.0   /dev/sdd
    # [6:0:0:0]    disk    LIO-ORG  sbdnfs           4.0   /dev/sdd
    # [7:0:0:0]    disk    LIO-ORG  sbdnfs           4.0   /dev/sde
    # [8:0:0:0]    disk    LIO-ORG  sbdnfs           4.0   /dev/sdf
    
  12. [A] Pobieranie identyfikatorów urządzeń iSCSI.

    ls -l /dev/disk/by-id/scsi-* | grep sdd
    
    # lrwxrwxrwx 1 root root  9 Aug  9 13:20 /dev/disk/by-id/scsi-1LIO-ORG_sbdnfs:afb0ba8d-3a3c-413b-8cc2-cca03e63ef42 -> ../../sdd
    # lrwxrwxrwx 1 root root  9 Aug  9 13:20 /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03 -> ../../sdd
    # lrwxrwxrwx 1 root root  9 Aug  9 13:20 /dev/disk/by-id/scsi-SLIO-ORG_sbdnfs_afb0ba8d-3a3c-413b-8cc2-cca03e63ef42 -> ../../sdd
    
    ls -l /dev/disk/by-id/scsi-* | grep sde
    
    # lrwxrwxrwx 1 root root  9 Feb  7 12:39 /dev/disk/by-id/scsi-1LIO-ORG_cl1:3fe4da37-1a5a-4bb6-9a41-9a4df57770e4 -> ../../sde
    # lrwxrwxrwx 1 root root  9 Feb  7 12:39 /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df -> ../../sde
    # lrwxrwxrwx 1 root root  9 Feb  7 12:39 /dev/disk/by-id/scsi-SLIO-ORG_cl1_3fe4da37-1a5a-4bb6-9a41-9a4df57770e4 -> ../../sde
    
    ls -l /dev/disk/by-id/scsi-* | grep sdf
    
    # lrwxrwxrwx 1 root root  9 Aug  9 13:32 /dev/disk/by-id/scsi-1LIO-ORG_sbdnfs:f88f30e7-c968-4678-bc87-fe7bfcbdb625 -> ../../sdf
    # lrwxrwxrwx 1 root root  9 Aug  9 13:32 /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf -> ../../sdf
    # lrwxrwxrwx 1 root root  9 Aug  9 13:32 /dev/disk/by-id/scsi-SLIO-ORG_sbdnfs_f88f30e7-c968-4678-bc87-fe7bfcbdb625 -> ../../sdf
    

    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-36001405afb0ba8d3a3c413b8cc2cca03
    • /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df
    • /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf
  13. [1] Tworzenie urządzenia SBD.

    a. 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-36001405afb0ba8d3a3c413b8cc2cca03 -1 60 -4 120 create
    

    b. 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-360014053fe4da371a5a4bb69a419a4df -1 60 -4 120 create
    sudo sbd -d /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf -1 60 -4 120 create
    
  14. [A] Dostosowanie konfiguracji SBD.

    a. Otwórz plik konfiguracji SBD.

    sudo vi /etc/sysconfig/sbd
    

    b. Zmień właściwość urządzenia SBD, włącz integrację programu Pacemaker i zmień tryb uruchamiania usługi SBD.

    [...]
    SBD_DEVICE="/dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03;/dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df;/dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf"
    [...]
    SBD_PACEMAKER="yes"
    [...]
    SBD_STARTMODE="always"
    [...]
    

    Uwaga

    Jeśli wartość właściwości SBD_DELAY_START jest ustawiona na "nie", zmień wartość na "tak". Należy również sprawdzić plik usługi SBD, aby upewnić się, że wartość timeoutStartSec jest większa niż wartość SBD_DELAY_START. Aby uzyskać więcej informacji, zobacz Konfigurowanie pliku SBD

  15. [A] Utwórz softdog plik konfiguracji.

    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    
  16. [A] Załaduj moduł.

    sudo modprobe -v softdog
    

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.

Tworzenie i dołączanie udostępnionego dysku platformy Azure za pomocą programu PowerShell

  1. Dostosuj wartości dla grupy zasobów, regionu platformy Azure, maszyn wirtualnych, numerów jednostek logicznych (LUN) itd.

    $ResourceGroup = "MyResourceGroup"
    $Location = "MyAzureRegion"
    
  2. Zdefiniuj rozmiar dysku na podstawie dostępnego rozmiaru dysku dla dysków SSD w warstwie Premium. W tym przykładzie wymieniono rozmiar dysku P1 o rozmiarze 4G.

    $DiskSizeInGB = 4
    $DiskName = "SBD-disk1"
    
  3. Za pomocą parametru -MaxSharesCount zdefiniuj maksymalną liczbę węzłów klastra, aby dołączyć dysk udostępniony dla urządzenia SBD.

    $ShareNodes = 2
    
  4. W przypadku urządzenia SBD korzystającego z magazynu LRS dla udostępnionego dysku usługi Azure Premium użyj następującej jednostki SkuName magazynu:

    $SkuName = "Premium_LRS"
    
  5. W przypadku urządzenia SBD korzystającego z magazynu ZRS dla udostępnionego dysku usługi Azure Premium użyj następującej jednostki SkuName magazynu:

    $SkuName = "Premium_ZRS"
    
  6. Konfigurowanie dysku udostępnionego platformy Azure.

    $diskConfig = New-AzDiskConfig -Location $Location -SkuName $SkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes
    $dataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $diskConfig
    
  7. Dołącz dysk do maszyn wirtualnych klastra.

    $VM1 = "prod-cl1-0"
    $VM2 = "prod-cl1-1"
    

    a. Dodaj dysk udostępniony platformy Azure do węzła klastra 1.

    $vm = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VM1
    $vm = Add-AzVMDataDisk -VM $vm -Name $DiskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0
    Update-AzVm -VM $vm -ResourceGroupName $ResourceGroup -Verbose
    

    b. Dodaj dysk udostępniony platformy Azure do węzła klastra 2.

    $vm = Get-AzVM -ResourceGroupName $ResourceGroup -Name $VM2
    $vm = Add-AzVMDataDisk -VM $vm -Name $DiskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0
    Update-AzVm -VM $vm -ResourceGroupName $ResourceGroup -Verbose
    

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.

Konfigurowanie urządzenia SBD dysku udostępnionego platformy Azure

  1. [A] Włącz usługi SBD.

    sudo systemctl enable sbd
    
  2. [A] Upewnij się, że dołączony dysk jest dostępny.

    # lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    fd0      2:0    1    4K  0 disk
    sda      8:0    0   30G  0 disk
    ├─sda1   8:1    0    2M  0 part
    ├─sda2   8:2    0  512M  0 part /boot/efi
    ├─sda3   8:3    0    1G  0 part /boot
    ├─sda4   8:4    0 28.5G  0 part /
    sdb      8:16   0  256G  0 disk
    ├─sdb1   8:17   0  256G  0 part /mnt
    sdc      8:32   0    4G  0 disk
    sr0     11:0    1 1024M  0 rom
    
    # lsscsi
    [1:0:0:0]    cd/dvd  Msft     Virtual CD/ROM   1.0   /dev/sr0
    [2:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sda
    [3:0:1:0]    disk    Msft     Virtual Disk     1.0   /dev/sdb
    [5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc
    
  3. [A] Pobierz identyfikatory dołączonych dysków.

    # ls -l /dev/disk/by-id/scsi-* | grep sdc
    lrwxrwxrwx 1 root root  9 Nov  8 16:55 /dev/disk/by-id/scsi-14d534654202020204208a67da80744439b513b2a9728af19 -> ../../sdc
    lrwxrwxrwx 1 root root  9 Nov  8 16:55 /dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19 -> ../../sdc
    

    Polecenia wyświetlają listę identyfikatorów urządzeń dla urządzenia SBD. Zalecamy użycie identyfikatora rozpoczynającego się od scsi-3. W poprzednim przykładzie identyfikator to /dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19.

  4. [1] Tworzenie urządzenia SBD.

    Użyj identyfikatora urządzenia z kroku 2, aby utworzyć nowe urządzenia SBD w pierwszym węźle klastra.

    # sudo sbd -d /dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19 -1 60 -4 120 create
    
  5. [A] Dostosowanie konfiguracji SBD.

    a. Otwórz plik konfiguracji SBD.

    sudo vi /etc/sysconfig/sbd
    

    b. Zmień właściwość urządzenia SBD, włącz integrację programu Pacemaker i zmień tryb uruchamiania urządzenia SBD.

    [...]
    SBD_DEVICE="/dev/disk/by-id/scsi-3600224804208a67da8073b2a9728af19"
    [...]
    SBD_PACEMAKER="yes"
    [...]
    SBD_STARTMODE="always"
    [...]
    

    Uwaga

    Jeśli wartość właściwości SBD_DELAY_START jest ustawiona na "nie", zmień wartość na "tak". Należy również sprawdzić plik usługi SBD, aby upewnić się, że wartość timeoutStartSec jest większa niż wartość SBD_DELAY_START. Aby uzyskać więcej informacji, zobacz Konfigurowanie pliku SBD

  6. softdog Utwórz plik konfiguracji.

    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    
  7. Załaduj moduł.

    sudo modprobe -v softdog
    

Korzystanie z agenta ogrodzenia platformy Azure

Ta sekcja ma zastosowanie tylko wtedy, gdy chcesz użyć urządzenia ogrodzenia z agentem ogrodzenia platformy Azure.

Tworzenie urządzenia agenta ogrodzenia platformy Azure

Ta sekcja ma zastosowanie tylko wtedy, gdy używasz urządzenia ogrodzenia opartego na agencie ogrodzenia platformy Azure. Urządzenie ogrodzenia używa tożsamości zarządzanej lub jednostki usługi do autoryzacji względem platformy Microsoft Azure.

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. Tożsamości zarządzane przypisane przez użytkownika nie powinny być obecnie używane z usługą Pacemaker. Agent ogrodzenia platformy Azure oparty na tożsamości zarządzanej jest obsługiwany w przypadku systemów SLES 12 SP5 i SLES 15 SP1 i nowszych.

[1] Tworzenie roli niestandardowej dla agenta ogrodzenia

Domyślnie żadna tożsamość zarządzana ani jednostka usługi nie ma uprawnień dostępu do zasobów platformy Azure. Aby uruchomić i zatrzymać wszystkie maszyny wirtualne w klastrze, musisz nadać tożsamości zarządzanej lub jednostce usługi uprawnienia do uruchamiania i zatrzymywania (cofania przydziału). Jeśli jeszcze nie utworzono roli niestandardowej, możesz to zrobić 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. Oznacza to, że zastąp ciąg xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx iyyy-y własnymi identyfikatorami subskrypcji. Jeśli masz tylko jedną subskrypcję, usuń drugi wpis w obszarze AssignableScopes.

{
      "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": []
}

[A] Przypisywanie roli niestandardowej

Użyj tożsamości zarządzanej lub jednostki usługi.

Przypisz rolę niestandardową "Rola agenta ogrodzenia systemu Linux", która została utworzona w ostatnim rozdziale 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ć szczegółowe instrukcje, 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 czasu skutecznego.

Instalowanie klastra

Uwaga

  • [A]: Dotyczy wszystkich węzłów.
  • [1]: Dotyczy tylko węzła 1.
  • [2]: Dotyczy tylko węzła 2.
  1. [A] Zaktualizuj usługę SLES.

    sudo zypper update
    

    Uwaga

    W systemie SLES 15 SP4 sprawdź wersję pakietu crmsh i pacemaker i upewnij się, że zostały spełnione wymagania dotyczące wersji miniumum:

    • crmsh-4.4.0+20221028.3e41444-150400.3.9.1 lub nowszy
    • pacemaker-2.1.2+20211124.ada5c3b36-150400.4.6.1 lub nowszy
  2. [A] Zainstaluj składnik, który jest potrzebny dla zasobów klastra.

    sudo zypper in socat
    
  3. [A] Zainstaluj składnik azure-lb, który jest potrzebny dla zasobów klastra.

    sudo zypper in resource-agents
    

    Uwaga

    Sprawdź wersję pakietu resource-agents i upewnij się, że zostały spełnione minimalne wymagania dotyczące wersji:

    • SLES 12 SP4/SP5: wersja musi być resource-agents-4.3.018.a7fb5035-3.30.1 lub nowsza.
    • SLES 15/15 SP1: wersja musi być resource-agents-4.3.0184.6ee15eb2-4.13.1 lub nowsza.
  4. [A] Skonfiguruj system operacyjny.

    a. Pacemaker od czasu do czasu tworzy wiele procesów, które mogą wyczerpać dozwoloną liczbę. W takim przypadku puls między węzłami klastra może zakończyć się niepowodzeniem i prowadzić do przejścia w tryb failover zasobów. Zalecamy zwiększenie maksymalnej liczby dozwolonych procesów przez ustawienie następującego parametru:

    # Edit the configuration file
    sudo vi /etc/systemd/system.conf
    
    # Change the DefaultTasksMax
    #DefaultTasksMax=512
    DefaultTasksMax=4096
    
    # Activate this setting
    sudo systemctl daemon-reload
    
    # Test to ensure that the change was successful
    sudo systemctl --no-pager show | grep DefaultTasksMax
    

    b. Zmniejsz rozmiar brudnej pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Niska wydajność zapisu na serwerach SLES 11/12 z dużą pamięcią RAM.

    sudo vi /etc/sysctl.conf
    # Change/set the following settings
    vm.dirty_bytes = 629145600
    vm.dirty_background_bytes = 314572800
    

    c. Upewnij się, że wartość vm.swappiness jest ustawiona na 10, aby zmniejszyć użycie wymiany i faworyzować pamięć.

    sudo vi /etc/sysctl.conf
    # Change/set the following setting
    vm.swappiness = 10
    
  5. [A] Sprawdź wersję pakietu cloud-netconfig-azure .

    Sprawdź zainstalowaną wersję pakietu cloud-netconfig-azure , uruchamiając narzędzie zypper info cloud-netconfig-azure. Jeśli wersja jest starsza niż 1.3, zalecamy zaktualizowanie pakietu cloud-netconfig-azure do najnowszej dostępnej wersji.

    Napiwek

    Jeśli wersja w środowisku to 1.3 lub nowsza, nie trzeba już pomijać zarządzania interfejsami sieciowymi przez wtyczkę sieci w chmurze.

    Tylko wtedy, gdy wersja pliku cloud-netconfig-azure jest niższa niż 1.3, zmień plik konfiguracji interfejsu sieciowego, jak pokazano w poniższym kodzie, aby zapobiec usunięciu wirtualnego adresu IP przez wtyczkę sieci w chmurze (program Pacemaker musi kontrolować przypisanie). Aby uzyskać więcej informacji, zobacz 7023633 SUSE KB.

    # Edit the configuration file
    sudo vi /etc/sysconfig/network/ifcfg-eth0 
    
    # Change CLOUD_NETCONFIG_MANAGE
    # CLOUD_NETCONFIG_MANAGE="yes"
    CLOUD_NETCONFIG_MANAGE="no"
    
  6. [1] Włącz dostęp SSH.

    sudo ssh-keygen
    
    # Enter file in which to save the key (/root/.ssh/id_rsa), and then select Enter
    # Enter passphrase (empty for no passphrase), and then select Enter
    # Enter same passphrase again, and then select Enter
    
    # copy the public key
    sudo cat /root/.ssh/id_rsa.pub
    
  7. [2] Włącz dostęp SSH.

    sudo ssh-keygen
    
    # Enter file in which to save the key (/root/.ssh/id_rsa), and then select Enter
    # Enter passphrase (empty for no passphrase), and then select Enter
    # Enter same passphrase again, and then select Enter
    
    # Insert the public key you copied in the last step into the authorized keys file on the second server
    sudo vi /root/.ssh/authorized_keys   
    
    # copy the public key
    sudo cat /root/.ssh/id_rsa.pub
    
  8. [1] Włącz dostęp SSH.

    # insert the public key you copied in the last step into the authorized keys file on the first server
    sudo vi /root/.ssh/authorized_keys
    
  9. [A] Zainstaluj pakiet ogrodzenia agentów , jeśli używasz urządzenia ogrodzenia na podstawie agenta ogrodzenia platformy Azure.

    sudo zypper install fence-agents
    

    Ważne

    Zainstalowana wersja pakietu ogrodzenia agentów musi być 4.4.0 lub nowsza, aby korzystać z szybszego czasu pracy w trybie failover z agentem ogrodzenia platformy Azure, gdy węzeł klastra jest ogrodzony. Jeśli używasz starszej wersji, zalecamy zaktualizowanie pakietu.

    Ważne

    W przypadku korzystania z tożsamości zarządzanej zainstalowana wersja pakietu ogrodzenia agentów musi mieć wartość -

    • SLES 12 SP5: fence-agents 4.9.0+git.1624456340.8d746be9-3.35.2 lub nowszy
    • SLES 15 SP1 i nowsze: fence-agents 4.5.2+git.1592573838.1ee0863 lub nowszy.

    Wcześniejsze wersje nie będą działać poprawnie z konfiguracją tożsamości zarządzanej.

  10. [A] Zainstaluj moduł Azure Python SDK i Azure Identity Python.

    Zainstaluj zestaw Azure Python SDK w systemie SLES 12 SP4 lub SLES 12 SP5:

    # You might need to activate the public cloud extension first
    SUSEConnect -p sle-module-public-cloud/12/x86_64
    sudo zypper install python-azure-mgmt-compute
    sudo zypper install python-azure-identity
    

    Zainstaluj zestaw Azure Python SDK w systemie SLES 15 lub nowszym:

    # You might need to activate the public cloud extension first. In this example, the SUSEConnect command is for SLES 15 SP1
    SUSEConnect -p sle-module-public-cloud/15.1/x86_64
    sudo zypper install python3-azure-mgmt-compute
    sudo zypper install python3-azure-identity
    

    Ważne

    W zależności od wersji i typu obrazu może być konieczne aktywowanie rozszerzenia chmury publicznej dla wersji systemu operacyjnego przed zainstalowaniem zestawu Azure Python SDK. Rozszerzenie można sprawdzić, uruchamiając polecenie SUSEConnect ---list-extensions. Aby osiągnąć krótszy czas pracy w trybie failover za pomocą agenta ogrodzenia platformy Azure:

    • W systemie SLES 12 SP4 lub SLES 12 SP5 zainstaluj wersję 4.6.2 lub nowszą pakietu python-azure-mgmt-compute .
    • Jeśli pakiet python-azure-mgmt-compute lub python3-azure-mgmt-compute ma wersję 17.0.0-6.7.1, postępuj zgodnie z instrukcjami w artykule SUSE KBA, aby zaktualizować wersję agentów ogrodzenia i zainstalować bibliotekę klienta tożsamości platformy Azure dla języka Python, jeśli brakuje.
  11. [A] Skonfiguruj rozpoznawanie nazwy hosta.

    Możesz użyć serwera DNS lub zmodyfikować plik /etc/hosts na wszystkich węzłach. W tym przykładzie pokazano, 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 nazwy hosta. Komunikacja klastra zakończy się niepowodzeniem, jeśli nazwy są niedostępne i może to prowadzić do opóźnień trybu failover klastra.

    Zaletą używania /etc/hosts jest to, że klaster staje się niezależny od systemu DNS, co może być pojedynczym punktem awarii.

    sudo vi /etc/hosts
    

    Wstaw następujące wiersze w /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
    
  12. [1] Zainstaluj klaster.

    • Jeśli używasz urządzeń SBD do ogrodzenia (dla serwera docelowego iSCSI lub dysku udostępnionego platformy Azure):

      sudo crm cluster init
      # ! NTP is not configured to start at system boot.
      # Do you want to continue anyway (y/n)? y
      # /root/.ssh/id_rsa already exists - overwrite (y/n)? n
      # Address for ring0 [10.0.0.6] Select Enter
      # Port for ring0 [5405] Select Enter
      # SBD is already configured to use /dev/disk/by-id/scsi-36001405639245768818458b930abdf69;/dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03;/dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf - overwrite (y/n)? n
      # Do you wish to configure an administration IP (y/n)? n
      
    • Jeśli nie używasz urządzeń SBD do ogrodzenia:

      sudo crm cluster init
      # ! NTP is not configured to start at system boot.
      # Do you want to continue anyway (y/n)? y
      # /root/.ssh/id_rsa already exists - overwrite (y/n)? n
      # Address for ring0 [10.0.0.6] Select Enter
      # Port for ring0 [5405] Select Enter
      # Do you wish to use SBD (y/n)? n
      # WARNING: Not configuring SBD - STONITH will be disabled.
      # Do you wish to configure an administration IP (y/n)? n
      
  13. [2] Dodaj węzeł do klastra.

    sudo crm cluster join
    # ! NTP is not configured to start at system boot.
    # Do you want to continue anyway (y/n)? y
    # IP address or hostname of existing node (for example, 192.168.1.1) []10.0.0.6
    # /root/.ssh/id_rsa already exists - overwrite (y/n)? n
    
  14. [A] Zmień hasło hacluster na to samo hasło.

    sudo passwd hacluster
    
  15. [A] Dostosuj ustawienia corosync.

    sudo vi /etc/corosync/corosync.conf
    

    a. Sprawdź następującą sekcję w pliku i dostosuj, jeśli wartości nie istnieją lub są inne. Pamiętaj, aby zmienić token na 30000, aby umożliwić konserwację zachowującą pamięć. Aby uzyskać więcej informacji, zobacz artykuł "Konserwacja maszyn wirtualnych na platformie Azure" dla systemu Linux lub Windows.

    [...]
      token:          30000
      token_retransmits_before_loss_const: 10
      join:           60
      consensus:      36000
      max_messages:   20
    
      interface { 
         [...] 
      }
      transport:      udpu
    } 
    nodelist {
      node {
       ring0_addr:10.0.0.6
      }
      node {
       ring0_addr:10.0.0.7
      } 
    }
    logging {
      [...]
    }
    quorum {
         # Enable and configure quorum subsystem (default: off)
         # See also corosync.conf.5 and votequorum.5
         provider: corosync_votequorum
         expected_votes: 2
         two_node: 1
    }
    

    b. Uruchom ponownie usługę corosync.

    sudo service corosync restart
    

Tworzenie urządzenia ogrodzenia w klastrze Pacemaker

Napiwek

  • Aby uniknąć wyścigów ogrodzenia w klastrze rozrusznika z dwoma węzłami, można skonfigurować dodatkową 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ć dodatkowe informacje, zobacz PODRĘCZNIK administrowania rozszerzeniem o wysokiej dostępności systemu SUSE Linux Enterprise Server.
  • Instrukcje dotyczące ustawiania właściwości klastra "priority-fencing-delay" można znaleźć w odpowiednim dokumencie SAP ASCS/ERS (dotyczy tylko enSA2) i SAP HANA skalowania w górę wysokiej dostępności.
  1. [1] Jeśli używasz urządzenia SBD (serwera docelowego iSCSI lub dysku udostępnionego platformy Azure) jako urządzenia ogrodzenia, uruchom następujące polecenia. Włącz korzystanie z urządzenia ogrodzeniowego i ustaw opóźnienie ogrodzenia.

    sudo crm configure property stonith-timeout=144
    sudo crm configure property stonith-enabled=true
    
    # List the resources to find the name of the SBD device
    sudo crm resource list
    sudo crm resource stop stonith-sbd
    sudo crm configure delete stonith-sbd
    sudo crm configure primitive stonith-sbd stonith:external/sbd \
       params pcmk_delay_max="15" \
       op monitor interval="600" timeout="15"
    
  2. [1] Jeśli używasz agenta ogrodzenia platformy Azure do ogrodzenia, uruchom następujące polecenia. Po przypisaniu ról do obu węzłów klastra można skonfigurować urządzenia ogrodzenia w klastrze.

    sudo crm configure property stonith-enabled=true
    sudo crm configure property concurrent-fencing=true
    

    Uwaga

    Opcja "pcmk_host_map" jest wymagana w poleceniu tylko wtedy, gdy nazwy hostów i nazwy maszyn wirtualnych platformy Azure nieidentyczne. Określ mapowanie w formacie nazwa hosta:vm-name.

# Adjust the command with your subscription ID and resource group of the VM

sudo crm configure primitive rsc_st_azure stonith:fence_azure_arm \
params msi=true subscriptionId="subscription ID" resourceGroup="resource group" \
pcmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 pcmk_delay_max=15 pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \
op monitor interval=3600 timeout=120

sudo crm configure property stonith-timeout=900

Jeśli używasz urządzenia ogrodzenia w oparciu o konfigurację 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.

Ważne

Operacje monitorowania i ogrodzenia są deserializowane. W związku z tym, jeśli istnieje długotrwała 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, zgodnie z dokumentacją, wraz z możliwymi rozwiązaniami, w temacie Publiczna łączność punktów końcowych dla maszyn wirtualnych przy użyciu 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 monitors dla zaplanowanych zdarzeń 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, których nazwa nie zaczyna się od "health-" są migrowane z dala od węzła z zaplanowanym zdarzeniem. Gdy węzeł klastra, którego dotyczy problem, jest wolny od uruchamiania zasobów klastra, zdarzenie zaplanowane jest potwierdzane i może wykonać jego akcję, taką jak ponowne uruchomienie.

Ważne

Wcześniej w tym dokumencie opisano użycie agenta zasobów azure-events. Nowy agent zasobów azure-events-az w pełni obsługuje środowiska platformy Azure wdrożone w różnych strefach dostępności. Zaleca się korzystanie z nowszego agenta azure-events-az dla wszystkich systemów SAP o wysokiej dostępności za pomocą programu Pacemaker.

  1. [A] Upewnij się, że pakiet agenta azure-events jest już zainstalowany i aktualny.

    sudo zypper info resource-agents
    

    Minimalne wymagania dotyczące wersji:

    • SLES 12 SP5: resource-agents-4.3.018.a7fb5035-3.98.1
    • SLES 15 SP1: resource-agents-4.3.0184.6ee15eb2-150100.4.72.1
    • SLES 15 SP2: resource-agents-4.4.0+git57.70549516-150200.3.56.1
    • SLES 15 SP3: resource-agents-4.8.0+git30.d0077df0-150300.8.31.1
    • SLES 15 SP4 i nowsze: resource-agents-4.10.0+git40.0f4de473-150400.3.19.1
  2. [1] Konfigurowanie zasobów w narzędziu Pacemaker.

    #Place the cluster in maintenance mode
    sudo crm configure property maintenance-mode=true
    
  3. [1] Ustawianie strategii i ograniczenia węzła kondycji klastra pacemaker

    sudo crm configure property node-health-strategy=custom
    sudo crm configure location loc_azure_health \
    /'!health-.*'/ rule '#health-azure': defined '#uname'
    

    Ważne

    Nie należy definiować żadnych innych zasobów w klastrze, zaczynając od wartości "health-", oprócz zasobów opisanych w następnych krokach dokumentacji.

  4. [1] Ustaw początkową wartość atrybutów klastra. Uruchom polecenie dla każdego węzła klastra. W przypadku środowisk skalowanych w poziomie, w tym maszyn wirtualnych twórców 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
    
  5. [1] Konfigurowanie zasobów w narzędziu Pacemaker. Ważne: zasoby muszą zaczynać się od "health-azure".

    sudo crm configure primitive health-azure-events ocf:heartbeat:azure-events-az \ 
    meta allow-unhealthy-nodes=true failure-timeout=120s \ 
    op start start-delay=90s \ 
    op monitor interval=10s
    
    sudo crm configure clone health-azure-events-cln health-azure-events
    

    Uwaga

    Podczas konfigurowania zasobu "health-azure-events" można zignorować następujący komunikat ostrzegawczy.

    OSTRZEŻENIE: health-azure-events: nieznany atrybut "allow--unhealthy-nodes".

  6. Wyjmij klaster Pacemaker z trybu konserwacji

    sudo crm configure property maintenance-mode=false
    
  7. 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 crm resource cleanup
    

    Wykonywanie zapytania po raz pierwszy dla zaplanowanych zdarzeń może potrwać do 2 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 dokumentację zaplanowanych zdarzeń .

    Uwaga

    Po skonfigurowaniu zasobów programu Pacemaker dla agenta azure-events, jeśli umieścisz klaster w trybie konserwacji lub poza trybem konserwacji, mogą zostać wyświetlone komunikaty ostrzegawcze, takie jak:

    OSTRZEŻENIE: cib-bootstrap-options: nieznany atrybut "hostName_hostname"
    OSTRZEŻENIE: cib-bootstrap-options: nieznany atrybut "azure-events_globalPullState"
    OSTRZEŻENIE: cib-bootstrap-options: nieznany atrybut "hostName_ nazwa hosta"
    Te komunikaty ostrzegawcze można zignorować.

Następne kroki