Använda PowerShell eller Az CLI för att konfigurera en tillgänglighetsgrupp för SQL Server på virtuella Azure-datorer

GÄLLER FÖR: SQL Server på virtuella Azure-datorer

Tips

Eliminera behovet av en Azure Load Balancer för din Always On-tillgänglighetsgrupp genom att skapa dina virtuella SQL Server-datorer i flera undernät i samma virtuella Azure-nätverk.

I den här artikeln beskrivs hur du använder PowerShell eller Azure CLI för att distribuera ett Windows-redundanskluster, lägga till virtuella SQL Server-datorer i klustret och skapa en intern lastbalanserare och lyssnare för en Always On-tillgänglighetsgrupp i ett enda undernät.

Distributionen av tillgänglighetsgruppen görs fortfarande manuellt via SQL Server Management Studio (SSMS) eller Transact-SQL (T-SQL).

Den här artikeln använder PowerShell och Az CLI för att konfigurera tillgänglighetsgruppens miljö, men det är också möjligt att göra det från Azure Portal,med hjälp av Azure-snabbstartsmallareller manuellt också.

Anteckning

Nu är det möjligt att lyfta och flytta din lösning för tillgänglighetsgrupp till SQL Server virtuella Azure-datorer med Azure Migrate. Mer information finns i Migrera tillgänglighetsgrupp.

Förutsättningar

Om du vill konfigurera en Always On-tillgänglighetsgrupp måste du ha följande förutsättningar:

  • En Azure-prenumeration.
  • En resursgrupp med en domänkontrollant.
  • En eller flera domänanslutnings-VM:ar i Azure som kör SQL Server 2016 (eller senare) Enterprise-version i samma tillgänglighetsuppsättning eller olika tillgänglighetszoner som har registrerats med IaaS-agenttillägget för SQL.
  • Den senaste versionen av PowerShell eller Azure CLI.
  • Två tillgängliga IP-adresser (används inte av någon entitet). En är för den interna lastbalanseraren. Den andra är för tillgänglighetsgruppens lyssnare i samma undernät som tillgänglighetsgruppen. Om du använder en befintlig lastbalanserare behöver du bara en tillgänglig IP-adress för tillgänglighetsgruppens lyssnare.

Behörigheter

Du behöver följande kontobehörigheter för att konfigurera Always On-tillgänglighetsgruppen med hjälp av Azure CLI:

  • Ett befintligt domänanvändarkonto som har behörigheten Skapa datorobjekt i domänen. Till exempel har ett domänadministratörskonto vanligtvis tillräcklig behörighet (till exempel: account@domain.com ). Det här kontot bör också ingå i den lokala administratörsgruppen på varje virtuell dator för att skapa klustret.
  • Domänanvändarkontot som styr SQL Server.

Skapa ett lagringskonto

Klustret behöver ett lagringskonto för att fungera som molnvittne. Du kan använda ett befintligt lagringskonto eller skapa ett nytt lagringskonto. Om du vill använda ett befintligt lagringskonto kan du gå vidare till nästa avsnitt.

Följande kodfragment skapar lagringskontot:

# 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

Tips

Du kan se felet az sql: 'vm' is not in the 'az sql' command group om du använder en inaktuell version av Azure CLI. Ladda ned den senaste versionen av Azure CLI för att komma förbi det här felet.

Definiera klustermetadata

Azure CLI az sql vm group command group hanterar metadata för WSFC-tjänsten (Windows Server Failover Cluster) som är värd för tillgänglighetsgruppen. Klustermetadata omfattar Active Directory-domänen, klusterkonton, lagringskonton som ska användas som molnvittne och SQL Server version. Använd az sql vm group create för att definiera metadata för WSFC så att klustret skapas enligt definitionen när den SQL Server virtuella datorn läggs till.

Följande kodfragment definierar metadata för klustret:

# 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/>'

Lägga till virtuella datorer i klustret

När du lägger SQL Server virtuella datorn i klustret skapas klustret. Kommandot az sql vm add-to-group skapar klustret med det tidigare angivna namnet, installerar klusterrollen på de virtuella SQL Server-datorerna och lägger till dem i klustret. Efterföljande användningsområden för az sql vm add-to-group kommandot lägger till SQL Server virtuella datorer i det nyligen skapade klustret.

Följande kodfragment skapar klustret och lägger till den första SQL Server virtuella datorn i det:

# 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>

Använd det här kommandot för att lägga SQL Server virtuella datorer i klustret. Ändra endast -n parametern för SQL Server vm-namnet.

Konfigurera kvorum

Även om diskvittnet är det mest motståndskraftiga kvorumalternativet kräver det en delad Azure-disk som inför vissa begränsningar för tillgänglighetsgruppen. Därför är molnvittnet den rekommenderade kvorumlösningen för kluster som är värdar för tillgänglighetsgrupper för SQL Server på virtuella Azure-datorer.

Om du har ett jämnt antal röster i klustret konfigurerar du den kvorumlösning som bäst passar dina affärsbehov. Mer information finns i kvorum med SQL Server virtuella datorer.

Verifiera kluster

För att ett redundanskluster ska stödjas av Microsoft måste det klara klusterverifieringen. Anslut till den virtuella datorn med den metod du föredrar, till exempel Remote Desktop Protocol (RDP) och kontrollera att klustret godkänns i valideringen innan du fortsätter. Om du inte gör det är klustret i ett tillstånd som inte stöds.

Du kan verifiera klustret med hjälp Klusterhanteraren för växling vid fel (FCM) eller följande PowerShell-kommando:

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

Skapa en tillgänglighetsgrupp

Skapa tillgänglighetsgruppen manuellt som vanligt med hjälp av SQL Server Management Studio, PowerShelleller Transact-SQL.

Viktigt

Skapa inte någon lyssnare just nu eftersom detta görs via Azure CLI i följande avsnitt.

Skapa en intern lastbalanserare

Anteckning

Kunder på SQL Server 2019 CU8 och senare i Windows 2016 och senare kan ersätta traditionell VNN-lyssnare och Azure Load Balancer med en DNN-lyssnare (Distributed Network Name) i stället. Hoppa över resten av stegen i den här artikeln som skapar lyssnaren och belastningsutjämnaren.

Lyssnaren för Always On-tillgänglighetsgruppen kräver en intern instans av Azure Load Balancer. Den interna lastbalanseraren tillhandahåller en "flytande" IP-adress för tillgänglighetsgruppens lyssnare som möjliggör snabbare redundans och återanslutning. Om de SQL Server virtuella datorerna i en tillgänglighetsgrupp ingår i samma tillgänglighetsuppsättning kan du använda en grundläggande lastbalanserare. Annars måste du använda en standardlastbalanserare.

Anteckning

Den interna lastbalanseraren ska finnas i samma virtuella nätverk som den SQL Server virtuella datorinstanserna.

Följande kodfragment skapar den interna lastbalanseraren:

# 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>

Viktigt

Den offentliga IP-resursen för varje virtuell SQL Server dator måste ha en Standard-SKU för att vara kompatibel med Standard Load Balancer. Om du vill fastställa SKU:n för den virtuella datorns offentliga IP-resurs går du till Resursgrupp, väljer din offentliga IP-adressresurs för den önskade virtuella SQL Server-datorn och letar upp värdet under SKU i fönstret Översikt.

Skapa lyssnare

När du har skapat tillgänglighetsgruppen manuellt kan du skapa lyssnaren med hjälp av az sql vm ag-listener.

Undernätets resurs-ID är värdet för /subnets/<subnetname> som läggs till i resurs-ID:t för den virtuella nätverksresursen. Så här identifierar du undernätets resurs-ID:

  1. Gå till resursgruppen i Azure Portal.
  2. Välj den virtuella nätverksresursen.
  3. Välj Egenskaper i Inställningar fönster.
  4. Identifiera resurs-ID:t för det virtuella nätverket och lägg till /subnets/<subnetname> i slutet av det för att skapa undernätets resurs-ID. Ett exempel:
    • Resurs-ID:t för det virtuella nätverket är: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet
    • Undernätets namn är: default
    • Därför är ditt undernäts resurs-ID: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default

Följande kodfragment skapar tillgänglighetsgruppens lyssnare:

# 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>

Ändra antalet repliker

Det finns ett extra lager av komplexitet när du distribuerar en tillgänglighetsgrupp till en SQL Server virtuella datorer som finns i Azure. Resursprovidern och den virtuella datorgruppen hanterar nu resurserna. När du lägger till eller tar bort repliker i tillgänglighetsgruppen finns det därför ytterligare ett steg för att uppdatera lyssnarmetadata med information om de virtuella SQL Server datorerna. När du ändrar antalet repliker i tillgänglighetsgruppen måste du också använda kommandot az sql vm group ag-listener update för att uppdatera lyssnaren med metadata för de virtuella SQL Server datorerna.

Lägga till en replik

Så här lägger du till en ny replik i tillgänglighetsgruppen:

  1. Lägg till SQL Server virtuella datorn i klustergruppen:

    
    # 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. Använd SQL Server Management Studio för att lägga SQL Server instansen som en replik i tillgänglighetsgruppen.

  3. Lägg till SQL Server VM-metadata i lyssnaren:

    # 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>
    

Ta bort en replik

Så här tar du bort en replik från tillgänglighetsgruppen:

  1. Ta bort repliken från tillgänglighetsgruppen med hjälp av SQL Server Management Studio.
  2. Ta bort SQL Server vm-metadata från lyssnaren:
    # 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. Ta bort SQL Server virtuella datorn från klustret:
    # 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> 
    

Ta bort lyssnare

Om du senare behöver ta bort den tillgänglighetsgruppslyssnare som konfigurerats med Azure CLI måste du gå SQL IaaS Agent-tillägget. Eftersom lyssnaren är registrerad via SQL IaaS Agent-tillägget räcker det inte att ta bort den via SQL Server Management Studio.

Den bästa metoden är att ta bort den via SQL IaaS Agent-tillägget med hjälp av följande kodfragment i Azure CLI. Detta tar bort metadata för tillgänglighetsgruppens lyssnare från SQL IaaS Agent-tillägget. Dessutom tas lyssnaren bort fysiskt från tillgänglighetsgruppen.

# 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>

Ta bort kluster

Ta bort alla noder från klustret för att förstöra det och ta sedan bort klustermetadata från SQL IaaS-agenttillägget. Du kan göra det med hjälp av Azure CLI eller PowerShell.

Ta först bort alla SQL Server virtuella datorerna från klustret:

# 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>

Om det här är de enda virtuella datorerna i klustret förstörs klustret. Om det finns andra virtuella datorer i klustret förutom de virtuella SQL Server-datorerna som har tagits bort tas inte de andra virtuella datorerna bort och klustret förstörs inte.

Ta sedan bort klustermetadata från SQL IaaS-agenttillägget:

# 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>

Nästa steg

När tillgänglighetsgruppen har distribuerats kan du överväga att optimera HADR-inställningarna för SQL Server på virtuella Azure-datorer.

Mer information finns i: