Dela via


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

gäller för:SQL Server på virtuella Azure-datorer

Tips

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.

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 lyssna efter en AlwaysOn-tillgänglighetsgrupp i flera 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 miljön för tillgänglighetsgruppen, är det också möjligt att göra det från Azure-portaleneller manuellt.

Anmärkning

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. Se Migrera tillgänglighetsgrupp för att lära dig mer.

Förutsättningar

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

  • En prenumeration för Azure.
  • 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 separata undernät i samma virtuella nätverk. De virtuella datorerna finns i antingen 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) i samma undernät som varje virtuell dator. Varje virtuell dator har en IP-adress för tillgänglighetsgruppens lyssnare.
  • Varje virtuell dators värdnamn måste matcha namnet på deras respektive SQL Virtual Machine-resurs.
  • 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 Skapa datorobjekt behörighet 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

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-gruppen-kommandogruppen 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 sql2019-ws2019 --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/'
#  --cluster-subnet-type 'MultiSubnet'

az sql vm group create -n <cluster name> -l <region ex:eastus> -g <resource group name> `
  --image-offer <sql2019-ws2019> --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/>'
  --cluster-subnet-type 'MultiSubnet'

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 namnet som angavs tidigare, installerar klusterrollen på de virtuella SQL Server-datorerna och lägger till dem i klustret. Efterföljande användning av kommandot az sql vm add-to-group 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. Ersätt <password> med ett giltigt lösenord.

# Add SQL Server VMs to cluster
# example: az sql vm add-to-group -n SQLVM1 -g SQLVM-RG --sqlvm-group Cluster `
#  -b <password> -p <password> -s <password>
# example: az sql vm add-to-group -n SQLVM2 -g SQLVM-RG --sqlvm-group Cluster `
#  -b <password> -p <password> -s <password>

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. Ersätt <password> med ett giltigt lösenord.

Konfigurera kvorum

Även om diskvittnet är det mest motståndskraftiga kvorumalternativet kräver det en delad Azure-disk, vilket 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ösningen som bäst passar dina affärsbehov. Mer information hittar du i Quorum med virtuella SQL Server-enheter.

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 som du föredrar, till exempel Bastionoch verifiera att klustret klarar valideringen innan du fortsätter vidare. Underlåtenhet att göra det lämnar din kluster i ett tillstånd som inte stöds.

Du kan verifiera klustret med hjälp av Failover Cluster Manager (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, PowerShelleller Transact-SQL.

Viktigt!

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

Skapa lyssnare

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

Resurs-ID för undernät ä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 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ägg till en kopia

För att lägga till en ny replik i tillgänglighetsgruppen:

Azure CLI-verktyg

  1. Lägg till den virtuella SQL Server-datorn i klustergruppen. Ersätt <password> med ett giltigt lösenord.

    
    # 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 <password> -p <password> -s <password>
    
    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:

Azure CLI-verktyg

  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 inställningarna för HADR för SQL Server på virtuella Azure-datorer.

Mer information finns i: