Använd PowerShell eller Az CLI för att konfigurera en tillgänglighetsgrupp för SQL Server på en virtuell Azure-dator

Gäller för:SQL Server på en virtuell Azure-dator

Dricks

Det finns många metoder för att distribuera en tillgänglighetsgrupp. Förenkla distributionen och eliminera behovet av en Azure Load Balancer eller ett distribuerat nätverksnamn (DNN) för din AlwaysOn-tillgänglighetsgrupp genom att skapa dina virtuella SQL Server-datorer i flera undernät i samma virtuella Azure-nätverk. Om du redan har skapat tillgänglighetsgruppen i ett enda undernät kan du migrera den till en miljö med flera undernät.

Den här artikeln beskriver 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 den interna lastbalanseraren och lyssnaren för en AlwaysOn-tillgänglighetsgrupp i ett enda undernät.

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

Även om den här artikeln använder PowerShell och Az CLI för att konfigurera tillgänglighetsgruppens miljö, är det också möjligt att göra det från Azure-portalen, med hjälp av Azure-snabbstartsmallar eller manuellt också.

Kommentar

Nu är det möjligt att lyfta och flytta din tillgänglighetsgruppslösning till SQL Server på virtuella Azure-datorer med Hjälp av Azure Migrate. Mer information finns i Migrera tillgänglighetsgrupp .

Förutsättningar

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

  • En Azure-prenumeration.
  • En resursgrupp med en domänkontrollant.
  • En eller flera domänanslutna virtuella datorer i Azure som kör SQL Server 2016 (eller senare) Enterprise Edition i samma tillgänglighetsuppsättning eller olika tillgänglighetszoner som har registrerats med SQL IaaS Agent-tillägget.
  • 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. Det andra gäller 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.
  • Windows Server Core är inte ett operativsystem som stöds för De PowerShell-kommandon som refereras i den här artikeln eftersom det finns ett beroende av RSAT, som inte ingår i Core-installationer av Windows.

Behörigheter

Du behöver följande kontobehörigheter för att konfigurera AlwaysOn-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 går du 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

Dricks

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

Kommandogruppen Azure CLI az sql vm group hanterar metadata för WSFC-tjänsten (Windows Server Failover Cluster) som är värd för tillgänglighetsgruppen. Klustermetadata innehåller 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 första virtuella SQL Server-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 till den första virtuella SQL Server-datorn i klustret skapas klustret. Kommandot az sql vm add-to-group skapar klustret med det namn som angavs tidigare, installerar klusterrollen på de virtuella SQL Server-datorerna och lägger till dem i klustret. Efterföljande användning av az sql vm add-to-group kommandot lägger till fler virtuella SQL Server-datorer i det nyligen skapade klustret.

Följande kodfragment skapar klustret och lägger till den första virtuella SQL Server-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 om du vill lägga till andra virtuella SQL Server-datorer i klustret. Ändra endast parametern -n 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 medfö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 virtuella SQL Server-datorer.

Verifiera kluster

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

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

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

Skapa tillgänglighetsgrupp

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

Viktigt!

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

Skapa en intern lastbalanserare

Kommentar

Distributioner av tillgänglighetsgrupper till flera undernät kräver ingen lastbalanserare. I en miljö med ett undernät kan kunder som använder SQL Server 2019 CU8 och senare i Windows 2016 och senare ersätta den traditionella VNN-lyssnaren (VNN) och Azure Load Balancer med en DNN-lyssnare (distribuerat nätverksnamn). Om du vill använda ett DNN hoppar du över de självstudier som konfigurerar Azure Load Balancer för din tillgänglighetsgrupp.

Lyssnaren för AlwaysOn-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 virtuella SQL Server-datorerna i en tillgänglighetsgrupp ingår i samma tillgänglighetsuppsättning kan du använda en Basic-lastbalanserare. Annars måste du använda en Standard-lastbalanserare.

Kommentar

Den interna lastbalanseraren ska finnas i samma virtuella nätverk som SQL Server VM-instanserna.

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 ska ha en standard-SKU som ska vara kompatibel med standardlastbalanseraren. Om du vill fastställa SKU:n för den virtuella datorns offentliga IP-resurs går du till Resursgrupp, väljer den offentliga IP-adressresursen 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 az sql vm ag-listener.

Resurs-ID :t för undernätet är värdet /subnets/<subnetname> för resurs-ID:t för den virtuella nätverksresursen. Så här identifierar du resurs-ID:t för undernätet:

  1. Gå till resursgruppen i Azure-portalen.
  2. Välj den virtuella nätverksresursen.
  3. Välj Egenskaper i fönstret Inställningar .
  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 resurs-ID:t för undernätet. Till 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 resurs-ID för undernätet: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default

Följande kodfragment skapar lyssnaren för tillgänglighetsgruppen:

# 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 virtuella SQL Server-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 den virtuella SQL Server-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 till 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 den virtuella SQL Server-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 tillgänglighetsgruppens lyssnare som konfigurerats med Azure CLI måste du gå igenom SQL IaaS Agent-tillägget. Eftersom lyssnaren är registrerad via SQL IaaS Agent-tillägget är det inte tillräckligt att bara ta bort det 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 lyssnarmetadata för tillgänglighetsgruppen från SQL IaaS Agent-tillägget. Den tar också bort lyssnaren 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 Agent-tillägget. Du kan göra det med hjälp av Azure CLI eller PowerShell.

Ta först bort alla virtuella SQL Server-datorer 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-datorer 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 Agent-tillä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 bör du överväga att optimera HADR-inställningarna för SQL Server på virtuella Azure-datorer.

Du kan läsa mer här: