Konfigurace skupiny dostupnosti s více podsítěmi pro SQL Server na virtuálním počítači Azure pomocí PowerShellu nebo Az CLI

Platí pro: SQL Server na virtuálním počítači Azure

Tip

Existuje mnoho metod nasazení skupiny dostupnosti. Zjednodušte nasazení a eliminujte potřebu služby Azure Load Balancer nebo názvu distribuované sítě (DNN) pro vaši skupinu dostupnosti AlwaysOn vytvořením virtuálních počítačů s SQL Serverem v několika podsítích ve stejné virtuální síti Azure. Pokud jste skupinu dostupnosti už vytvořili v jedné podsíti, můžete ji migrovat do prostředí s více podsítěmi.

Tento článek popisuje, jak pomocí PowerShellu nebo Azure CLI nasadit cluster s Windows s podporou převzetí služeb při selhání, přidat do clusteru virtuální počítače s SQL Serverem a naslouchací proces pro skupinu dostupnosti AlwaysOn v rámci několika podsítí.

Nasazení skupiny dostupnosti se stále provádí ručně prostřednictvím aplikace SQL Server Management Studio (SSMS) nebo Transact-SQL (T-SQL).

I když tento článek používá PowerShell a Az CLI ke konfiguraci prostředí skupiny dostupnosti, je to také možné provést na webu Azure Portal nebo ručně .

Poznámka:

Nyní je možné pomocí služby Azure Migrate lift and shift your availability group solution to SQL Server to SQL Server on Azure VMs. Další informace najdete v tématu Migrace skupiny dostupnosti.

Požadavky

Pokud chcete nakonfigurovat skupinu dostupnosti AlwaysOn, musíte mít následující požadavky:

  • Předplatné Azure
  • Skupina prostředků s řadičem domény.
  • Jeden nebo více virtuálních počítačů připojených k doméně v Azure s edicí SQL Server 2016 (nebo novější) Enterprise v samostatných podsítích ve stejné virtuální síti. Virtuální počítače jsou buď ve stejné skupině dostupnosti, nebo v různých zónách dostupnosti, které jsou zaregistrované v rozšíření agenta SQL IaaS.
  • Nejnovější verze PowerShellu nebo Azure CLI
  • Dvě dostupné IP adresy (které nepoužívá žádná entita) ve stejné podsíti jako každý virtuální počítač. Každý virtuální počítač bude mít IP adresu pro naslouchací proces skupiny dostupnosti.
  • Windows Server Core není podporovaný operační systém pro příkazy PowerShellu, na které odkazuje tento článek, protože existuje závislost na nástroji RSAT, který není součástí instalací jádra systému Windows.

Oprávnění

Ke konfiguraci skupiny dostupnosti AlwaysOn pomocí Azure CLI potřebujete následující oprávnění účtu:

  • Existující uživatelský účet domény, který má v doméně oprávnění Vytvořit objekt počítače. Například účet správce domény má obvykle dostatečná oprávnění (například: account@domain.com). Tento účet by měl být také součástí místní skupiny správců na každém virtuálním počítači a vytvořit cluster.
  • Uživatelský účet domény, který řídí SQL Server.

Vytvoření účtu úložiště

Cluster potřebuje účet úložiště, který bude fungovat jako určující cloud. Můžete použít jakýkoli existující účet úložiště nebo můžete vytvořit nový účet úložiště. Pokud chcete použít existující účet úložiště, přejděte k další části.

Následující fragment kódu vytvoří účet úložiště:

# 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

Tip

Pokud používáte zastaralou verzi Azure CLI, může se zobrazit chyba az sql: 'vm' is not in the 'az sql' command group . Stáhněte si nejnovější verzi Azure CLI, abyste tuto chybu získali.

Definování metadat clusteru

Azure CLI az sql vm group command group spravuje metadata služby Windows Server Failover Cluster (WSFC), která je hostitelem skupiny dostupnosti. Metadata clusteru zahrnují doménu služby Active Directory, účty clusteru, účty úložiště, které se mají používat jako určující cloud a verze SQL Serveru. Pomocí příkazu az sql vm group create definujte metadata pro WSFC, aby se při přidání prvního virtuálního počítače s SQL Serverem vytvořil cluster podle definice.

Následující fragment kódu definuje metadata clusteru:

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

Přidání virtuálních počítačů do clusteru

Přidáním prvního virtuálního počítače s SQL Serverem do clusteru se cluster vytvoří. Příkaz az sql vm add-to-group vytvoří cluster s dříve zadaným názvem, nainstaluje roli clusteru na virtuální počítače s SQL Serverem a přidá je do clusteru. Následné použití az sql vm add-to-group příkazu přidá do nově vytvořeného clusteru další virtuální počítače s SQL Serverem.

Následující fragment kódu vytvoří cluster a přidá do něj první virtuální počítač s SQL Serverem:

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

Tento příkaz použijte k přidání dalších virtuálních počítačů s SQL Serverem do clusteru. Upravte pouze -n parametr pro název virtuálního počítače s SQL Serverem.

Konfigurace kvora

Disk s kopií clusteru je sice nejodolnější možností kvora, ale vyžaduje sdílený disk Azure, který má pro skupinu dostupnosti určitá omezení. Cloudová kopie clusteru je proto doporučeným řešením kvora pro clustery hostující skupiny dostupnosti pro SQL Server na virtuálních počítačích Azure.

Pokud máte v clusteru sudý počet hlasů, nakonfigurujte řešení kvora, které nejlépe vyhovuje vašim obchodním potřebám. Další informace najdete v tématu Kvorum s virtuálními počítači s SQL Serverem.

Ověření clusteru

Aby microsoft podporoval cluster s podporou převzetí služeb při selhání, musí projít ověřením clusteru. Připojte se k virtuálnímu počítači pomocí preferované metody, jako je protokol RDP (Remote Desktop Protocol) a ověřte, že váš cluster před pokračováním úspěšně projde ověřením. Pokud to neuděláte, cluster zůstane v nepodporovaném stavu.

Cluster můžete ověřit pomocí Správce clusteru s podporou převzetí služeb při selhání (FCM) nebo pomocí následujícího příkazu PowerShellu:

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

Vytvoření skupiny dostupnosti

Skupinu dostupnosti můžete vytvořit ručně podle potřeby pomocí aplikace SQL Server Management Studio, PowerShellu nebo jazyka Transact-SQL.

Důležité

V tuto chvíli nevytvářejte naslouchací proces, protože se to provádí prostřednictvím Azure CLI v následujících částech.

Vytvoření naslouchacího procesu

Po ručním vytvoření skupiny dostupnosti můžete naslouchací proces vytvořit pomocí příkazu az sql vm ag-listener.

ID prostředku podsítě je hodnota /subnets/<subnetname> připojení k ID prostředku prostředku virtuální sítě. Identifikace ID prostředku podsítě:

  1. Na webu Azure Portal přejděte ke své skupině prostředků.
  2. Vyberte prostředek virtuální sítě.
  3. V podokně Nastavení vyberte Vlastnosti.
  4. Identifikujte ID prostředku pro virtuální síť a připojte /subnets/<subnetname> se na konec a vytvořte ID prostředku podsítě. Příklad:
    • ID prostředku vaší virtuální sítě je: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet
    • Název vaší podsítě je: default
    • ID prostředku podsítě je proto: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default

Následující fragment kódu vytvoří naslouchací proces skupiny dostupnosti:

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

Úprava počtu replik

Při nasazování skupiny dostupnosti na virtuální počítače s SQL Serverem hostovaným v Azure je přidaná vrstva složitosti. Poskytovatel prostředků a skupina virtuálních počítačů teď spravují prostředky. Pokud například přidáváte nebo odebíráte repliky ve skupině dostupnosti, existuje další krok aktualizace metadat naslouchacího procesu s informacemi o virtuálních počítačích s SQL Serverem. Při úpravě počtu replik ve skupině dostupnosti musíte také použít příkaz az sql vm group ag-listener update k aktualizaci naslouchacího procesu s metadaty virtuálních počítačů s SQL Serverem.

Přidání repliky

Přidání nové repliky do skupiny dostupnosti:

Azure CLI

  1. Přidejte virtuální počítač s SQL Serverem do skupiny clusteru:

    
    # 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. Pomocí aplikace SQL Server Management Studio přidejte instanci SQL Serveru jako repliku v rámci skupiny dostupnosti.

  3. Přidejte metadata virtuálního počítače s SQL Serverem do naslouchacího procesu:

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

Odebrání repliky

Odebrání repliky ze skupiny dostupnosti:

Azure CLI

  1. Odeberte repliku ze skupiny dostupnosti pomocí aplikace SQL Server Management Studio.
  2. Odeberte metadata virtuálního počítače s SQL Serverem z naslouchacího procesu:
    # 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. Odeberte virtuální počítač s SQL Serverem z clusteru:
    # 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> 
    

Odebrání naslouchacího procesu

Pokud později potřebujete odebrat naslouchací proces skupiny dostupnosti nakonfigurovaný pomocí Azure CLI, musíte projít rozšířením agenta SQL IaaS. Protože je naslouchací proces zaregistrovaný prostřednictvím rozšíření agenta SQL IaaS, stačí ho odstranit přes SQL Server Management Studio.

Nejlepší metodou je odstranění prostřednictvím rozšíření agenta SQL IaaS pomocí následujícího fragmentu kódu v Azure CLI. Tím odeberete metadata naslouchacího procesu skupiny dostupnosti z rozšíření agenta SQL IaaS. Zároveň fyzicky odstraní naslouchací proces ze skupiny dostupnosti.

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

Odebrání clusteru

Odeberte všechny uzly z clusteru, abyste ho zničili, a pak odeberte metadata clusteru z rozšíření agenta SQL IaaS. Můžete to udělat pomocí Azure CLI nebo PowerShellu.

Nejprve odeberte všechny virtuální počítače s SQL Serverem z clusteru:

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

Pokud se jedná o jediné virtuální počítače v clusteru, cluster se zničí. Pokud jsou v clusteru kromě odebraných virtuálních počítačů s SQL Serverem nějaké další virtuální počítače, ostatní virtuální počítače se neodeberou a cluster se nezničí.

Pak odeberte metadata clusteru z rozšíření agenta SQL IaaS:

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

Další kroky

Po nasazení skupiny dostupnosti zvažte optimalizaci nastavení HADR pro SQL Server na virtuálních počítačích Azure.

Další informace najdete v následujících tématech: