Udostępnij za pośrednictwem


Konfigurowanie grupy dostępności obejmującej wiele podsieci dla programu SQL Server na maszynie wirtualnej platformy Azure przy użyciu programu PowerShell lub interfejsu wiersza polecenia Az

Dotyczy: program 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 i odbiornika dla zawsze włączonej grupy dostępności w wielu podsieciach.

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 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 uruchomioną wersją SQL Server 2016 (lub nowszą) Enterprise w oddzielnych podsieciach w tej samej sieci wirtualnej. Maszyny wirtualne znajdują się 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 w tej samej podsieci co każda maszyna wirtualna. Każda maszyna wirtualna będzie mieć adres IP 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 core 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 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'

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łącz się z maszyną wirtualną 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 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, a 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: