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 wyeliminuj konieczność korzystania z usługi Azure Load Balancer lub rozproszonej nazwy sieci (DNN) dla grupy dostępności Always On, 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 Azure CLI do skonfigurowania środowiska grupy dostępności, można to także zrobić w portalu 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 z przyłączoną domeną w Azure, uruchamiająca SQL Server 2016 (lub nowsza wersja) Enterprise, zlokalizowana 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 magazynowego, aby pełnić rolę świadka w chmurze. Możesz użyć dowolnego istniejącego konta magazynu lub utworzyć nowe konto magazynu. Jeśli chcesz użyć istniejącego konta magazynowego, przejdź do kolejnej sekcji.

Poniższy fragment kodu tworzy konto pamięci masowej.

# 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ń interfejsu wiersza polecenia platformy Azure az sql vm group zarządza metadanymi usługi klastra trybu failover Windows Server (WSFC), który hostuje grupę dostępności. Metadane klastra obejmują domenę Active Directory, konta klastra, konta magazynu, które mają być używane jako świadek w chmurze, oraz wersję programu SQL Server. Użyj polecenia az sql vm group create, aby zdefiniować metadane dla WSFC, co zapewni, że klaster zostanie utworzony zgodnie z definicją po dodaniu pierwszej maszyny wirtualnej z programem SQL Server.

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. Zastąp <password> prawidłowym hasłem.

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

Użyj tego polecenia, aby dodać inne maszyny wirtualne programu SQL Server do klastra. Zmodyfikuj -n tylko parametr nazwy maszyny wirtualnej programu SQL Server. Zastąp <password> prawidłowym hasłem.

Konfigurowanie kworum

Chociaż świadek dysku jest najbardziej odporną opcją kworum, wymaga udostępnionego dysku Azure, co nakłada pewne ograniczenia na grupę dostępności. W związku z tym świadek w chmurze jest zalecanym rozwiązaniem kworum dla klastrów obsługujących grupy 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 Bastion, i sprawdź, czy klaster przechodzi walidację przed kontynuowaniem. Niepodjęcie działań pozostawia klaster w stanie nieobsługiwanym.

Klaster można zweryfikować za pomocą Menedżera klastra trybu failover (FCM) lub następującego polecenia 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

Teraz nie twórz odbiornika, ponieważ jest to zrobione za pomocą Azure CLI 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 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 dodaj /subnets/<subnetname> na jego 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ć listener za pomocą metadanych maszyn wirtualnych SQL Server.

Dodawanie repliki

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

Interfejs wiersza polecenia platformy Azure (CLI)

  1. Dodaj maszynę wirtualną programu SQL Server do grupy klastrów. Zastąp <password> prawidłowym hasłem.

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

Azure CLI

  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ąć nasłuchiwacz grupy dostępności skonfigurowany za pomocą interfejsu wiersza polecenia platformy Azure, musisz użyć rozszerzenia 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 listenera grupy dostępności z rozszerzenia agenta IaaS SQL. Ponadto fizycznie usuwa nasłuchującego 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: