Konfigurera pacemaker på SUSE Linux Enterprise Server i Azure

Det finns två alternativ för att konfigurera ett Pacemaker-kluster i Azure. Du kan antingen använda en avstängningsagent som tar hand om omstarten av en misslyckad nod via Azure-API:erna eller så kan du använda en SBD-enhet.

SBD-enheten kräver minst en ytterligare virtuell dator som fungerar som en iSCSI-målserver och tillhandahåller en SBD-enhet. Dessa iSCSI-målservrar kan dock delas med andra Pacemaker-kluster. Fördelen med att använda en SBD-enhet är att om du redan använder SBD-enheter lokalt behöver du inte göra några ändringar i hur du använder pacemakerklustret. Du kan använda upp till tre SBD-enheter för ett pacemakerkluster för att tillåta att en SBD-enhet blir otillgänglig, till exempel vid os-korrigering av iSCSI-målservern. Om du vill använda mer än en SBD-enhet per pacemaker, se till att distribuera flera iSCSI-målservrar och ansluta en SBD från varje iSCSI-målserver. Vi rekommenderar att du använder antingen en SBD-enhet eller tre. Pacemaker kan inte automatiskt stängs av en klusternod om du bara konfigurerar två SBD-enheter och en av dem inte är tillgänglig. Om du vill kunna stänga av när en iSCSI-målserver ligger nere måste du använda tre SBD-enheter och därmed tre iSCSI-målservrar, vilket är den mest motståndskraftiga konfigurationen när du använder SBD:er.

Azure Fence-agenten kräver inte att ytterligare virtuella datorer distribueras.

Översikt över pacemaker på SLES

Viktigt

När du planerar och distribuerar klustrade noder och SBD-enheter med Linux Pacemaker är det viktigt för den fullständiga klusterkonfigurationens övergripande tillförlitlighet att routningen mellan de berörda virtuella datorerna och de virtuella datorer som är värdar för SBD-enheterna inte passerar genom några andra enheter som NVA:er. Annars kan problem och underhållshändelser med nva ha en negativ inverkan på stabiliteten och tillförlitligheten i den övergripande klusterkonfigurationen. För att undvika sådana hinder ska du inte definiera routningsregler för NVA:er eller användardefinierade routningsregler som dirigerar trafik mellan klustrade noder och SBD-enheter via NVA:er och liknande enheter vid planering och distribution av klustrade Linux Pacemaker-noder och SBD-enheter.

SBD-avstängning

Följ dessa steg om du vill använda en SBD-enhet för avstängning.

Konfigurera iSCSI-målservrar

Du måste först skapa de virtuella iSCSI-måldatorerna. iSCSI-målservrar kan delas med flera Pacemaker-kluster.

  1. Distribuera nya virtuella SLES 12 SP1-datorer eller högre och anslut till dem via ssh. Datorerna behöver inte vara stora. En virtuell datorstorlek som Standard_E2s_v3 eller Standard_D2s_v3 räcker. Se till att använda Premium att lagra OS-disken.

Kör följande kommandon på alla virtuella iSCSI-måldatorer.

  1. Uppdatera SLES

    sudo zypper update
    

    Anteckning

    Du kan behöva starta om operativsystemet när du har uppgraderat eller uppdaterat operativsystemet.

  2. Ta bort paket

    Avinstallera följande paket för att undvika ett känt problem med targetcli och SLES 12 SP3. Du kan ignorera fel om paket som inte kan hittas

    sudo zypper remove lio-utils python-rtslib python-configshell targetcli
    
  3. Installera iSCSI-målpaket

    sudo zypper install targetcli-fb dbus-1-python
    
  4. Aktivera iSCSI-måltjänsten

    sudo systemctl enable targetcli
    sudo systemctl start targetcli
    

Skapa iSCSI-enhet på iSCSI-målservern

Kör följande kommandon på alla virtuella iSCSI-måldatorer för att skapa iSCSI-diskarna för de kluster som används av dina SAP-system. I följande exempel skapas SBD-enheter för flera kluster. Den visar hur du använder en iSCSI-målserver för flera kluster. SBD-enheterna placeras på OS-disken. Kontrollera att du har tillräckligt med utrymme.

nfs används för att identifiera NFS-klustret, ascsnw1 används för att identifiera ASCS-klustret i NW1, dbnw1 används för att identifiera databasklustret NW1, nfs-0 och nfs-1 är värdnamnen för NFS-klusternoderna, nw1-xscs-0 och nw1-xscs-1 är värdnamnen för NW1 ASCS-klusternoderna och nw1-db-0 och nw1-db-1 är värdnamnen för databasklusternoderna. Ersätt dem med värdnamnen för klusternoderna och SAP-systemets SID.

# Create the root folder for all SBD devices
sudo mkdir /sbd

# Create the SBD device for the NFS server
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

# Create the SBD device for the ASCS server of SAP System 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

# Create the SBD device for the database cluster of SAP System 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

# save the targetcli changes
sudo targetcli saveconfig

Du kan kontrollera om allt har ställts in korrekt med

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]

Konfigurera SBD-enhet

Anslut till den iSCSI-enhet som skapades i det senaste steget från klustret. Kör följande kommandon på noderna i det nya klustret som du vill skapa. Följande objekt föregås av antingen [A] – gäller för alla noder, [1] – gäller endast för nod 1 eller [2] – gäller endast för nod 2.

  1. [A] Anslut till iSCSI-enheter

    Aktivera först iSCSI- och SBD-tjänsterna.

    sudo systemctl enable iscsid
    sudo systemctl enable iscsi
    sudo systemctl enable sbd
    
  2. [1] Ändra initierarnamnet på den första noden

    sudo vi /etc/iscsi/initiatorname.iscsi
    

    Ändra innehållet i filen så att det matchar de ACL:er som du använde när du skapade iSCSI-enheten på iSCSI-målservern, till exempel för NFS-servern.

    InitiatorName=iqn.2006-04.nfs-0.local:nfs-0
    
  3. [2] Ändra initierarnamnet på den andra noden

    sudo vi /etc/iscsi/initiatorname.iscsi
    

    Ändra innehållet i filen så att det matchar de ACL:er som du använde när du skapade iSCSI-enheten på iSCSI-målservern

    InitiatorName=iqn.2006-04.nfs-1.local:nfs-1
    
  4. [A] Starta om iSCSI-tjänsten

    Starta nu om iSCSI-tjänsten för att tillämpa ändringen

    sudo systemctl restart iscsid
    sudo systemctl restart iscsi
    

    Anslut iSCSI-enheter. I exemplet nedan är 10.0.0.17 IP-adressen för iSCSI-målservern och 3260 är standardporten. iqn.2006-04.nfs.local:nfs är ett av de målnamn som visas när du kör det första kommandot nedan (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
    
    # If you want to use multiple SBD devices, also connect to the second iSCSI target server
    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
    
    # If you want to use multiple SBD devices, also connect to the third iSCSI target server
    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
    

    Kontrollera att iSCSI-enheterna är tillgängliga och anteckna enhetsnamnet (i följande exempel /dev/sde)

    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
    

    Hämta nu ID:erna för iSCSI-enheterna.

    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
    

    Kommandot listar tre enhets-ID:er för varje SBD-enhet. Vi rekommenderar att du använder det ID som börjar med scsi-3. I exemplet ovan är detta

    • /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2af03
    • /dev/disk/by-id/scsi-360014053fe4da371a5a4bb69a419a4df
    • /dev/disk/by-id/scsi-36001405f88f30e7c9684678bc87fe7bf
  5. [1] Skapa SBD-enheten

    Använd iSCSI-enheternas enhets-ID för att skapa de nya SBD-enheterna på den första klusternoden.

    sudo sbd -d /dev/disk/by-id/scsi-36001405afb0ba8d3a3c413b8cc2cca03 -1 60 -4 120 create
    
    # Also create the second and third SBD devices if you want to use more than one.
    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
    
  6. [A] Anpassa SBD-konfiguration

    Öppna SBD-konfigurationsfilen

    sudo vi /etc/sysconfig/sbd
    

    Ändra SBD-enhetens egenskap, aktivera pacemakerintegrering och ändra startläget för 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"
    [...]
    

    Skapa softdog konfigurationsfilen

    echo softdog | sudo tee /etc/modules-load.d/softdog.conf
    

    Läs nu in modulen

    sudo modprobe -v softdog
    

Klusterinstallation

Följande objekt föregås av antingen [A] – gäller för alla noder, [1] – gäller endast för nod 1 eller [2] – gäller endast för nod 2.

  1. [A] Uppdatera SLES

    sudo zypper update
    
  2. [A] Installationskomponenten behövs för klusterresurser

    sudo zypper in socat
    
  3. [A] Installera azure-lb-komponenten som behövs för klusterresurser

    sudo zypper in resource-agents
    

    Anteckning

    Kontrollera versionen av paketets resursagenter och kontrollera att minimikraven för versionen är uppfyllda:

    • För SLES 12 SP4/SP5 måste versionen minst vara resource-agents-4.3.018.a7fb5035-3.30.1.
    • För SLES 15/15 SP1 måste versionen minst vara resource-agents-4.3.0184.6ee15eb2-4.13.1.
  4. [A] Konfigurera operativsystemet

    I vissa fall skapar pacemaker många processer och därmed uttömer det tillåtna antalet processer. I sådana fall kan ett pulsslag mellan klusternoderna misslyckas och leda till redundans för dina resurser. Vi rekommenderar att du ökar det högsta tillåtna antalet processer genom att ange följande parameter.

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

    Minska storleken på den filbaserade cachen. Mer information finns i Låg skrivprestanda på SLES 11/12-servrar med stort RAM-minne.

    sudo vi /etc/sysctl.conf
    
    # Change/set the following settings
    vm.dirty_bytes = 629145600
    vm.dirty_background_bytes = 314572800
    
  5. [A] Konfigurera cloud-netconfig-azure för HA-kluster

    Anteckning

    Kontrollera den installerade versionen av paketet cloud-netconfig-azure genom att köra zypper info cloud-netconfig-azure. Om versionen i din miljö är 1.3 eller högre behöver du inte längre ignorera hanteringen av nätverksgränssnitt i plugin-programmet för molnnätverk. Om versionen är lägre än 1.3 rekommenderar vi att du uppdaterar paketet cloud-netconfig-azure till den senaste tillgängliga versionen.

    Ändra konfigurationsfilen för nätverksgränssnittet enligt nedan för att förhindra att plugin-programmet för molnnätverk tar bort den virtuella IP-adressen (Pacemaker måste styra VIP-tilldelningen). Mer information finns i SUSE KB 7023633.

    # 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] Aktivera ssh-åtkomst

    sudo ssh-keygen
    
    # Enter file in which to save the key (/root/.ssh/id_rsa): -> Press ENTER
    # Enter passphrase (empty for no passphrase): -> Press ENTER
    # Enter same passphrase again: -> Press ENTER
    
    # copy the public key
    sudo cat /root/.ssh/id_rsa.pub
    
  7. [2] Aktivera ssh-åtkomst

    
    sudo ssh-keygen
    
    # Enter file in which to save the key (/root/.ssh/id_rsa): -> Press ENTER
    # Enter passphrase (empty for no passphrase): -> Press ENTER
    # Enter same passphrase again: -> Press 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] Aktivera ssh-åtkomst

    # 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] Installera agentpaketet För stängslet, om STONITH-enheten används, baserat på Azure Fence Agent.

    sudo zypper install fence-agents
    

    Viktigt

    Den installerade versionen av paketstängselagenter måste vara minst 4.4.0 för att dra nytta av de snabbare redundanstiderna med Azure Fence Agent om en klusternod måste vara inhägnad. Vi rekommenderar att du uppdaterar paketet om du kör en lägre version.

  10. [A] Installera Azure Python SDK

    • På SLES 12 SP4 eller SLES 12 SP5
    
     # You may need to activate the Public cloud extention first
     SUSEConnect -p sle-module-public-cloud/12/x86_64
     sudo zypper install python-azure-mgmt-compute
    
    • På SLES 15 och senare
    
     # You may need to activate the Public cloud extention 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
    

    Viktigt

    Beroende på din version och avbildningstyp kan du behöva aktivera tillägget för offentligt moln för din version av operativsystemet innan du kan installera Azure Python SDK. Du kan kontrollera tillägget genom att köra SUSEConnect ---list-extensions.
    Så här uppnår du snabbare redundans med Azure Fence Agent:

    • på SLES 12 SP4 eller SLES 12 SP5 installerar du version 4.6.2 eller senare av paketet python-azure-mgmt-compute
    • på SLES 15.X installera version 4.6.2 av paketet python 3-azure-mgmt-compute, men inte högre. Undvik version 17.0.0-6.7.1 av paketet python 3-azure-mgmt-compute eftersom den innehåller ändringar som är inkompatibla med Azure Fence Agent
  11. [A] Konfigurera värdnamnsmatchning

    Du kan antingen använda en DNS-server eller ändra /etc/hosts på alla noder. Det här exemplet visar hur du använder filen /etc/hosts. Ersätt IP-adressen och värdnamnet i följande kommandon.

    Viktigt

    Om du använder värdnamn i klusterkonfigurationen är det viktigt att ha en tillförlitlig värdnamnsmatchning. Klusterkommunikationen misslyckas om namnen inte är tillgängliga och det kan leda till fördröjningar i redundansen i klustret. Fördelen med att använda /etc/hosts är att klustret blir oberoende av DNS, vilket också kan vara en enskild felpunkt.

    sudo vi /etc/hosts
    
    

    Infoga följande rader i /etc/hosts. Ändra IP-adressen och värdnamnet så att de matchar din miljö

    # 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] Installera kluster

  • om du använder SBD-enheter för avstängning

    sudo ha-cluster-init -u
    
    # ! 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] Press ENTER
    # Port for ring0 [5405] Press 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
    
  • om du inte använder SBD-enheter för avstängning

    sudo ha-cluster-init -u
    
    # ! 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] Press ENTER
    # Port for ring0 [5405] Press 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
    
  1. [2] Lägg till nod i kluster

    sudo ha-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 (e.g.: 192.168.1.1) []10.0.0.6
    # /root/.ssh/id_rsa already exists - overwrite (y/n)? n
    
  2. [A] Ändra hacluster-lösenordet till samma lösenord

    sudo passwd hacluster
    
  3. [A] Justera inställningarna för synkronisering.

    sudo vi /etc/corosync/corosync.conf
    

    Lägg till följande fetstilta innehåll i filen om värdena inte finns där eller olika. Se till att ändra token till 30000 för att tillåta minnesbevarande underhåll. Mer information finns i den här artikeln för Linux eller 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
    }
    

    Starta sedan om tjänstensync

    sudo service corosync restart
    

Standardkonfiguration för pacemaker för SBD

Konfigurationen i det här avsnittet gäller endast om du använder SBD STONITH.

  1. [1] Aktivera användning av en STONITH-enhet och ange gränsens fördröjning
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="15" timeout="15"

Skapa en STONITH-enhet för Azure Fence-agenten

Det här avsnittet i dokumentationen gäller endast om du använder STONITH, baserat på Azure Fence-agenten. STONITH-enheten använder ett huvudnamn för tjänsten för att auktorisera mot Microsoft Azure. Följ de här stegen för att skapa ett huvudnamn för tjänsten.

  1. Gå till https://portal.azure.com
  2. Öppna Azure Active Directory bladet
    Gå till Egenskaper och skriv ned katalog-ID:t. Det här är klientorganisations-ID:t.
  3. Klicka på Appregistreringar
  4. Klicka på Ny registrering
  5. Ange ett Namn och välj "Endast konton i den här organisationskatalogen"
  6. Välj Programtyp "Webb", ange en inloggnings-URL (till exempel http: / /localhost) och klicka på Lägg till
    Inloggnings-URL:en används inte och kan vara en giltig URL
  7. Välj Certifikat och hemligheter och klicka sedan på Ny klienthemlighet
  8. Ange en beskrivning för en ny nyckel, välj "Upphör aldrig att gälla" och klicka på Lägg till
  9. Skriv ned värdet. Det används som lösenord för tjänstens huvudnamn
  10. Välj Översikt. Skriv ned program-ID:t. Det används som användarnamn för tjänstens huvudnamn

[1] Skapa en anpassad roll för stängselagenten

Tjänstens huvudnamn har inte behörighet att komma åt dina Azure-resurser som standard. Du måste ge tjänstens huvudnamn behörighet att starta och stoppa (avallokera) alla virtuella datorer i klustret. Om du inte redan har skapat den anpassade rollen kan du skapa den med hjälp av PowerShell eller Azure CLI

Använd följande innehåll för indatafilen. Du måste anpassa innehållet efter dina prenumerationer. Ersätt c276fc76-9cd4-44c9-99a7-4fd71546436e och e91d47c4-76f3-4271-a796-21b4ecfe3624 med ID:n för din prenumeration. Om du bara har en prenumeration tar du bort den andra posten i AssignableScopes.

{
      "Name": "Linux Fence Agent Role",
      "description": "Allows to power-off and start virtual machines",
      "assignableScopes": [
              "/subscriptions/e663cc2d-722b-4be1-b636-bbd9e4c60fd9",
              "/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
      ],
      "actions": [
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/powerOff/action",
              "Microsoft.Compute/virtualMachines/start/action"
      ],
      "notActions": [],
      "dataActions": [],
      "notDataActions": []
}

[A] Tilldela den anpassade rollen till tjänstens huvudnamn

Tilldela den anpassade rollen "Linux Fence Agent Role" som skapades i det senaste kapitlet till tjänstens huvudnamn. Använd inte rollen Ägare längre! Detaljerade anvisningar finns i Tilldela Azure-roller med hjälp av Azure Portal.
Se till att tilldela rollen för båda klusternoderna.

[1] Skapa STONITH-enheter

När du har redigerat behörigheterna för de virtuella datorerna kan du konfigurera STONITH-enheterna i klustret.

Anteckning

Alternativet "pcmk_host_map" krävs ENDAST i kommandot om värdnamnen och namnen på virtuella Azure-datorer INTE är identiska. Ange mappningen i formatet värdnamn:vm-name. Se avsnittet fetstil i kommandot.

sudo crm configure property stonith-enabled=true
crm configure property concurrent-fencing=true
# replace the bold string with your subscription ID, resource group of the VM, tenant ID, service principal application ID and password
sudo crm configure primitive rsc_st_azure stonith:fence_azure_arm \
  params subscriptionId="subscription ID" resourceGroup="resource group" tenantId="tenant ID" login="application ID" passwd="password" \
  pcmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 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

Viktigt

Övervaknings- och avstängningsåtgärderna avser serialiseras. Det innebär att om det finns en övervakningsåtgärd som körs längre och samtidiga avstängningshändelsen, finns det ingen fördröjning i redundansen av klustret på grund av den övervakningsåtgärd som redan körs.

Tips

Azure Fence Agent kräver utgående anslutning till offentliga slutpunkter enligt dokumentation, tillsammans med möjliga lösningar, i offentlig slutpunktsanslutning för virtuella datorer med hjälp av standard-ILB.

Pacemakerkonfiguration för schemalagda Händelser i Azure

Azure erbjuder schemalagda händelser. Schemalagda händelser tillhandahålls via metadatatjänsten och ger tid för programmet att förbereda för händelser som avstängning av virtuella datorer, omdistribution av virtuella datorer osv. Resursagenten azure-events övervakar schemalagda Azure-händelser. Om händelser identifieras och resursagenten fastställer att det finns en annan tillgänglig klusternod placerar azure-events-agenten målklusternoden i vänteläge för att tvinga klustret att migrera resurser bort från den virtuella datorn med väntande schemalagda Azure-händelser. För att uppnå detta måste ytterligare Pacemaker-resurser konfigureras.

  1. [A] Kontrollera att paketet för azure-events-agenten redan är installerat och uppdaterat.
sudo zypper info resource-agents
  1. [1] Konfigurera resurserna i Pacemaker.

#Place the cluster in maintenance mode
sudo crm configure property maintenance-mode=true

#Create Pacemaker resources for the Azure agent
sudo crm configure primitive rsc_azure-events ocf:heartbeat:azure-events op monitor interval=10s
sudo crm configure clone cln_azure-events rsc_azure-events

#Take the cluster out of maintenance mode
sudo crm configure property maintenance-mode=false

Anteckning

När du har konfigurerat pacemakerresurserna för azure-events-agenten kan du få varningsmeddelanden som:
VARNING! cib-bootstrap-options: okänt attribut "hostName_ värdnamn"
VARNING: cib-bootstrap-options: okänt attribut "azure-events_globalPullState"
VARNING! cib-bootstrap-options: okänt attribut "hostName_ värdnamn"
Dessa varningsmeddelanden kan ignoreras.

Nästa steg