Konfigurowanie grupy dostępności z jedną podsiecią dla programu SQL Server na maszynie wirtualnej platformy Azure przy użyciu programu PowerShell lub interfejsu wiersza polecenia az

Dotyczy:SQL Server na maszynie wirtualnej platformy Azure

Napiwek

Istnieje wiele metod wdrażania grupy dostępności. Uprość wdrażanie i eliminuje konieczność korzystania z usługi Azure Load Balancer lub rozproszonej nazwy sieci (DNN) dla zawsze włączonej grupy dostępności, tworząc maszyny wirtualne programu SQL Server w wielu podsieciach w tej samej sieci wirtualnej platformy Azure. Jeśli grupa dostępności została już utworzona w jednej podsieci, możesz ją zmigrować do środowiska z wieloma podsieciami.

W tym artykule opisano sposób wdrażania klastra trybu failover systemu Windows przy użyciu programu PowerShell lub interfejsu wiersza polecenia platformy Azure, dodawania maszyn wirtualnych programu SQL Server do klastra oraz tworzenia wewnętrznego modułu równoważenia obciążenia i odbiornika dla zawsze włączonej grupy dostępności w ramach jednej podsieci.

Wdrażanie grupy dostępności jest nadal wykonywane ręcznie za pomocą programu SQL Server Management Studio (SSMS) lub języka Transact-SQL (T-SQL).

Chociaż w tym artykule użyto programu PowerShell i interfejsu wiersza polecenia az do skonfigurowania środowiska grupy dostępności, można to zrobić również w witrynie Azure Portal przy użyciu szablonów szybkiego startu platformy Azure lub ręcznie .

Uwaga

Teraz można podnieść i przenieść rozwiązanie grupy dostępności do programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu usługi Azure Migrate. Aby dowiedzieć się więcej, zobacz Migrowanie grupy dostępności.

Wymagania wstępne

Aby skonfigurować zawsze włączoną grupę dostępności, musisz mieć następujące wymagania wstępne:

  • Subskrypcja platformy Azure.
  • Grupa zasobów z kontrolerem domeny.
  • Co najmniej jedna maszyna wirtualna przyłączona do domeny na platformie Azure z uruchomionym programem SQL Server 2016 (lub nowszym) wersją Enterprise w tym samym zestawie dostępności lub w różnych strefach dostępności zarejestrowanych w rozszerzeniu agenta IaaS SQL.
  • Najnowsza wersja programu PowerShell lub interfejsu wiersza polecenia platformy Azure.
  • Dwa dostępne (nieużytowane przez żadną jednostkę) adresy IP. Jeden z nich dotyczy wewnętrznego modułu równoważenia obciążenia. Druga dotyczy odbiornika grupy dostępności w tej samej podsieci co grupa dostępności. Jeśli używasz istniejącego modułu równoważenia obciążenia, potrzebujesz tylko jednego dostępnego adresu IP dla odbiornika grupy dostępności.
  • Windows Server Core nie jest obsługiwanym systemem operacyjnym dla poleceń programu PowerShell, o których mowa w tym artykule, ponieważ istnieje zależność od rsAT, która nie jest uwzględniona w instalacjach podstawowych systemu Windows.

Uprawnienia

Do skonfigurowania zawsze włączonej grupy dostępności przy użyciu interfejsu wiersza polecenia platformy Azure potrzebne są następujące uprawnienia konta:

  • Istniejące konto użytkownika domeny z uprawnieniem Tworzenie obiektu komputera w domenie. Na przykład konto administratora domeny zwykle ma wystarczające uprawnienia (na przykład: account@domain.com). To konto powinno być również częścią grupy administratorów lokalnych na każdej maszynie wirtualnej w celu utworzenia klastra.
  • Konto użytkownika domeny, które kontroluje program SQL Server.

Tworzenie konta magazynu

Klaster wymaga konta magazynu, aby pełnić rolę monitora w chmurze. Możesz użyć dowolnego istniejącego konta magazynu lub utworzyć nowe konto magazynu. Jeśli chcesz użyć istniejącego konta magazynu, przejdź do następnej sekcji.

Poniższy fragment kodu tworzy konto magazynu:

# 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

Napiwek

Jeśli używasz nieaktualnej wersji interfejsu wiersza polecenia platformy Azure, może zostać wyświetlony błąd az sql: 'vm' is not in the 'az sql' command group . Pobierz najnowszą wersję interfejsu wiersza polecenia platformy Azure, aby przejść przez ten błąd.

Definiowanie metadanych klastra

Grupa poleceń az sql vm group interfejsu wiersza polecenia platformy Azure zarządza metadanymi usługi klastra trybu failover systemu Windows Server (WSFC), która hostuje grupę dostępności. Metadane klastra obejmują domenę usługi Active Directory, konta klastra, konta magazynu, które mają być używane jako monitor w chmurze i wersja programu SQL Server. Użyj polecenia az sql vm group create , aby zdefiniować metadane dla usługi WSFC, aby po dodaniu pierwszej maszyny wirtualnej z programem SQL Server klaster został utworzony zgodnie z definicją.

Poniższy fragment kodu definiuje metadane klastra:

# 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/'
#  --cluster-subnet-type 'SingleSubnet'

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/>'
  --cluster-subnet-type 'SingleSubnet'

Dodawanie maszyn wirtualnych do klastra

Dodanie pierwszej maszyny wirtualnej z programem SQL Server do klastra powoduje utworzenie klastra. Polecenie az sql vm add-to-group tworzy klaster o podanej wcześniej nazwie, instaluje rolę klastra na maszynach wirtualnych programu SQL Server i dodaje je do klastra. Kolejne zastosowania az sql vm add-to-group polecenia dodają więcej maszyn wirtualnych programu SQL Server do nowo utworzonego klastra.

Poniższy fragment kodu tworzy klaster i dodaje do niego pierwszą maszynę wirtualną z programem SQL Server:

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

Użyj tego polecenia, aby dodać inne maszyny wirtualne programu SQL Server do klastra. Zmodyfikuj -n tylko parametr nazwy maszyny wirtualnej programu SQL Server.

Konfigurowanie kworum

Mimo że monitor dysku jest najbardziej odporną opcją kworum, wymaga dysku udostępnionego platformy Azure, który nakłada pewne ograniczenia dla grupy dostępności. W związku z tym monitor w chmurze jest zalecanym rozwiązaniem kworum dla klastrów hostowania grup dostępności dla programu SQL Server na maszynach wirtualnych platformy Azure.

Jeśli masz parzystą liczbę głosów w klastrze, skonfiguruj rozwiązanie kworum, które najlepiej odpowiada twoim potrzebom biznesowym. Aby uzyskać więcej informacji, zobacz Kworum z maszynami wirtualnymi programu SQL Server.

Weryfikowanie klastra

Aby klaster trybu failover był obsługiwany przez firmę Microsoft, musi przejść walidację klastra. Połączenie do maszyny wirtualnej przy użyciu preferowanej metody, takiej jak Protokół RDP (Remote Desktop Protocol) i sprawdź, czy klaster przechodzi walidację przed kontynuowaniem. Niepowodzenie w tym celu pozostawia klaster w stanie nieobsługiwanym.

Klaster można zweryfikować przy użyciu Menedżera klastra trybu failover (FCM) lub następującego polecenia programu PowerShell:

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

Tworzenie grupy dostępności

Ręcznie utwórz grupę dostępności, tak jak zwykle, przy użyciu programu SQL Server Management Studio, programu PowerShell lub języka Transact-SQL.

Ważne

Nie twórz odbiornika w tej chwili, ponieważ odbywa się to za pośrednictwem interfejsu wiersza polecenia platformy Azure w poniższych sekcjach.

Tworzenie wewnętrznego modułu równoważenia obciążenia

Uwaga

Wdrożenia grup dostępności w wielu podsieciach nie wymagają modułu równoważenia obciążenia. W środowisku z jedną podsiecią klienci korzystający z programu SQL Server 2019 CU8 lub nowszego w systemie Windows 2016 i nowszych mogą zastąpić tradycyjny odbiornik nazwy sieci wirtualnej (VNN) i odbiornik usługi Azure Load Balancer odbiornikiem rozproszonej nazwy sieci (DNN). Jeśli chcesz użyć nazwy sieci rozproszonej, pomiń wszystkie kroki samouczka, które konfigurują usługę Azure Load Balancer dla grupy dostępności.

Odbiornik zawsze włączonej grupy dostępności wymaga wewnętrznego wystąpienia usługi Azure Load Balancer. Wewnętrzny moduł równoważenia obciążenia udostępnia "pływający" adres IP odbiornika grupy dostępności, który umożliwia szybsze przełączanie w tryb failover i ponowne nawiązywanie połączenia. Jeśli maszyny wirtualne programu SQL Server w grupie dostępności są częścią tego samego zestawu dostępności, możesz użyć podstawowego modułu równoważenia obciążenia. W przeciwnym razie należy użyć modułu równoważenia obciążenia w warstwie Standardowa.

Uwaga

Wewnętrzny moduł równoważenia obciążenia powinien znajdować się w tej samej sieci wirtualnej co wystąpienia maszyn wirtualnych programu SQL Server.

Poniższy fragment kodu tworzy wewnętrzny moduł równoważenia obciążenia:

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

Ważne

Zasób publicznego adresu IP dla każdej maszyny wirtualnej z programem SQL Server powinien mieć jednostkę SKU w warstwie Standardowa, która ma być zgodna z modułem równoważenia obciążenia w warstwie Standardowa. Aby określić jednostkę SKU zasobu publicznego adresu IP maszyny wirtualnej, przejdź do pozycji Grupa zasobów, wybierz zasób publicznego adresu IP dla żądanej maszyny wirtualnej z programem SQL Server i znajdź wartość w obszarze JEDNOSTKA SKU w okienku Przegląd .

Tworzenie odbiornika

Po ręcznym utworzeniu grupy dostępności można utworzyć odbiornik przy użyciu polecenia az sql vm ag-listener.

Identyfikator zasobu podsieci to wartość /subnets/<subnetname> dołączona do identyfikatora zasobu zasobu sieci wirtualnej. Aby zidentyfikować identyfikator zasobu podsieci:

  1. Przejdź do grupy zasobów w witrynie Azure Portal.
  2. Wybierz zasób sieci wirtualnej.
  3. Wybierz pozycję Właściwości w okienku Ustawienia.
  4. Zidentyfikuj identyfikator zasobu dla sieci wirtualnej i dołącz /subnets/<subnetname> go na końcu, aby utworzyć identyfikator zasobu podsieci. Na przykład: .
    • Identyfikator zasobu sieci wirtualnej to: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet
    • Nazwa podsieci to: default
    • W związku z tym identyfikator zasobu podsieci to: /subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default

Poniższy fragment kodu tworzy odbiornik grupy dostępności:

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

Modyfikowanie liczby replik

Istnieje dodatkowa warstwa złożoności podczas wdrażania grupy dostępności na maszynach wirtualnych programu SQL Server hostowanych na platformie Azure. Dostawca zasobów i grupa maszyn wirtualnych teraz zarządzają zasobami. W związku z tym podczas dodawania lub usuwania replik w grupie dostępności istnieje dodatkowy krok aktualizowania metadanych odbiornika przy użyciu informacji o maszynach wirtualnych programu SQL Server. Podczas modyfikowania liczby replik w grupie dostępności należy również użyć polecenia az sql vm group ag-listener update, aby zaktualizować odbiornik za pomocą metadanych maszyn wirtualnych programu SQL Server.

Dodawanie repliki

Aby dodać nową replikę do grupy dostępności:

Interfejs wiersza polecenia platformy Azure

  1. Dodaj maszynę wirtualną programu SQL Server do grupy klastrów:

    
    # 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. Użyj programu SQL Server Management Studio, aby dodać wystąpienie programu SQL Server jako replikę w grupie dostępności.

  3. Dodaj metadane maszyny wirtualnej programu SQL Server do odbiornika:

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

Usuwanie repliki

Aby usunąć replikę z grupy dostępności:

Interfejs wiersza polecenia platformy Azure

  1. Usuń replikę z grupy dostępności przy użyciu programu SQL Server Management Studio.
  2. Usuń metadane maszyny wirtualnej z programu SQL Server z odbiornika:
    # 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. Usuń maszynę wirtualną z programu SQL Server z klastra:
    # 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> 
    

Usuwanie odbiornika

Jeśli później musisz usunąć odbiornik grupy dostępności skonfigurowany za pomocą interfejsu wiersza polecenia platformy Azure, musisz przejść przez rozszerzenie agenta IaaS sql. Ponieważ odbiornik jest zarejestrowany za pośrednictwem rozszerzenia agenta IaaS SQL, usunięcie go za pośrednictwem programu SQL Server Management Studio jest niewystarczające.

Najlepszą metodą jest usunięcie go za pośrednictwem rozszerzenia agenta IaaS SQL przy użyciu następującego fragmentu kodu w interfejsie wiersza polecenia platformy Azure. Spowoduje to usunięcie metadanych odbiornika grupy dostępności z rozszerzenia agenta IaaS SQL. Ponadto fizycznie usuwa odbiornik z grupy dostępności.

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

Usuwanie klastra

Usuń wszystkie węzły z klastra, aby go zniszczyć, a następnie usuń metadane klastra z rozszerzenia agenta IaaS SQL. Możesz to zrobić przy użyciu interfejsu wiersza polecenia platformy Azure lub programu PowerShell.

Najpierw usuń wszystkie maszyny wirtualne programu SQL Server z klastra:

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

Jeśli są to jedyne maszyny wirtualne w klastrze, klaster zostanie zniszczony. Jeśli w klastrze znajdują się inne maszyny wirtualne oprócz usuniętych maszyn wirtualnych programu SQL Server, pozostałe maszyny wirtualne nie zostaną usunięte i klaster nie zostanie zniszczony.

Następnie usuń metadane klastra z rozszerzenia agenta IaaS SQL:

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

Następne kroki

Po wdrożeniu grupy dostępności rozważ optymalizację ustawień usługi HADR dla programu SQL Server na maszynach wirtualnych platformy Azure.

Aby dowiedzieć się więcej, zobacz: