Delen via


PowerShell of Az CLI gebruiken om een beschikbaarheidsgroep te configureren voor SQL Server op Azure VM

Van toepassing op: SQL Server op Azure VM

Fooi

Er zijn veel methoden om een beschikbaarheidsgroep te implementeren. Vereenvoudig uw implementatie en elimineer de noodzaak van een Azure Load Balancer of gedistribueerde netwerknaam (DNN) voor uw AlwaysOn-beschikbaarheidsgroep door uw virtuele SQL Server-machines (VM's) te maken in meerdere subnetten binnen hetzelfde virtuele Azure-netwerk. Als u uw beschikbaarheidsgroep al in één subnet hebt gemaakt, kunt u deze migreren naar een omgeving met meerdere subnetten.

In dit artikel wordt beschreven hoe u PowerShell of de Azure CLI gebruikt om een Windows-failovercluster te implementeren, SQL Server-VM's toe te voegen aan het cluster en de interne load balancer en listener te maken voor een AlwaysOn-beschikbaarheidsgroep binnen één subnet.

De implementatie van de beschikbaarheidsgroep wordt nog steeds handmatig uitgevoerd via SQL Server Management Studio (SSMS) of Transact-SQL (T-SQL).

Hoewel in dit artikel PowerShell en de Az CLI worden gebruikt om de omgeving van de beschikbaarheidsgroep te configureren, is het ook mogelijk om dit te doen vanuit Azure Portal, met behulp van Azure-quickstartsjablonen of handmatig .

Notitie

Het is nu mogelijk om uw oplossing voor beschikbaarheidsgroepen te verplaatsen naar SQL Server op Azure-VM's met behulp van Azure Migrate. Zie Beschikbaarheidsgroep migreren voor meer informatie.

Vereisten

Als u een AlwaysOn-beschikbaarheidsgroep wilt configureren, moet u de volgende vereisten hebben:

  • Een Azure-abonnement.
  • Een resourcegroep met een domeincontroller.
  • Een of meer aan een domein gekoppelde VM's in Azure waarop SQL Server 2016 (of hoger) Enterprise Edition wordt uitgevoerd in dezelfde beschikbaarheidsset of verschillende beschikbaarheidszones die zijn geregistreerd bij de SQL IaaS Agent-extensie.
  • De nieuwste versie van PowerShell of de Azure CLI.
  • Twee beschikbare IP-adressen (niet gebruikt door een entiteit). Een daarvan is voor de interne load balancer. De andere is voor de listener van de beschikbaarheidsgroep binnen hetzelfde subnet als de beschikbaarheidsgroep. Als u een bestaande load balancer gebruikt, hebt u slechts één beschikbaar IP-adres nodig voor de listener van de beschikbaarheidsgroep.
  • Windows Server Core is geen ondersteund besturingssysteem voor de PowerShell-opdrachten waarnaar in dit artikel wordt verwezen, omdat er een afhankelijkheid is van RSAT, die niet is opgenomen in Core-installaties van Windows.

Machtigingen

U hebt de volgende accountmachtigingen nodig om de AlwaysOn-beschikbaarheidsgroep te configureren met behulp van de Azure CLI:

  • Een bestaand domeingebruikersaccount met de machtiging Computerobject maken in het domein. Een domeinbeheerdersaccount heeft bijvoorbeeld doorgaans voldoende machtigingen (bijvoorbeeld: account@domain.com). Dit account moet ook deel uitmaken van de lokale beheerdersgroep op elke VIRTUELE machine om het cluster te maken.
  • Het domeingebruikersaccount waarmee SQL Server wordt beheerd.

Een opslagaccount maken

Het cluster heeft een opslagaccount nodig om te fungeren als de cloudwitness. U kunt elk bestaand opslagaccount gebruiken of u kunt een nieuw opslagaccount maken. Als u een bestaand opslagaccount wilt gebruiken, gaat u verder naar de volgende sectie.

Met het volgende codefragment wordt het opslagaccount gemaakt:

# Create the storage account
# example: az storage account create -n 'cloudwitness' -g SQLVM-RG -l 'West US' `
#  --sku Standard_LRS --kind StorageV2 --access-tier Hot --https-only true

az storage account create -n <name> -g <resource group name> -l <region> `
  --sku Standard_LRS --kind StorageV2 --access-tier Hot --https-only true

Fooi

Mogelijk ziet u de fout az sql: 'vm' is not in the 'az sql' command group als u een verouderde versie van de Azure CLI gebruikt. Download de nieuwste versie van Azure CLI om deze fout te achterstalleren.

Clustermetagegevens definiëren

De Azure CLI az sql vm group command group beheert de metagegevens van de WSFC-service (Windows Server Failover Cluster) die als host fungeert voor de beschikbaarheidsgroep. Clustermetagegevens omvatten het Active Directory-domein, clusteraccounts, opslagaccounts die moeten worden gebruikt als cloudwitness en SQL Server-versie. Gebruik az sql vm group create om de metagegevens voor WSFC te definiëren, zodat wanneer de eerste SQL Server-VM wordt toegevoegd, het cluster wordt gemaakt zoals gedefinieerd.

Het volgende codefragment definieert de metagegevens voor het cluster:

# Define the cluster metadata
# example: az sql vm group create -n Cluster -l 'West US' -g SQLVM-RG `
#  --image-offer SQL2017-WS2016 --image-sku Enterprise --domain-fqdn domain.com `
#  --operator-acc vmadmin@domain.com --bootstrap-acc vmadmin@domain.com --service-acc sqlservice@domain.com `
#  --sa-key '4Z4/i1Dn8/bpbseyWX' `
#  --storage-account 'https://cloudwitness.blob.core.windows.net/'

az sql vm group create -n <cluster name> -l <region ex:eastus> -g <resource group name> `
  --image-offer <SQL2016-WS2016 or SQL2017-WS2016> --image-sku Enterprise --domain-fqdn <FQDN ex: domain.com> `
  --operator-acc <domain account ex: testop@domain.com> --bootstrap-acc <domain account ex:bootacc@domain.com> `
  --service-acc <service account ex: testservice@domain.com> `
  --sa-key '<PublicKey>' `
  --storage-account '<ex:https://cloudwitness.blob.core.windows.net/>'

VM's toevoegen aan het cluster

Als u de eerste SQL Server-VM toevoegt aan het cluster, wordt het cluster gemaakt. De opdracht az sql vm add-to-group maakt het cluster met de eerder opgegeven naam, installeert de clusterrol op de VIRTUELE SQL Server-machines en voegt deze toe aan het cluster. Volgende toepassingen van de az sql vm add-to-group opdracht voegen meer SQL Server-VM's toe aan het zojuist gemaakte cluster.

Met het volgende codefragment wordt het cluster gemaakt en wordt de eerste SQL Server-VM eraan toegevoegd:

# Add SQL Server VMs to cluster
# example: az sql vm add-to-group -n SQLVM1 -g SQLVM-RG --sqlvm-group Cluster `
#  -b Str0ngAzur3P@ssword! -p Str0ngAzur3P@ssword! -s Str0ngAzur3P@ssword!
# example: az sql vm add-to-group -n SQLVM2 -g SQLVM-RG --sqlvm-group Cluster `
#  -b Str0ngAzur3P@ssword! -p Str0ngAzur3P@ssword! -s Str0ngAzur3P@ssword!

az sql vm add-to-group -n <VM1 Name> -g <Resource Group Name> --sqlvm-group <cluster name> `
  -b <bootstrap account password> -p <operator account password> -s <service account password>
az sql vm add-to-group -n <VM2 Name> -g <Resource Group Name> --sqlvm-group <cluster name> `
  -b <bootstrap account password> -p <operator account password> -s <service account password>

Gebruik deze opdracht om andere SQL Server-VM's toe te voegen aan het cluster. Wijzig alleen de -n parameter voor de naam van de SQL Server-VM.

Quorum configureren

Hoewel de schijfwitness de meest tolerante quorumoptie is, is er een gedeelde Azure-schijf vereist die enkele beperkingen voor de beschikbaarheidsgroep oplegt. Als zodanig is de cloudwitness de aanbevolen quorumoplossing voor clusters die beschikbaarheidsgroepen hosten voor SQL Server op Azure-VM's.

Als u een even aantal stemmen in het cluster hebt, configureert u de quorumoplossing die het beste past bij uw bedrijfsbehoeften. Zie Quorum met SQL Server-VM's voor meer informatie.

Cluster valideren

Om een failovercluster te kunnen ondersteunen door Microsoft, moet het clustervalidatie doorgeven. Maak verbinding met de VIRTUELE machine met behulp van uw voorkeursmethode, zoals Remote Desktop Protocol (RDP) en controleer of uw cluster de validatie doorstaat voordat u verdergaat. Als u dit niet doet, blijft uw cluster in een niet-ondersteunde status.

U kunt het cluster valideren met failoverclusterbeheer (FCM) of met de volgende PowerShell-opdracht:

Test-Cluster –Node ("<node1>","<node2>") –Include "Inventory", "Network", "System Configuration"

Beschikbaarheidsgroep maken

Maak handmatig de beschikbaarheidsgroep zoals u dat normaal zou doen met behulp van SQL Server Management Studio, PowerShell of Transact-SQL.

Belangrijk

Maak op dit moment geen listener, omdat dit wordt gedaan via de Azure CLI in de volgende secties.

Een interne load balancer maken

Notitie

Implementaties van beschikbaarheidsgroepen naar meerdere subnetten vereisen geen load balancer. In een omgeving met één subnet kunnen klanten die SQL Server 2019 CU8 en hoger in Windows 2016 en hoger gebruiken, de traditionele VNN-listener (Virtual Network Name) en Azure Load Balancer vervangen door een DNN-listener (gedistribueerde netwerknaam). Als u een DNN wilt gebruiken, slaat u alle zelfstudiestappen over waarmee Azure Load Balancer voor uw beschikbaarheidsgroep wordt geconfigureerd.

De listener van de AlwaysOn-beschikbaarheidsgroep vereist een intern exemplaar van Azure Load Balancer. De interne load balancer biedt een 'zwevend' IP-adres voor de listener van de beschikbaarheidsgroep waarmee snellere failover en opnieuw verbinding kunnen worden gemaakt. Als de SQL Server-VM's in een beschikbaarheidsgroep deel uitmaken van dezelfde beschikbaarheidsset, kunt u een Basic-load balancer gebruiken. Anders moet u een Standard-load balancer gebruiken.

Notitie

De interne load balancer moet zich in hetzelfde virtuele netwerk bevinden als de SQL Server VM-exemplaren.

Met het volgende codefragment wordt de interne load balancer gemaakt:

# Create the internal load balancer
# example: az network lb create --name sqlILB -g SQLVM-RG --sku Standard `
# --vnet-name SQLVMvNet --subnet default

az network lb create --name sqlILB -g <resource group name> --sku Standard `
  --vnet-name <VNet Name> --subnet <subnet name>

Belangrijk

De openbare IP-resource voor elke SQL Server-VM moet een standard-SKU hebben die compatibel is met de Standard-load balancer. Als u de SKU van de openbare IP-resource van uw VIRTUELE machine wilt bepalen, gaat u naar de resourcegroep, selecteert u uw openbare IP-adresresource voor de gewenste SQL Server-VM en zoekt u de waarde onder SKU in het deelvenster Overzicht.

Listener maken

Nadat u de beschikbaarheidsgroep handmatig hebt gemaakt, kunt u de listener maken met behulp van az sql vm ag-listener.

De resource-id van het subnet is de waarde die /subnets/<subnetname> wordt toegevoegd aan de resource-id van de virtuele netwerkresource. De resource-id van het subnet identificeren:

  1. Ga naar uw resourcegroep in Azure Portal.
  2. Selecteer de virtuele netwerkresource.
  3. Selecteer Eigenschappen in het deelvenster Instellingen .
  4. Identificeer de resource-id voor het virtuele netwerk en voeg deze toe aan /subnets/<subnetname> het einde van het netwerk om de resource-id van het subnet te maken. Bijvoorbeeld:
    • De resource-id van uw virtuele netwerk is: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet
    • De naam van uw subnet is: default
    • Uw subnetresource-id is daarom: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default

Met het volgende codefragment wordt de listener voor de beschikbaarheidsgroep gemaakt:

# Create the availability group listener
# example: az sql vm group ag-listener create -n AGListener -g SQLVM-RG `
#  --ag-name SQLAG --group-name Cluster --ip-address 10.0.0.27 `
#  --load-balancer sqlilb --probe-port 59999  `
#  --subnet /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default `
#  --sqlvms sqlvm1 sqlvm2

az sql vm group ag-listener create -n <listener name> -g <resource group name> `
  --ag-name <availability group name> --group-name <cluster name> --ip-address <ag listener IP address> `
  --load-balancer <lbname> --probe-port <Load Balancer probe port, default 59999>  `
  --subnet <subnet resource id> `
  --sqlvms <names of SQL VM's hosting AG replicas, ex: sqlvm1 sqlvm2>

Het aantal replica's wijzigen

Er is een extra complexiteitslaag wanneer u een beschikbaarheidsgroep implementeert op SQL Server-VM's die worden gehost in Azure. De resourceprovider en de virtuele-machinegroep beheren nu de resources. Als u bijvoorbeeld replica's toevoegt of verwijdert in de beschikbaarheidsgroep, is er een extra stap voor het bijwerken van de metagegevens van de listener met informatie over de SQL Server-VM's. Wanneer u het aantal replica's in de beschikbaarheidsgroep wijzigt, moet u ook de opdracht az sql vm group ag-listener update gebruiken om de listener bij te werken met de metagegevens van de SQL Server-VM's.

Een replica toevoegen

Een nieuwe replica toevoegen aan de beschikbaarheidsgroep:

  1. Voeg de SQL Server-VM toe aan de clustergroep:

    
    # Add the SQL Server VM to the cluster group
    # example: az sql vm add-to-group -n SQLVM3 -g SQLVM-RG --sqlvm-group Cluster `
    # -b Str0ngAzur3P@ssword! -p Str0ngAzur3P@ssword! -s Str0ngAzur3P@ssword!
    
    az sql vm add-to-group -n <VM3 Name> -g <Resource Group Name> --sqlvm-group <cluster name> `
    -b <bootstrap account password> -p <operator account password> -s <service account password>
    
  2. Gebruik SQL Server Management Studio om het SQL Server-exemplaar toe te voegen als een replica binnen de beschikbaarheidsgroep.

  3. Voeg de metagegevens van de SQL Server-VM toe aan de listener:

    # Update the listener metadata with the new VM
    # example: az sql vm group ag-listener update -n AGListener `
    # -g sqlvm-rg --group-name Cluster --sqlvms sqlvm1 sqlvm2 sqlvm3
    
    az sql vm group ag-listener update -n <Listener> `
    -g <RG name> --group-name <cluster name> --sqlvms <SQL VMs, along with new SQL VM>
    

Een replica verwijderen

Een replica verwijderen uit de beschikbaarheidsgroep:

  1. Verwijder de replica uit de beschikbaarheidsgroep met behulp van SQL Server Management Studio.
  2. Verwijder de metagegevens van de SQL Server-VM uit de listener:
    # Update the listener metadata by removing the VM from the SQLVMs list
    # example: az sql vm group ag-listener update -n AGListener `
    # -g sqlvm-rg --group-name Cluster --sqlvms sqlvm1 sqlvm2
    
    az sql vm group ag-listener update -n <Listener> `
    -g <RG name> --group-name <cluster name> --sqlvms <SQL VMs that remain>
    
  3. Verwijder de SQL Server-VM uit het cluster:
    # Remove the SQL VM from the cluster
    # example: az sql vm remove-from-group --name SQLVM3 --resource-group SQLVM-RG
    
    az sql vm remove-from-group --name <SQL VM name> --resource-group <RG name> 
    

Listener verwijderen

Als u later de listener voor de beschikbaarheidsgroep moet verwijderen die is geconfigureerd met de Azure CLI, moet u de SQL IaaS Agent-extensie doorlopen. Omdat de listener is geregistreerd via de SQL IaaS Agent-extensie, is het verwijderen ervan via SQL Server Management Studio onvoldoende.

De beste methode is om deze te verwijderen via de SQL IaaS Agent-extensie met behulp van het volgende codefragment in de Azure CLI. Als u dit doet, worden de metagegevens van de listener van de beschikbaarheidsgroep verwijderd uit de SQL IaaS Agent-extensie. De listener wordt ook fysiek uit de beschikbaarheidsgroep verwijderd.

# Remove the availability group listener
# example: az sql vm group ag-listener delete --group-name Cluster --name AGListener --resource-group SQLVM-RG

az sql vm group ag-listener delete --group-name <cluster name> --name <listener name > --resource-group <resource group name>

Cluster verwijderen

Verwijder alle knooppunten uit het cluster om het te vernietigen en verwijder vervolgens de metagegevens van het cluster uit de SQL IaaS Agent-extensie. U kunt dit doen met behulp van de Azure CLI of PowerShell.

Verwijder eerst alle SQL Server-VM's uit het cluster:

# Remove the VM from the cluster metadata
# example: az sql vm remove-from-group --name SQLVM2 --resource-group SQLVM-RG

az sql vm remove-from-group --name <VM1 name>  --resource-group <resource group name>
az sql vm remove-from-group --name <VM2 name>  --resource-group <resource group name>

Als dit de enige VIRTUELE machines in het cluster zijn, wordt het cluster vernietigd. Als er andere VM's in het cluster zijn, behalve de SQL Server-VM's die zijn verwijderd, worden de andere VM's niet verwijderd en wordt het cluster niet vernietigd.

Verwijder vervolgens de clustermetagegevens uit de SQL IaaS Agent-extensie:

# Remove the cluster from the SQL VM RP metadata
# example: az sql vm group delete --name Cluster --resource-group SQLVM-RG

az sql vm group delete --name <cluster name> Cluster --resource-group <resource group name>

Volgende stappen

Zodra de beschikbaarheidsgroep is geïmplementeerd, kunt u overwegen om de HADR-instellingen voor SQL Server op Azure-VM's te optimaliseren.

Raadpleeg voor meer informatie: