Delen via


Zelfstudie: Beschikbaarheidsgroepen configureren voor SQL Server op virtuele SLES-machines in Azure

Van toepassing op: SQL Server op Azure VM

Notitie

In deze zelfstudie gebruiken we SQL Server 2022 (16.x) met SUSE Linux Enterprise Server (SLES) v15, maar het is mogelijk om SQL Server 2019 (15.x) te gebruiken met SLES v12 of SLES v15 om hoge beschikbaarheid te configureren.

In deze zelfstudie leert u het volgende:

  • Een nieuwe resourcegroep, beschikbaarheidsset en virtuele Linux-machines (VM's) maken
  • Hoge beschikbaarheid inschakelen
  • Een Pacemaker-cluster maken
  • Een fencing-agent configureren door een STONITH-apparaat te maken
  • SQL Server en mssql-tools installeren op SLES
  • AlwaysOn-beschikbaarheidsgroep in SQL Server configureren
  • Resources van de beschikbaarheidsgroep configureren in het Pacemaker-cluster
  • Een failover en de fencing-agent testen

In deze zelfstudie wordt de Azure CLI gebruikt om resources te implementeren in Azure.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

  • Voor dit artikel is versie 2.0.30 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een brongroep maken

Als u meer dan één abonnement hebt, stelt u het abonnement in waarop u deze resources wilt implementeren.

Gebruik de volgende opdracht om een resourcegroep <resourceGroupName> in een regio te maken. Vervang <resourceGroupName> door een naam van uw keuze. In deze zelfstudie wordt East US 2 gebruikt. Zie de volgende quickstart voor meer informatie.

az group create --name <resourceGroupName> --location eastus2

Een beschikbaarheidsset maken

In de volgende stap gaat u een beschikbaarheidsset maken. Voer de volgende opdracht uit in Azure Cloud Shell en vervang <resourceGroupName> door de naam van de resourcegroep. Kies een naam voor <availabilitySetName>.

az vm availability-set create \
    --resource-group <resourceGroupName> \
    --name <availabilitySetName> \
    --platform-fault-domain-count 2 \
    --platform-update-domain-count 2

Wanneer de opdracht is voltooid, zou u de volgende resultaten moeten hebben:

{
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/availabilitySets/<availabilitySetName>",
  "location": "eastus2",
  "name": "<availabilitySetName>",
  "platformFaultDomainCount": 2,
  "platformUpdateDomainCount": 2,
  "proximityPlacementGroup": null,
  "resourceGroup": "<resourceGroupName>",
  "sku": {
    "capacity": null,
    "name": "Aligned",
    "tier": null
  },
  "statuses": null,
  "tags": {},
  "type": "Microsoft.Compute/availabilitySets",
  "virtualMachines": []
}

Een virtueel netwerk en een subnet maken

  1. Maak een benoemd subnet met een vooraf toegewezen IP-adresbereik. Vervang deze waarden in de volgende opdracht:

    • <resourceGroupName>
    • <vNetName>
    • <subnetName>
    az network vnet create \
        --resource-group <resourceGroupName> \
        --name <vNetName> \
        --address-prefix 10.1.0.0/16 \
        --subnet-name <subnetName> \
        --subnet-prefix 10.1.1.0/24
    

    Met de vorige opdracht maakt u een VNet en een subnet met een aangepast IP-bereik.

SLES-VM's maken in de beschikbaarheidsset

  1. Bekijk een lijst met installatiekopieën van virtuele machines die SLES v15 SP4 aanbieden met BYOS (Bring Your Own Subscription). U kunt ook de SUSE Enterprise Linux 15 SP4 + Patching-VM (sles-15-sp4-basic) gebruiken.

    az vm image list --all --offer "sles-15-sp3-byos"
    # if you want to search the basic offers you could search using the command below
    az vm image list --all --offer "sles-15-sp3-basic"
    

    U ziet de volgende resultaten wanneer u zoekt naar de BYOS-installatiekopieën:

    [
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen1",
          "urn": "SUSE:sles-15-sp3-byos:gen1:2022.05.05",
          "version": "2022.05.05"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen1",
          "urn": "SUSE:sles-15-sp3-byos:gen1:2022.07.19",
          "version": "2022.07.19"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen1",
          "urn": "SUSE:sles-15-sp3-byos:gen1:2022.11.10",
          "version": "2022.11.10"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen2",
          "urn": "SUSE:sles-15-sp3-byos:gen2:2022.05.05",
          "version": "2022.05.05"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen2",
          "urn": "SUSE:sles-15-sp3-byos:gen2:2022.07.19",
          "version": "2022.07.19"
       },
       {
          "offer": "sles-15-sp3-byos",
          "publisher": "SUSE",
          "sku": "gen2",
          "urn": "SUSE:sles-15-sp3-byos:gen2:2022.11.10",
          "version": "2022.11.10"
       }
    ]
    

    In deze zelfstudie wordt SUSE:sles-15-sp3-byos:gen1:2022.11.10 gebruikt.

    Belangrijk

    Computernamen moeten minder dan 15 tekens lang zijn om een beschikbaarheidsgroep in te stellen. Gebruikersnamen mogen geen hoofdletters bevatten en wachtwoorden moeten tussen de 12 en 72 tekens bevatten.

  2. Maak drie VM's in de beschikbaarheidsset. Vervang deze waarden in de volgende opdracht:

    • <resourceGroupName>
    • <VM-basename>
    • <availabilitySetName>
    • <VM-Size> - Een voorbeeld is 'Standard_D16s_v3'
    • <username>
    • <adminPassword>
    • <vNetName>
    • <subnetName>
    for i in `seq 1 3`; do
        az vm create \
           --resource-group <resourceGroupName> \
           --name <VM-basename>$i \
           --availability-set <availabilitySetName> \
           --size "<VM-Size>" \
           --os-disk-size-gb 128 \
           --image "SUSE:sles-15-sp3-byos:gen1:2022.11.10" \
           --admin-username "<username>" \
           --admin-password "<adminPassword>" \
           --authentication-type all \
           --generate-ssh-keys \
           --vnet-name "<vNetName>" \
           --subnet "<subnetName>" \
           --public-ip-sku Standard \
           --public-ip-address ""
        done
    

Met de vorige opdracht worden de VM's gemaakt met behulp van het eerder gedefinieerde VNet. Zie het artikel over az vm create voor meer informatie over de verschillende configuraties.

De opdracht bevat ook de parameter voor het --os-disk-size-gb maken van een aangepaste grootte van het besturingssysteemstation van 128 GB. Als u deze grootte later vergroot, vouwt u de juiste mapvolumes uit om tegemoet te komen aan uw installatie, configureert u de LVM (Logical Volume Manager).

Wanneer de opdracht voor elke virtuele machine is voltooid, moet u ongeveer de volgende resultaten verkrijgen:

{
  "fqdns": "",
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/sles1",
  "location": "westus",
  "macAddress": "<Some MAC address>",
  "powerState": "VM running",
  "privateIpAddress": "<IP1>",
  "resourceGroup": "<resourceGroupName>",
  "zones": ""
}

Verbinding met de gemaakte VM's testen

Verbinding maken naar elk van de VM's met behulp van de volgende opdracht in Azure Cloud Shell. Als u uw VM-IP-adressen niet kunt vinden, volgt u deze quickstart in Azure Cloud Shell.

ssh <username>@<publicIPAddress>

Als de verbinding is geslaagd, ziet u de volgende uitvoer die de Linux-terminal aangeeft:

[<username>@sles1 ~]$

Typ exit om de SSH-sessie te verlaten.

Registreren bij SUSE Verbinding maken en pakketten met hoge beschikbaarheid installeren

Als u deze zelfstudie wilt voltooien, moeten uw VM's zijn geregistreerd bij SUSE Verbinding maken om updates en ondersteuning te ontvangen. Vervolgens kunt u de extensiemodule voor hoge beschikbaarheid of het patroon installeren. Dit is een set pakketten die hoge beschikbaarheid mogelijk maakt.

Het is eenvoudiger om tegelijkertijd een SSH-sessie te openen op elk van de VM's (knooppunten), omdat dezelfde opdrachten moeten worden uitgevoerd op elke VIRTUELE machine in het hele artikel.

Als u meerdere sudo opdrachten kopieert en plakt en om een wachtwoord wordt gevraagd, worden de extra opdrachten niet uitgevoerd. Voer deze opdrachten afzonderlijk uit.

Verbinding maken op elk VM-knooppunt om de volgende stappen uit te voeren.

Registreer de VIRTUELE machine bij SUSE Verbinding maken

Als u uw VM-knooppunt wilt registreren bij SUSE Verbinding maken vervangt u deze waarden in de volgende opdracht op alle knooppunten:

  • <subscriptionEmailAddress>
  • <registrationCode>
sudo SUSEConnect
    --url=https://scc.suse.com
    -e <subscriptionEmailAddress> \
    -r <registrationCode>

Extensie voor hoge beschikbaarheid installeren

Als u de extensie voor hoge beschikbaarheid wilt installeren, voert u de volgende opdracht uit op alle knooppunten:

sudo SUSEConnect -p sle-ha/15.3/x86_64 -r <registration code for Partner Subscription for High Availability Extension>

SSH-toegang zonder wachtwoord tussen knooppunten configureren

Met SSH-toegang zonder wachtwoord kunnen uw VM's met elkaar communiceren met behulp van openbare SSH-sleutels. U moet SSH-sleutels op elk knooppunt configureren en deze sleutels naar elk knooppunt kopiëren.

Nieuwe SSH-sleutels genereren

De vereiste SSH-sleutelgrootte is 4096 bits. Ga op elke VIRTUELE machine naar de /root/.ssh map en voer de volgende opdracht uit:

ssh-keygen -t rsa -b 4096

Tijdens deze stap wordt u mogelijk gevraagd een bestaand SSH-bestand te overschrijven. U moet akkoord gaan met deze prompt. U hoeft geen wachtwoordzin in te voeren.

De openbare SSH-sleutels kopiëren

Op elke virtuele machine moet u de openbare sleutel kopiëren van het knooppunt dat u zojuist hebt gemaakt, met behulp van de ssh-copy-id opdracht. Als u de doelmap op de doel-VM wilt opgeven, kunt u de -i parameter gebruiken.

In de volgende opdracht kan het account hetzelfde account zijn dat u voor elk knooppunt hebt geconfigureerd bij het <username> maken van de virtuele machine. U kunt het root account ook gebruiken, maar dit wordt niet aanbevolen in een productieomgeving.

sudo ssh-copy-id <username>@sles1
sudo ssh-copy-id <username>@sles2
sudo ssh-copy-id <username>@sles3

Toegang zonder wachtwoord controleren vanaf elk knooppunt

Gebruik de ssh opdracht van elk knooppunt om te bevestigen dat de openbare SSH-sleutel naar elk knooppunt is gekopieerd. Als u de sleutels correct hebt gekopieerd, wordt u niet om een wachtwoord gevraagd en wordt de verbinding tot stand gebracht.

In dit voorbeeld maken we verbinding met de tweede en derde knooppunten vanaf de eerste VM (sles1). Het account kan opnieuw <username> hetzelfde account zijn dat u voor elk knooppunt hebt geconfigureerd bij het maken van de VIRTUELE machine

ssh <username>@sles2
ssh <username>@sles3

Herhaal dit proces van alle drie de knooppunten, zodat elk knooppunt met de andere kan communiceren zonder wachtwoorden.

Naamomzetting configureren

U kunt naamomzetting configureren met behulp van DNS of door het etc/hosts bestand handmatig op elk knooppunt te bewerken.

Zie Sql Server toevoegen op een Linux-host aan een Active Directory-domein voor meer informatie over DNS en Active Directory.

Belangrijk

U wordt aangeraden uw privé-IP-adres in het vorige voorbeeld te gebruiken. Als u het openbare IP-adres in deze configuratie gebruikt, mislukt de installatie en wordt uw VIRTUELE machine blootgesteld aan externe netwerken.

De VM's en hun IP-adres die in dit voorbeeld worden gebruikt, worden als volgt weergegeven:

  • sles1: 10.0.0.85
  • sles2: 10.0.0.86
  • sles3: 10.0.0.87

Het cluster configureren

Voor deze zelfstudie is uw eerste VM (sles1) knooppunt 1, uw tweede VM (sles2) knooppunt 2 en uw derde VM (sles3) knooppunt 3. Zie Pacemaker instellen op SUSE Linux Enterprise Server in Azure voor meer informatie over clusterinstallatie.

Clusterinstallatie

  1. Voer de volgende opdracht uit om het ha-cluster-bootstrap pakket op knooppunt 1 te installeren en start het knooppunt opnieuw op. In dit voorbeeld is dit de sles1 virtuele machine.

    sudo zypper install ha-cluster-bootstrap
    

    Nadat het knooppunt opnieuw is opgestart, voert u de volgende opdracht uit om het cluster te implementeren:

    sudo crm cluster init --name sqlcluster
    

    U ziet een vergelijkbare uitvoer als in het volgende voorbeeld:

    Do you want to continue anyway (y/n)? y
      Generating SSH key for root
      The user 'hacluster' will have the login shell configuration changed to /bin/bash
    Continue (y/n)? y
      Generating SSH key for hacluster
      Configuring csync2
      Generating csync2 shared key (this may take a while)...done
      csync2 checking files...done
      Detected cloud platform: microsoft-azure
    
    Configure Corosync (unicast):
      This will configure the cluster messaging layer.  You will need
      to specify a network address over which to communicate (default
      is eth0's network, but you can use the network address of any
      active interface).
    
      Address for ring0 [10.0.0.85]
      Port for ring0 [5405]
    
    Configure SBD:
      If you have shared storage, for example a SAN or iSCSI target,
      you can use it avoid split-brain scenarios by configuring SBD.
      This requires a 1 MB partition, accessible to all nodes in the
      cluster.  The device path must be persistent and consistent
      across all nodes in the cluster, so /dev/disk/by-id/* devices
      are a good choice.  Note that all data on the partition you
      specify here will be destroyed.
    
    Do you wish to use SBD (y/n)? n
    WARNING: Not configuring SBD - STONITH will be disabled.
      Hawk cluster interface is now running. To see cluster status, open:
        https://10.0.0.85:7630/
      Log in with username 'hacluster', password 'linux'
    WARNING: You should change the hacluster password to something more secure!
      Waiting for cluster..............done
      Loading initial cluster configuration
    
    Configure Administration IP Address:
      Optionally configure an administration virtual IP
      address. The purpose of this IP address is to
      provide a single IP that can be used to interact
      with the cluster, rather than using the IP address
      of any specific cluster node.
    
    Do you wish to configure a virtual IP address (y/n)? y
      Virtual IP []10.0.0.89
      Configuring virtual IP (10.0.0.89)....done
    
    Configure Qdevice/Qnetd:
      QDevice participates in quorum decisions. With the assistance of
      a third-party arbitrator Qnetd, it provides votes so that a cluster
      is able to sustain more node failures than standard quorum rules
      allow. It is recommended for clusters with an even number of nodes
      and highly recommended for 2 node clusters.
    
    Do you want to configure QDevice (y/n)? n
    Done (log saved to /var/log/crmsh/ha-cluster-bootstrap.log)
    
  2. Controleer de status van het cluster op knooppunt 1 met behulp van de volgende opdracht:

    sudo crm status
    

    De uitvoer moet de volgende tekst bevatten als deze is geslaagd:

    1 node configured
    1 resource instance configured
    
  3. Wijzig op alle knooppunten het wachtwoord voor hacluster iets veiliger met behulp van de volgende opdracht. U moet ook uw root gebruikerswachtwoord wijzigen:

    sudo passwd hacluster
    
    sudo passwd root
    
  4. Voer de volgende opdracht uit op knooppunt 2 en knooppunt 3 om het crmsh pakket eerst te installeren:

    sudo zypper install crmsh
    

    Voer nu de opdracht uit om deel te nemen aan het cluster:

    sudo crm cluster join
    

    Hier volgen enkele interacties die u kunt verwachten:

    Join This Node to Cluster:
    You will be asked for the IP address of an existing node, from which
    configuration will be copied.  If you have not already configured
    passwordless ssh between nodes, you will be prompted for the root
    password of the existing node.
    
      IP address or hostname of existing node (e.g.: 192.168.1.1) []10.0.0.85
      Configuring SSH passwordless with root@10.0.0.85
      root@10.0.0.85's password:
      Configuring SSH passwordless with hacluster@10.0.0.85
      Configuring csync2...done
    Merging known_hosts
    WARNING: scp to sles2 failed (Exited with error code 1, Error output: The authenticity of host 'sles2 (10.1.1.5)' can't be established.
    ECDSA key fingerprint is SHA256:UI0iyfL5N6X1ZahxntrScxyiamtzsDZ9Ftmeg8rSBFI.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    lost connection
    ), known_hosts update may be incomplete
    Probing for new partitions...done
      Address for ring0 [10.0.0.86]
    
    Hawk cluster interface is now running. To see cluster status, open:
        https://10.0.0.86:7630/
      Log in with username 'hacluster', password 'linux'
    WARNING: You should change the hacluster password to something more secure!
    Waiting for cluster.....done
    Reloading cluster configuration...done
      Done (log saved to /var/log/crmsh/ha-cluster-bootstrap.log)
    
  5. Zodra u alle machines aan het cluster hebt toegevoegd, controleert u uw resource om te zien of alle VM's online zijn:

    sudo crm status
    

    U moet de volgende uitvoer zien:

    Stack: corosync
     Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
     Last updated: Mon Mar  6 18:01:17 2023
     Last change:  Mon Mar  6 17:10:09 2023 by root via cibadmin on sles1
    
    3 nodes configured
    1 resource instance configured
    
    Online: [ sles1 sles2 sles3 ]
    
    Full list of resources:
    
     admin-ip       (ocf::heartbeat:IPaddr2):       Started sles1
    
  6. Installeer het clusterresourceonderdeel. Voer de volgende opdracht uit op alle knooppunten.

    sudo zypper in socat
    
  7. Installeer het azure-lb onderdeel. Voer de volgende opdracht uit op alle knooppunten.

    sudo zypper in resource-agents
    
  8. Configureer het besturingssysteem. Doorloop de volgende stappen op alle knooppunten.

    1. Bewerk het configuratiebestand:

      sudo vi /etc/systemd/system.conf
      
    2. Wijzig de DefaultTasksMax waarde in 4096:

      #DefaultTasksMax=512
      DefaultTasksMax=4096
      
    3. Sla de vi-editor op en sluit deze af.

    4. Voer de volgende opdracht uit om deze instelling te activeren:

      sudo systemctl daemon-reload
      
    5. Test of de wijziging is geslaagd:

      sudo systemctl --no-pager show | grep DefaultTasksMax
      
  9. Verklein de grootte van de vuile cache. Doorloop de volgende stappen op alle knooppunten.

    1. Bewerk het configuratiebestand voor systeembeheer:

      sudo vi /etc/sysctl.conf
      
    2. Voeg de volgende twee regels toe aan het bestand:

      vm.dirty_bytes = 629145600
      vm.dirty_background_bytes = 314572800
      
    3. Sla de vi-editor op en sluit deze af.

  10. Installeer de Azure Python SDK op alle knooppunten met de volgende opdrachten:

    sudo zypper install fence-agents
    # Install the Azure Python SDK on SLES 15 or later:
    # 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
    

Fencing-agent configureren

Een STONITH-apparaat biedt een fencing-agent. De onderstaande instructies zijn voor deze zelfstudie gewijzigd. Zie Een Azure Fence Agent STONITH-apparaat maken voor meer informatie.

Controleer de versie van de Azure Fence-agent om ervoor te zorgen dat deze wordt bijgewerkt. Gebruik de volgende opdracht:

sudo zypper info resource-agents

De uitvoer moet ongeveer overeenkomen met onderstaand voorbeeld.

Information for package resource-agents:
----------------------------------------
Repository     : SLE-Product-HA15-SP3-Updates
Name           : resource-agents
Version        : 4.8.0+git30.d0077df0-150300.8.37.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Support Level  : Level 3
Installed Size : 2.5 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : resource-agents-4.8.0+git30.d0077df0-150300.8.37.1.src
Upstream URL   : http://linux-ha.org/
Summary        : HA Reusable Cluster Resource Scripts
Description    : A set of scripts to interface with several services
                 to operate in a High Availability environment for both
                 Pacemaker and rgmanager service managers.

Nieuwe toepassing registreren in Microsoft Entra-id

Voer de volgende stappen uit om een nieuwe toepassing te registreren in Microsoft Entra ID (voorheen Azure Active Directory):

  1. Ga naar https://portal.azure.com.
  2. Open het deelvenster Eigenschappen van Microsoft Entra-id en noteer het Tenant ID.
  3. Selecteer App-registraties.
  4. Selecteer Nieuwe registratie.
  5. Voer een naam in, zoals <resourceGroupName>-app. Voor ondersteunde accounttypen selecteert u alleen Accounts in deze organisatiemap (alleen Microsoft - Één tenant).
  6. Selecteer Web voor omleidings-URI en voer een URL in (bijvoorbeeld http://localhost) en selecteer Toevoegen. De aanmeldings-URL kan elke geldige URL zijn. Als u klaar bent, selecteert u Registreren.
  7. Kies Certificaten en geheimen voor uw nieuwe app-registratie en selecteer vervolgens Nieuw clientgeheim.
  8. Voer een beschrijving in voor een nieuwe sleutel (clientgeheim) en selecteer Vervolgens Toevoegen.
  9. Noteer de waarde van het geheim. Het wordt gebruikt als het wachtwoord voor de service-principal.
  10. Selecteer Overzicht. Noteer de toepassings-id. Deze wordt gebruikt als de gebruikersnaam (aanmeldings-id in de onderstaande stappen) van de service-principal.

Aangepaste rol maken voor de omheiningsagent

Volg de zelfstudie Een aangepaste Azure-rol maken met Azure CLI.

Uw JSON-bestand moet er ongeveer uitzien als in het volgende voorbeeld.

  • Vervang <username> door een naam van uw keuze. Dit is om te voorkomen dat u dubbele roldefinities maakt.
  • Vervang <subscriptionId> door de id van uw Azure-abonnement.
{
  "Name": "Linux Fence Agent Role-<username>",
  "Id": null,
  "IsCustom": true,
  "Description": "Allows to power-off and start virtual machines",
  "Actions": [
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/powerOff/action",
    "Microsoft.Compute/virtualMachines/start/action"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<subscriptionId>"
  ]
}

Voer de volgende opdracht uit om de rol toe te voegen:

  • Vervang <filename> door de naam van het bestand.
  • Als u de opdracht uitvoert vanaf een ander pad dan de map waarnaar het bestand is opgeslagen, neemt u het mappad van het bestand op in de opdracht.
az role definition create --role-definition "<filename>.json"

U moet de volgende uitvoer zien:

{
  "assignableScopes": [
    "/subscriptions/<subscriptionId>"
  ],
  "description": "Allows to power-off and start virtual machines",
  "id": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/roleDefinitions/<roleNameId>",
  "name": "<roleNameId>",
  "permissions": [
    {
      "actions": [
        "Microsoft.Compute/*/read",
        "Microsoft.Compute/virtualMachines/powerOff/action",
        "Microsoft.Compute/virtualMachines/start/action"
      ],
      "dataActions": [],
      "notActions": [],
      "notDataActions": []
    }
  ],
  "roleName": "Linux Fence Agent Role-<username>",
  "roleType": "CustomRole",
  "type": "Microsoft.Authorization/roleDefinitions"
}

De aangepaste rol toewijzen aan de service-principal

Wijs de aangepaste rol Linux Fence Agent Role-<username> toe die in de laatste stap is gemaakt, aan de service-principal. Herhaal deze stappen voor alle knooppunten.

Waarschuwing

Gebruik hier niet de rol Eigenaar.

  1. Ga naar https://portal.azure.com
  2. Het deelvenster Alle resources openen
  3. De virtuele machine van het eerste clusterknooppunt selecteren
  4. Selecteer Toegangsbeheer (IAM)
  5. Selecteer Roltoewijzingen toevoegen
  6. Selecteer de rol Linux Fence Agent Role-<username> in de lijst Rol
  7. Laat Wijs toegang toe als de standaardwaarde Users, group, or service principal.
  8. Voer in de lijst Selecteren de naam in van de toepassing die u eerder hebt gemaakt, bijvoorbeeld <resourceGroupName>-app.
  9. Selecteer Opslaan.

STONITH-apparaten maken

  1. Voer de volgende opdrachten uit op knooppunt 1:

    • Vervang de <ApplicationID> door de id uit uw toepassingsregistratie.
    • Vervang het <servicePrincipalPassword> door de waarde uit het clientgeheim.
    • Vervang de <resourceGroupName> door de resourcegroep uit uw abonnement dat u voor deze zelfstudie hebt gebruikt.
    • Vervang de <tenantID> en de <subscriptionId> door die uit uw Azure-abonnement.
  2. Voer deze opdracht uit crm configure om de CRM-prompt te openen:

    sudo crm configure
    
  3. Voer in de CRM-prompt de volgende opdracht uit om de resource-eigenschappen te configureren, waarmee de resource wordt gemaakt die wordt aangeroepen rsc_st_azure , zoals wordt weergegeven in het volgende voorbeeld:

    primitive rsc_st_azure stonith:fence_azure_arm params subscriptionId="subscriptionID" resourceGroup="ResourceGroup_Name" tenantId="TenantID" login="ApplicationID" passwd="servicePrincipalPassword" pcmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 pcmk_host_map="sles1:sles1;sles2:sles2;sles3:sles3" op monitor interval=3600 timeout=120
    commit
    quit
    
  4. Voer de volgende opdrachten uit om de fencing-agent te configureren:

    sudo crm configure property stonith-timeout=900
    sudo crm configure property stonith-enabled=true
    sudo crm configure property concurrent-fencing=true
    
  5. Controleer de status van uw cluster om te zien dat STONITH is ingeschakeld:

    sudo crm status
    

    Als het goed is, ziet u uitvoer die lijkt op de volgende tekst:

    Stack: corosync
     Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
     Last updated: Mon Mar  6 18:20:17 2023
     Last change:  Mon Mar  6 18:10:09 2023 by root via cibadmin on sles1
    
    3 nodes configured
    2 resource instances configured
    
    Online: [ sles1 sles2 sles3 ]
    
    Full list of resources:
    
    admin-ip       (ocf::heartbeat:IPaddr2):       Started sles1
    rsc_st_azure   (stonith:fence_azure_arm):      Started sles2
    

SQL Server en MSSQL-hulpprogramma's installeren

Gebruik de onderstaande sectie om SQL Server en mssql-tools te installeren. Zie SQL Server installeren op SUSE Linux Enterprise Server voor meer informatie.

Voer deze stappen uit op alle knooppunten in deze sectie.

SQL Server installeren op de VM's

De volgende opdrachten worden gebruikt om SQL Server te installeren:

  1. Download het configuratiebestand voor de SLES-opslagplaats van Microsoft SQL Server 2019:

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2022.repo
    
  2. Vernieuw uw opslagplaatsen.

    sudo zypper --gpg-auto-import-keys refresh
    

    Gebruik de volgende opdracht om de sleutel voor microsoft-pakketondertekening op uw systeem te importeren om ervoor te zorgen dat de ondertekeningssleutel van Microsoft-pakketten op uw systeem is geïnstalleerd:

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    
  3. Voer de volgende opdrachten uit om SQL Server te installeren:

    sudo zypper install -y mssql-server
    
  4. Nadat de installatie van het pakket is voltooid, voert mssql-conf setup u de aanwijzingen uit om het SA-wachtwoord in te stellen en kiest u uw editie.

    sudo /opt/mssql/bin/mssql-conf setup
    

    Notitie

    Zorg ervoor dat u een sterk wachtwoord opgeeft voor het SA-account (minimale lengte 8 tekens, inclusief hoofdletters en kleine letters, grondtal 10 cijfers en/of niet-alfanumerieke symbolen).

  5. Zodra de configuratie is voltooid, controleert u of de service wordt uitgevoerd:

    systemctl status mssql-server
    

SQL Server-opdrachtregelprogramma's installeren

Met de volgende stappen installeert u de opdrachtregelprogramma's van SQL Server, namelijk sqlcmd en bcp.

  1. Voeg de Microsoft SQL Server-opslagplaats toe aan Zypper.

    sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/prod.repo
    
  2. Vernieuw uw opslagplaatsen.

    sudo zypper --gpg-auto-import-keys refresh
    
  3. Installeer mssql-tools met het unixODBC ontwikkelaarspakket. Zie Het Microsoft ODBC-stuurprogramma voor SQL Server (Linux) installeren voor meer informatie.

    sudo zypper install -y mssql-tools unixODBC-devel
    

Voor het gemak kunt u toevoegen /opt/mssql-tools/bin/ aan uw PATH omgevingsvariabele. U kunt de hulpprogramma's dan uitvoeren zonder het volledige pad op te geven. Voer de volgende opdrachten uit als u PATH wilt wijzigen voor zowel aanmeldingssessies als interactieve/niet-aanmeldingssessies:

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

SQL Server-agent voor hoge beschikbaarheid installeren

Voer de volgende opdracht uit op alle knooppunten om het agentpakket voor hoge beschikbaarheid voor SQL Server te installeren:

sudo zypper install mssql-server-ha

Poorten openen voor services met hoge beschikbaarheid

  1. U kunt de volgende firewallpoorten openen op alle knooppunten voor SQL Server- en HA-services: 1433, 2224, 3121, 5022, 5405, 21064.

    sudo firewall-cmd --zone=public --add-port=1433/tcp --add-port=2224/tcp --add-port=3121/tcp --add-port=5022/tcp --add-port=5405/tcp --add-port=21064 --permanent
    sudo firewall-cmd --reload
    

Een beschikbaarheidsgroep configureren

Gebruik de volgende stappen om een AlwaysOn-beschikbaarheidsgroep in SQL Server voor uw VM's te configureren. Zie AlwaysOn-beschikbaarheidsgroep in SQL Server configureren voor hoge beschikbaarheid op Linux voor meer informatie

Beschikbaarheidsgroepen inschakelen en SQL Server opnieuw starten

Schakel beschikbaarheidsgroepen in op elk knooppunt dat als host fungeert voor een SQL Server-exemplaar. Start vervolgens de mssql-server service opnieuw op. Voer de volgende opdrachten uit op elk knooppunt:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server

Een certificaat maken

Microsoft biedt geen ondersteuning voor Active Directory-verificatie voor het AG-eindpunt. Daarom moet u een certificaat gebruiken voor AG-eindpuntversleuteling.

  1. Verbinding maken naar alle knooppunten met behulp van SQL Server Management Studio (SSMS) of sqlcmd. Voer de volgende opdrachten uit om een AlwaysOn_health-sessie in te schakelen en een hoofdsleutel te maken:

    Belangrijk

    Als u extern verbinding maakt met uw SQL Server-exemplaar, moet poort 1433 zijn geopend op uw firewall. U moet ook voor elke VM binnenkomende verbindingen met poort 1433 in uw NSG toestaan. Zie Een beveiligingsregel maken voor informatie over het maken van een beveiligingsregel voor binnenkomend verkeer voor meer informatie.

    • Vervang het <MasterKeyPassword> door uw eigen wachtwoord.
    ALTER EVENT SESSION AlwaysOn_health ON SERVER
        WITH (STARTUP_STATE = ON);
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<MasterKeyPassword>';
    GO
    
  2. Verbinding maken naar de primaire replica met behulp van SSMS of sqlcmd. Met de onderstaande opdrachten maakt u een certificaat op /var/opt/mssql/data/dbm_certificate.cer en een persoonlijke sleutel op var/opt/mssql/data/dbm_certificate.pvk uw primaire SQL Server-replica:

    • Vervang het <PrivateKeyPassword> door uw eigen wachtwoord.
    CREATE CERTIFICATE dbm_certificate
        WITH SUBJECT = 'dbm';
    GO
    
    BACKUP CERTIFICATE dbm_certificate TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
            FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
            ENCRYPTION BY PASSWORD = '<PrivateKeyPassword>'
            );
    GO
    

Sluit de sqlcmd-sessie af door de exit opdracht uit te voeren en terug te keren naar uw SSH-sessie.

Het certificaat kopiëren naar de secundaire replica's en de certificaten maken op de server

  1. Kopieer de twee bestanden die op dezelfde locatie zijn gemaakt naar alle servers die de beschikbaarheidsreplica's zullen hosten.

    Voer op de primaire server de volgende scp-opdracht uit om het certificaat naar de doelservers te kopiëren:

    • Vervang en sles2 door <username> de gebruikersnaam en doel-VM-naam die u gebruikt.
    • Voer deze opdracht uit voor alle secundaire replica's.

    Notitie

    U hoeft sudo -i, voor het retourneren van de hoofdomgeving, niet uit te voeren. U kunt de sudo opdracht vóór elke opdracht uitvoeren.

    # The below command allows you to run commands in the root environment
    sudo -i
    
    scp /var/opt/mssql/data/dbm_certificate.* <username>@sles2:/home/<username>
    
  2. Voer op de doelserver de volgende opdracht uit:

    • Vervang <username> door uw gebruikersnaam.
    • Met de opdracht mv verplaatst u de bestanden of map van de ene locatie naar een andere.
    • De opdracht chown wordt gebruikt om de eigenaar en groep met bestanden, mappen of koppelingen te wijzigen.
    • Voer deze opdrachten uit voor alle secundaire replica's.
    sudo -i
    mv /home/<username>/dbm_certificate.* /var/opt/mssql/data/
    cd /var/opt/mssql/data
    chown mssql:mssql dbm_certificate.*
    
  3. Met het volgende Transact-SQL-script maakt u een certificaat vanuit de back-up die u op de primaire SQL Server-replica hebt gemaakt. Werk het script bij met sterke wachtwoorden. Het wachtwoord voor ontsleuteling is hetzelfde als het wachtwoord dat u hebt gebruikt voor het maken van het PVK-bestand in de vorige stap. Als u het certificaat wilt maken, voert u het volgende script uit met behulp van sqlcmd of SSMS op alle secundaire servers:

    CREATE CERTIFICATE dbm_certificate
        FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
        WITH PRIVATE KEY (
        FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
        DECRYPTION BY PASSWORD = '<PrivateKeyPassword>'
    );
    GO
    

De eindpunten voor databasespiegeling maken op alle replica's

Voer het volgende script uit op alle SQL Server-exemplaren met behulp van sqlcmd of SSMS:

CREATE ENDPOINT [Hadr_endpoint]
   AS TCP (LISTENER_PORT = 5022)
   FOR DATABASE_MIRRORING (
   ROLE = ALL,
   AUTHENTICATION = CERTIFICATE dbm_certificate,
ENCRYPTION = REQUIRED ALGORITHM AES
);
GO

ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GO

De beschikbaarheidsgroep maken

Verbinding maken naar het SQL Server-exemplaar dat als host fungeert voor de primaire replica met behulp van sqlcmd of SSMS. Voer de volgende opdracht uit om de beschikbaarheidsgroep te maken:

  • Vervang door ag1 de gewenste AG-naam.
  • Vervang de waarden van sles1, sles2 en sles3 door de namen van de SQL Server-exemplaren die de replica's hosten.
CREATE AVAILABILITY
GROUP [ag1]
WITH (
        DB_FAILOVER = ON,
        CLUSTER_TYPE = EXTERNAL
        )
FOR REPLICA
    ON N'sles1'
WITH (
        ENDPOINT_URL = N'tcp://sles1:5022',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),
    N'sles2'
WITH (
        ENDPOINT_URL = N'tcp://sles2:5022',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),
    N'sles3'
WITH (
        ENDPOINT_URL = N'tcp://sles3:5022',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        );
GO

ALTER AVAILABILITY GROUP [ag1]
GRANT CREATE ANY DATABASE;
GO

Een SQL Server-aanmelding maken voor Pacemaker

Maak op alle SQL Server-exemplaren een SQL Server-aanmelding voor Pacemaker. Met het volgende Transact-SQL-script maakt u een aanmelding.

  • Vervang <password> door uw eigen complexe wachtwoord.
USE [master]
GO

CREATE LOGIN [pacemakerLogin]
    WITH PASSWORD = N'<password>';
GO

ALTER SERVER ROLE [sysadmin]
    ADD MEMBER [pacemakerLogin];
GO

Sla op alle SQL Server-exemplaren de referenties op die voor de SQL Server aanmelding worden gebruikt.

  1. Zo maakt u het bestand:

    sudo vi /var/opt/mssql/secrets/passwd
    
  2. Voeg de volgende twee regels toe aan het bestand:

    pacemakerLogin
    <password>
    

    Als u de vi-editor wilt afsluiten, drukt u eerst op de ESC-toets en voert u vervolgens de opdracht :wq in om het bestand te schrijven en af te sluiten.

  3. Zo maakt u het bestand alleen leesbaar voor de hoofdmap:

    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 400 /var/opt/mssql/secrets/passwd
    

Secundaire replica's toevoegen aan de beschikbaarheidsgroep

  1. Voer op de secundaire replica's de volgende opdrachten uit om ze toe te voegen aan de beschikbaarheidsgroep:

    ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
    GO
    
  2. Voer het volgende Transact-SQL-script uit op de primaire replica en elke secundaire replica:

    GRANT ALTER, CONTROL, VIEW DEFINITION
        ON AVAILABILITY GROUP::ag1 TO pacemakerLogin;
    GO
    
    GRANT VIEW SERVER STATE TO pacemakerLogin;
    GO
    
  3. Wanneer de secundaire replica's zijn toegevoegd, kunt u ze bekijken in de Objectverkenner van SQL Server Management Studio door het knooppunt AlwaysOn hoge beschikbaarheid uit te vouwen:

    Screenshot shows the primary and secondary availability replicas.

Een database toevoegen aan de beschikbaarheidsgroep

Deze sectie volgt het artikel voor het toevoegen van een database aan een beschikbaarheidsgroep.

In deze stap worden de volgende Transact-SQL-opdrachten gebruikt. Voer deze opdrachten uit in de primaire replica:

CREATE DATABASE [db1]; -- creates a database named db1
GO

ALTER DATABASE [db1] SET RECOVERY FULL; -- set the database in full recovery model
GO

BACKUP DATABASE [db1] -- backs up the database to disk
    TO DISK = N'/var/opt/mssql/data/db1.bak';
GO

ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1]; -- adds the database db1 to the AG
GO

Controleren of de database is gemaakt op de secundaire servers

Voer op elke secundaire SQL Server-replica de volgende query uit om te zien of de db1-database is gemaakt en de status GESYNCHRONISEERD heeft:

SELECT * FROM sys.databases
WHERE name = 'db1';
GO

SELECT DB_NAME(database_id) AS 'database',
    synchronization_state_desc
FROM sys.dm_hadr_database_replica_states;
GO

Als de synchronization_state_desc GESYNCHRONISEERD vermeldt voor db1, betekent dit dat de replica's zijn gesynchroniseerd. De secundaire replica's bevatten db1 in de primaire replica.

Resources voor beschikbaarheidsgroepen maken in het Pacemaker-cluster

Notitie

Oordeelloze communicatie

Dit artikel bevat verwijzingen naar de term slaaf, een term die Microsoft aanstootgevend acht wanneer deze in deze context wordt gebruikt. De term wordt weergegeven in dit artikel omdat deze momenteel in de software wordt weergegeven. Wanneer de term uit de software wordt verwijderd, wordt deze uit het artikel verwijderd.

In dit artikel wordt verwezen naar de handleiding voor het maken van de resources van de beschikbaarheidsgroep in een Pacemaker-cluster.

Pacemaker inschakelen

Schakel Pacemaker in zodat deze automatisch wordt gestart.

Voer de volgende opdracht uit op alle knooppunten in het cluster.

sudo systemctl enable pacemaker

De clusterresource voor de beschikbaarheidsgroep maken

  1. Voer deze opdracht uit crm configure om de CRM-prompt te openen:

    sudo crm configure
    
  2. Voer in de CRM-prompt de volgende opdracht uit om de resource-eigenschappen te configureren. Met de volgende opdrachten maakt u de resource ag_cluster in de beschikbaarheidsgroep ag1.

    primitive ag_cluster ocf:mssql:ag params ag_name="ag1" meta failure-timeout=60s op start timeout=60s op stop timeout=60s op promote timeout=60s op demote timeout=10s op monitor timeout=60s interval=10s op monitor timeout=60s interval=11s role="Master" op monitor timeout=60s interval=12s role="Slave" op notify timeout=60s ms ms-ag_cluster ag_cluster meta master-max="1" master-node-max="1" clone-max="3" clone-node-max="1" notify="true"
    commit
    quit
    

    Tip

    Typ quit om af te sluiten van de crm-prompt .

  3. Stel de co-locatiebeperking voor het virtuele IP-adres in om te worden uitgevoerd op hetzelfde knooppunt als het primaire knooppunt:

    sudo crm configure
    colocation vip_on_master inf: admin-ip ms-ag_cluster: Master
    commit
    quit
    
  4. Voeg de volgordebeperking toe om te voorkomen dat het IP-adres tijdelijk naar het knooppunt verwijst met de secundaire prefailover. Voer de volgende opdracht uit om een bestelbeperking te maken:

    sudo crm configure
    order ag_first inf: ms-ag_cluster:promote admin-ip:start
    commit
    quit
    
  5. Controleer de status van het cluster met behulp van de opdracht:

    sudo crm status
    

    De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

    Cluster Summary:
      * Stack: corosync
      * Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
      * Last updated: Mon Mar  6 18:38:17 2023
      * Last change:  Mon Mar  6 18:38:09 2023 by root via cibadmin on sles1
      * 3 nodes configured
      * 5 resource instances configured
    
    Node List:
      * Online: [ sles1 sles2 sles3 ]
    
    Full List of Resources:
      * admin-ip    (ocf::heartbeat:IPaddr2):                Started sles1
      * rsc_st_azure        (stonith:fence_azure_arm):       Started sles2
      * Clone Set: ms-ag_cluster [ag_cluster] (promotable):
        * Masters: [ sles1 ]
        * Slaves: [ sles2 sles3 ]
    
  6. Voer de volgende opdracht uit om de beperkingen te controleren:

    sudo crm configure show
    

    De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

    node 1: sles1
    node 2: sles2
    node 3: sles3
    primitive admin-ip IPaddr2 \
            params ip=10.0.0.93 \
            op monitor interval=10 timeout=20
    primitive ag_cluster ocf:mssql:ag \
            params ag_name=ag1 \
            meta failure-timeout=60s \
            op start timeout=60s interval=0 \
            op stop timeout=60s interval=0 \
            op promote timeout=60s interval=0 \
            op demote timeout=10s interval=0 \
            op monitor timeout=60s interval=10s \
            op monitor timeout=60s interval=11s role=Master \
            op monitor timeout=60s interval=12s role=Slave \
            op notify timeout=60s interval=0
    primitive rsc_st_azure stonith:fence_azure_arm \
            params subscriptionId=xxxxxxx resourceGroup=amvindomain tenantId=xxxxxxx login=xxxxxxx passwd="******" cmk_monitor_retries=4 pcmk_action_limit=3 power_timeout=240 pcmk_reboot_timeout=900 pcmk_host_map="sles1:sles1;les2:sles2;sles3:sles3" \
            op monitor interval=3600 timeout=120
    ms ms-ag_cluster ag_cluster \
            meta master-max=1 master-node-max=1 clone-max=3 clone-node-max=1 notify=true
    order ag_first Mandatory: ms-ag_cluster:promote admin-ip:start
    colocation vip_on_master inf: admin-ip ms-ag_cluster:Master
    property cib-bootstrap-options: \
            have-watchdog=false \
            dc-version="2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712" \
            cluster-infrastructure=corosync \
            cluster-name=sqlcluster \
            stonith-enabled=true \
            concurrent-fencing=true \
            stonith-timeout=900
    rsc_defaults rsc-options: \
            resource-stickiness=1 \
            migration-threshold=3
    op_defaults op-options: \
            timeout=600 \
            record-pending=true
    

Testfailover

Test een failover om ervoor te zorgen dat de configuratie tot nu toe is geslaagd. Zie Failover van AlwaysOn-beschikbaarheidsgroep op Linux voor meer informatie.

  1. Voer de volgende opdracht uit om handmatig een failover van de primaire replica uit te voeren naar sles2. Vervang sles2 door de waarde van de servernaam.

    sudo crm resource move ag_cluster sles2
    

    De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

    INFO: Move constraint created for ms-ag_cluster to sles2
    INFO: Use `crm resource clear ms-ag_cluster` to remove this constraint
    
  2. Controleer de status van het cluster:

    sudo crm status
    

    De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld:

    Cluster Summary:
      * Stack: corosync
      * Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
      * Last updated: Mon Mar  6 18:40:02 2023
      * Last change:  Mon Mar  6 18:39:53 2023 by root via crm_resource on sles1
      * 3 nodes configured
      * 5 resource instances configured
    
    Node List:
      * Online: [ sles1 sles2 sles3 ]
    
    Full List of Resources:
      * admin-ip    (ocf::heartbeat:IPaddr2):                Stopped
      * rsc_st_azure        (stonith:fence_azure_arm):       Started sles2
      * Clone Set: ms-ag_cluster [ag_cluster] (promotable):
        * Slaves: [ sles1 sles2 sles3 ]
    
  3. Na enige tijd is de sles2 VIRTUELE machine nu de primaire en de andere twee VM's secundair. Voer opnieuw uit sudo crm status en controleer de uitvoer, die vergelijkbaar is met het volgende voorbeeld:

    Cluster Summary:
      * Stack: corosync
      * Current DC: sles1 (version 2.0.5+20201202.ba59be712-150300.4.30.3-2.0.5+20201202.ba59be712) - partition with quorum
      * Last updated: Tue Mar  6 22:00:44 2023
      * Last change:  Mon Mar  6 18:42:59 2023 by root via cibadmin on sles1
      * 3 nodes configured
      * 5 resource instances configured
    
    Node List:
      * Online: [ sles1 sles2 sles3 ]
    
    Full List of Resources:
      * admin-ip    (ocf::heartbeat:IPaddr2):                Started sles2
      * rsc_st_azure        (stonith:fence_azure_arm):       Started sles2
      * Clone Set: ms-ag_cluster [ag_cluster] (promotable):
        * Masters: [ sles2 ]
        * Slaves: [ sles1 sles3 ]
    
  4. Controleer uw beperkingen opnieuw met behulp van crm config show. U ziet dat er een andere beperking is toegevoegd vanwege de handmatige failover.

  5. Verwijder de beperking met id cli-prefer-ag_clustermet behulp van de volgende opdracht:

    crm configure
    delete cli-prefer-ms-ag_cluster
    commit
    

Fencing testen

U kunt STONITH nu testen door de volgende opdracht uit te voeren. Probeer onderstaande opdracht vanuit sles1 uit te voeren voor sles3.

sudo crm node fence sles3

Volgende stap