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
Voltooi de zelfstudie: Beschikbaarheidsgroepen configureren voor SQL Server op virtuele RHEL-machines in Azure.
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
Open in Azure-portal de resourcegroep die de virtuele SQL Server-machines omvat.
Selecteer Toevoegen in de resourcegroep.
Zoek naar taakverdeler en selecteer vervolgens in de zoekresultaten Taakverdeler die is gepubliceerd door Microsoft.
Selecteer Maken in het deelvenster Load Balancer.
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 VM1VNET
hebben.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.
Selecteer in uw resourcegroep de load balancer die u hebt gemaakt.
Selecteer back-endpools in Instellingen.
Selecteer Toevoegen in back-endpools om een back-endadresgroep te maken.
Typ in Back-endgroep toevoegen, onder Naam, een naam voor de back-endgroep.
Selecteer onder Gekoppeld aan, de optie Virtuele machine.
Selecteer elke virtuele machine in de omgeving en koppel het juiste IP-adres aan elke selectie.
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.
Selecteer statustests in het deelvenster Instellingen van de load balancer.
Selecteer Toevoegen in het deelvenster Statustests.
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
Selecteer OK.
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.
Selecteer taakverdelingsregels in het deelvenster Instellingen load balancer.
Selecteer Toevoegen in het deelvenster Taakverdelingsregels.
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 Selecteer OK.
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.
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
Maak een groep die de resources
virtualip
enazure_load_balancer
bevat:sudo pcs resource group add virtualip_group azure_load_balancer virtualip
Beperkingen toevoegen
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
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
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
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
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 deag1-listener
. Voeg vervolgens een spatie enag1-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
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 desa
aanmelding gebruikt die is gemaakt met de SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Gebruik een eerder gemaakte aanmelding en vervang
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
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
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.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
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>
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 desa
aanmelding gebruikt die is gemaakt met de SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Gebruik een eerder gemaakte aanmelding en vervang
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.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor