Delen via


Zelfstudie: Een listener voor beschikbaarheidsgroepen configureren op virtuele Linux-machines

Van toepassing op: SQL Server op Azure VM

In deze zelfstudie worden stappen beschreven voor het maken van een beschikbaarheidsgroep-listener (AG) voor uw SQL-servers op virtuele Linux-machines (VM's) in Azure, voor Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) en Ubuntu.

U leert het volgende:

  • Een taakverdeler (load balancer) maken in Azure Portal
  • De back-endgroep configureren voor de taakverdeler
  • Een test maken voor de taakverdeler
  • Taakverdelingsregels instellen
  • Resource maken voor de taakverdeler in het cluster
  • De AG-listener maken
  • Verbinding met listener testen
  • Een failover testen

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.

Vereiste

Een taakverdeler maken in Azure-portal

Met de volgende instructies doorloopt u stap 1 tot en met 4 in het gedeelte Load Balancer maken en configureren in azure Portal van het artikel Een listener voor een load balancer en beschikbaarheidsgroep (SQL Server op Azure-VM's) configureren.

De load balancer maken

  1. Open in Azure-portal de resourcegroep die de virtuele SQL Server-machines omvat.

  2. Selecteer Toevoegen in de resourcegroep.

  3. Zoek naar taakverdeler en selecteer vervolgens in de zoekresultaten Taakverdeler die is gepubliceerd door Microsoft.

  4. Selecteer Maken in het deelvenster Load Balancer.

  5. Configureer de taakverdeler in het dialoogvenster Taakverdeler maken als volgt:

    Instelling Weergegeven als
    Naam Een tekstnaam voor de taakverdeler. Bijvoorbeeld: sqlLB.
    Type Intern
    Virtueel netwerk Het standaard virtuele netwerk dat is gemaakt, moet de naam VM1VNEThebben.
    Subnet Selecteer het subnet waarin de SQL Server-exemplaren zich bevinden. De standaardwaarde moet zijn VM1Subnet.
    IP-adrestoewijzing Static
    Privé IP-adres Gebruik het virtualip-IP-adres dat in het cluster is gemaakt.
    Abonnement Gebruik het abonnement dat voor uw resourcegroep is gebruikt.
    Resourcegroep Selecteer de resourcegroep waarin de SQL Server-exemplaren zich bevinden.
    Location Selecteer de Azure-locatie waar de SQL Server-exemplaren zich bevinden.

De back-endgroep configureren

Azure roept de back-endadresgroep back-endgroep aan. In dit geval is de back-endpool de adressen van de drie SQL Server-exemplaren in uw AG.

  1. Selecteer in uw resourcegroep de load balancer die u hebt gemaakt.

  2. Selecteer back-endpools in Instellingen.

  3. Selecteer Toevoegen in back-endpools om een back-endadresgroep te maken.

  4. Typ in Back-endgroep toevoegen, onder Naam, een naam voor de back-endgroep.

  5. Selecteer onder Gekoppeld aan, de optie Virtuele machine.

  6. Selecteer elke virtuele machine in de omgeving en koppel het juiste IP-adres aan elke selectie.

    Screenshot showing how to add a backend pool.

  7. Selecteer Toevoegen.

Een test maken

De test definieert hoe Azure controleert welke van de SQL Server-exemplaren momenteel eigenaar is van de AG-listener. Azure test de service op basis van het IP-adres van een poort die u opgeeft wanneer u de test maakt.

  1. Selecteer statustests in het deelvenster Instellingen van de load balancer.

  2. Selecteer Toevoegen in het deelvenster Statustests.

  3. Configureer de test in het deelvenster Test toevoegen . Gebruik de volgende waarden om de test te configureren:

    Instelling Weergegeven als
    Naam Een tekstnaam voor de test. Bijvoorbeeld: SQLAlwaysOnEndPointProbe.
    Protocol TCP
    Poort U kunt elke beschikbare poort gebruiken. Bijvoorbeeld: 59999.
    Interval 5
    Dempelwaarde voor beschadigd 2
  4. Selecteer OK.

  5. Meld u aan bij al uw virtuele machines en open de testpoort met behulp van de volgende opdrachten:

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

Azure maakt de test en gebruikt deze vervolgens om te testen welk SQL Server-exemplaar de listener voor de AG heeft.

Taakverdelingsregels instellen

De taakverdelingsregels bepalen hoe de taakverdeling verkeer routeert naar de SQL Server-exemplaren. Voor deze load balancer schakelt u direct server return in, omdat slechts één van de drie SQL Server-exemplaren eigenaar is van de AG-listenerresource tegelijk.

  1. Selecteer taakverdelingsregels in het deelvenster Instellingen load balancer.

  2. Selecteer Toevoegen in het deelvenster Taakverdelingsregels.

  3. Configureer in het deelvenster Taakverdelingsregels toevoegen de taakverdelingsregel. Gebruik de volgende instellingen:

    Instelling Weergegeven als
    Naam Een tekstnaam voor de taakverdelersregels. Bijvoorbeeld: SQLAlwaysOnEndPointListener.
    Protocol TCP
    Poort 1433
    Back-endpoort 1433. Deze waarde wordt genegeerd, omdat deze regel Zwevend IP (Direct Server Return) gebruikt.
    Test Gebruik de naam van de test die u voor deze taakverdeler hebt gemaakt.
    Sessiepersistentie Geen
    Time-out voor inactiviteit (minuten) 4
    Zwevend IP (Direct Server Return) Ingeschakeld

    Screenshot showing how to add a load balancing rule.

  4. Selecteer OK.

  5. In Azure wordt de taakverdelingsregel geconfigureerd. De load balancer is nu geconfigureerd om verkeer te routeren naar het SQL Server-exemplaar dat als host fungeert voor de listener voor de beschikbaarheidsgroep.

Op dit moment heeft de resourcegroep een taakverdeler die verbinding maakt met alle SQL Server-machines. De load balancer bevat ook een IP-adres voor de SQL Server Always On AG-listener, zodat elke computer kan reageren op aanvragen voor de AG's.

De listenerresource voor de beschikbaarheidsgroep maken

Voordat u een load balancer-resource maakt in Pacemaker, moet u eerst de listenerresource maken:

sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=x.y.z.a

In het vorige voorbeeld x.y.z.a verwijst u naar het front-end-IP-adres van de load balancer.

Resource maken voor de taakverdeler in het cluster

Volg de instructies voor de distributie die u configureert.

  1. Meld u aan bij de primaire virtuele machine. U moet de resource maken om de poort voor de Azure-taakverdelertest in te schakelen (in ons voorbeeld woord 59999 gebruikt). Voer de volgende opdracht uit:

    sudo pcs resource create azure_load_balancer azure-lb port=59999
    
  2. Maak een groep die de resources virtualip en azure_load_balancer bevat:

    sudo pcs resource group add virtualip_group azure_load_balancer virtualip
    

Beperkingen toevoegen

  1. U moet een co-locatiebeperking configureren om er zeker van te zijn dat het IP-adres van de Azure-taakverdeler en de resource van de beschikbaarheidsgroep op hetzelfde knooppunt worden uitgevoerd. Voer de volgende opdracht uit:

    sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
    
  2. Maak een volgordebeperking om ervoor te zorgen dat de resource van de beschikbaarheidsgroep actief is en wordt uitgevoerd vóór het IP-adres van de Azure-taakverdeler. Hoewel de co-locatiebeperking een volgordebeperking impliceert, wordt deze hiermee afgedwongen.

    sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
    
  3. Voer de volgende opdracht uit om de beperkingen te controleren:

    sudo pcs constraint list --full
    

    U moet de volgende uitvoer zien:

    Location Constraints:
    Ordering Constraints:
      promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory)
      promote ag_cluster-master then start azure_load_balancer (kind:Mandatory) (id:order-ag_cluster-master-azure_load_balancer-mandatory)
    Colocation Constraints:
      virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY)
      azure_load_balancer with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-azure_load_balancer-ag_cluster-master-INFINITY)
    Ticket Constraints:
    

De listener voor beschikbaarheidsgroep maken

  1. Voer op het primaire knooppunt de volgende opdracht uit in sqlcmd of SSMS. Vervang het onderstaande IP-adres met het virtualip-IP-adres.

    • SQL Server 2022 en latere versies:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '0.0.0.0'
          )),
          PORT = 1433
      );
      GO
      
    • SQL Server 2017 en SQL Server 2019:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '255.255.255.255'
          )),
          PORT = 1433
      );
      GO
      
  2. Meld u aan bij elk VM-knooppunt. Gebruik de volgende opdracht om het hosts-bestand te openen en de omzetting van hostnamen voor de ag1-listener in te stellen op elke machine.

    sudo vi /etc/hosts
    

    Voer in de vi-editor i in om tekst in te voegen en typ op een lege regel het IP-adres van de ag1-listener. Voeg vervolgens een spatie en ag1-listener toe achter het IP-adres.

    <IP of ag1-listener> ag1-listener
    

    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. Doe dit op elk knooppunt.

De listener en een failover testen

In deze sectie wordt beschreven hoe u zich aanmeldt bij een SQL Server AG-listener en hoe u een failover test.

Aanmelden bij SQL Server met de listener voor beschikbaarheidsgroep testen

  1. Gebruik sqlcmd om u aan te melden bij het primaire knooppunt van SQL Server met behulp van de ag-listenernaam:

    • Gebruik een eerder gemaakte aanmelding en vervang <YourPassword> met het juiste wachtwoord. In het volgende voorbeeld wordt de sa aanmelding gebruikt die is gemaakt met de SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  2. Controleer de naam van de server waarmee u bent verbonden. Voer de volgende opdracht uit in sqlcmd:

    SELECT @@SERVERNAME;
    

    Uw uitvoer moet het huidige primaire knooppunt weergeven. Als u nooit eerder een failover hebt getest, moet dit VM1 zijn.

    Verlaat de SQL Server-sessie door de opdracht exit te typen.

Een failover testen

  1. Voer de volgende opdracht uit om handmatig een failover van de primaire replica uit te voeren naar <VM2> of een andere replica. Vervang <VM2> door de waarde van de servernaam.

    sudo pcs resource move ag_cluster-master <VM2> --master
    
  2. Als u de beperkingen opnieuw controleert, ziet u dat er vanwege de handmatige failover een andere beperking is toegevoegd:

    sudo pcs constraint list --full
    

    U ziet dat er een beperking met id cli-prefer-ag_cluster-master is toegevoegd.

  3. Verwijder de beperking met id cli-prefer-ag_cluster-master met behulp van de volgende opdracht:

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    
  4. Als u uw clusterresources controleert met de opdracht sudo pcs resource, ziet u dat het primaire exemplaar nu <VM2> is.

    Notitie

    Dit artikel bevat verwijzingen naar de term slave, een term die Microsoft niet meer gebruikt. Zodra de term uit de software wordt verwijderd, verwijderen we deze uit dit artikel.

    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
        Masters: [ <VM2> ]
        Slaves: [ <VM1> <VM3> ]
    Resource Group: virtualip_group
        azure_load_balancer        (ocf::heartbeat:azure-lb):      Started <VM2>
        virtualip  (ocf::heartbeat:IPaddr2):       Started <VM2>
    
  5. Gebruik sqlcmd om u aan te melden bij uw primaire replica met behulp van de naam van de listener:

    • Gebruik een eerder gemaakte aanmelding en vervang <YourPassword> met het juiste wachtwoord. In het volgende voorbeeld wordt de sa aanmelding gebruikt die is gemaakt met de SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  6. Controleer de server waarmee u bent verbonden. Voer de volgende opdracht uit in sqlcmd:

    SELECT @@SERVERNAME;
    

    U ziet dat u nu bent verbonden met de VIRTUELE machine waarmee u een failover hebt uitgevoerd.

Volgende stap

Als u een listener voor beschikbaarheidsgroepen voor uw SQL Server-exemplaren wilt gebruiken, moet u een load balancer maken en configureren.