Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server no VM do Azure
Dica
Há muitos métodos para configurar um grupo de disponibilidade. Simplifique sua implantação e elimine a necessidade de um Balanceador de Carga do Azure ou DNN (nome de rede distribuída) para seu grupo de disponibilidade Always On criando suas máquinas virtuais (VMs) do SQL Server em várias sub-redes dentro da mesma rede virtual do Azure. Se você já criou seu grupo de disponibilidade em uma única sub-rede, poderá migrá-lo para um ambiente de várias sub-redes.
Este artigo descreve como usar o PowerShell ou a CLI do Azure para implantar um cluster de failover do Windows, adicionar VMs do SQL Server ao cluster e configurar um ouvinte para um grupo de disponibilidade Always On em várias sub-redes.
A implantação do grupo de disponibilidade ainda é feita manualmente por meio do SQL Server Management Studio (SSMS) ou do Transact-SQL (T-SQL).
Embora este artigo use o PowerShell e a CLI Az para configurar o ambiente do grupo de disponibilidade, também é possível fazê-lo a partir do portal do Azure, ou Manualmente.
Observação
Agora é possível elevar e mudar sua solução de grupo de disponibilidade para o SQL Server em VMs do Azure usando o Azure Migrate. Consulte o documento Migração do grupo de disponibilidade para saber mais.
Pré-requisitos
Para configurar um grupo de disponibilidade Always On, você deve ter os seguintes pré-requisitos:
- Uma assinatura do Azure.
- Um grupo de recursos com um controlador de domínio.
- Uma ou mais VMs associadas a um domínio no Azure a executar o SQL Server 2016 (ou posterior) edição Enterprise em sub-redes separadas na mesma rede virtual. As VMs estão no mesmo conjunto de disponibilidade ou em zonas de disponibilidade diferentes que foram registadas com a extensão do Agente SQL IaaS.
- A versão mais recente do PowerShell ou do Azure CLI.
- Dois endereços IP disponíveis (não utilizados por qualquer entidade), na mesma sub-rede que cada máquina virtual. Cada máquina virtual terá um endereço IP para o ouvinte do grupo de disponibilidade.
- Cada nome de host de máquina virtual deve corresponder ao nome de seu respetivo recurso de máquina virtual SQL.
- O Windows Server Core não é um sistema operacional com suporte para os comandos do PowerShell mencionados neste artigo, pois há uma dependência de RSAT, que não está incluída nas instalações Core do Windows.
Permissões
Você precisa das seguintes permissões de conta para configurar o grupo de disponibilidade Always On usando a CLI do Azure:
- Uma conta de utilizador de domínio existente que tenha a permissão para criar objetos de computador no domínio. Por exemplo, uma conta de administrador de domínio normalmente tem permissão suficiente (por exemplo: account@domain.com). Essa conta também deve fazer parte do grupo de administradores locais em cada VM para criar o cluster.
- A conta de usuário de domínio que controla o SQL Server.
Criar uma conta de armazenamento
O cluster precisa de uma conta de armazenamento para atuar como testemunha da nuvem. Você pode usar qualquer conta de armazenamento existente ou criar uma nova conta de armazenamento. Se você quiser usar uma conta de armazenamento existente, pule para a próxima seção.
O trecho de código a seguir cria a conta de armazenamento:
# 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
Dica
Poderá ver o erro az sql: 'vm' is not in the 'az sql' command group se estiver a utilizar uma versão desatualizada da CLI do Azure. Baixe a versão mais recente da Azure CLI para corrigir este erro.
Definir metadados de cluster
A CLI do Azure az sql vm group gere os metadados do grupo de comandos do serviço WSFC (Cluster de Failover do Windows Server) que hospeda o grupo de disponibilidade. Os metadados de cluster incluem o domínio do Ative Directory, contas de cluster, contas de armazenamento a serem usadas como testemunha de nuvem e versão do SQL Server. Use az sql vm group create para definir os metadados do WSFC para que, quando a primeira VM do SQL Server for adicionada, o cluster seja criado conforme definido.
O trecho de código a seguir define os metadados para o cluster:
# 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'
Adicionar VMs ao cluster
Adicionar a primeira VM do SQL Server ao cluster cria o cluster. O comando az sql vm add-to-group cria o cluster com o nome dado anteriormente, instala a função de cluster nas VMs do SQL Server e as adiciona ao cluster. Os usos subsequentes do comando az sql vm add-to-group adicionam mais VMs do SQL Server ao cluster recém-criado.
O trecho de código a seguir cria o cluster e adiciona a primeira VM do SQL Server a ele. Substitua <password> por uma senha válida.
# 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>
Use este comando para adicionar outras VMs do SQL Server ao cluster. Modifique apenas o parâmetro -n para o nome da VM do SQL Server. Substitua <password> por uma senha válida.
Configurar quórum
Embora a testemunha de disco seja a opção de quorum mais resiliente, ela requer um disco compartilhado do Azure, o que impõe algumas limitações ao grupo de disponibilidade. Como tal, a testemunha de nuvem é a solução de quorum recomendada para clusters que hospedam grupos de disponibilidade para o SQL Server em VMs do Azure.
Se você tiver um número par de votos no cluster, configure a solução de quórum que melhor se adapte às suas necessidades de negócios. Para obter mais informações, consulte Quórum com VMs do SQL Server.
Validar agrupamento
Para que um cluster de failover seja suportado pela Microsoft, ele deve passar na validação do cluster. Conecte-se à VM usando seu método preferido, como Bastion, e valide se o cluster passa na validação antes de prosseguir. A falha ao fazer isso deixa o cluster em um estado sem suporte.
Você pode validar o cluster usando o FCM (Gerenciador de Cluster de Failover) ou o seguinte comando do PowerShell:
Test-Cluster –Node ("<node1>","<node2>") –Include "Inventory", "Network", "System Configuration"
Criar grupo de disponibilidade
Crie manualmente o grupo de disponibilidade como faria normalmente, usando SQL Server Management Studio, PowerShellou Transact-SQL.
Importante
Não crie um ouvinte neste momento, pois isso é feito por meio da CLI do Azure nas seções a seguir.
Criar ouvinte
Depois de criar manualmente o grupo de disponibilidade, você pode criar o ouvinte usando az sql vm ag-listener.
O ID do recurso de sub-rede é o valor de /subnets/<subnetname> acrescentado ao ID do recurso de rede virtual. Para identificar o ID do recurso de sub-rede:
- Vá para seu grupo de recursos no portal do Azure.
- Selecione o recurso de rede virtual.
- Selecione Propriedades no painel Definições.
- Identifique o ID do recurso para a rede virtual e acrescente
/subnets/<subnetname>ao final dele para criar o ID do recurso da sub-rede. Por exemplo:- Seu ID de recurso de rede virtual é:
/subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet - O nome da sua sub-rede é:
default - Portanto, seu ID de recurso de sub-rede é:
/subscriptions/a1a1-1a11a/resourceGroups/SQLVM-RG/providers/Microsoft.Network/virtualNetworks/SQLVMvNet/subnets/default
- Seu ID de recurso de rede virtual é:
O trecho de código a seguir cria o ouvinte do grupo de disponibilidade:
# 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>
Modificar o número de réplicas
Há uma camada adicional de complexidade quando você está implantando um grupo de disponibilidade para VMs do SQL Server hospedadas no Azure. O provedor de recursos e o grupo de máquinas virtuais agora gerenciam os recursos. Portanto, quando estiver adicionando ou removendo réplicas no grupo de disponibilidade, há uma tarefa adicional de atualizar os metadados do listener com informações sobre as máquinas virtuais do SQL Server. Ao modificar o número de réplicas no grupo de disponibilidade, deve-se também usar o comando az sql vm group ag-listener update para actualizar o listener com os metadados das VMs do SQL Server.
Adicionar uma réplica
Para adicionar uma nova réplica ao grupo de disponibilidade:
Azure CLI
Adicione a VM do SQL Server ao grupo de clusters. Substitua
<password>por uma senha válida.# 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>Use o SQL Server Management Studio para adicionar a instância do SQL Server como uma réplica dentro do grupo de disponibilidade.
Adicione os metadados da VM do SQL Server ao ouvinte:
# 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>
Remover uma réplica
Para remover uma réplica do grupo de disponibilidade:
Azure CLI
- Remova a réplica do grupo de disponibilidade usando o SQL Server Management Studio.
- Remova os metadados da VM do SQL Server do ouvinte:
# 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> - Remova a VM do SQL Server do cluster:
# 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>
Remover ouvinte
Se, posteriormente, precisar remover o ouvinte do grupo de disponibilidade configurado com a CLI do Azure, você deverá passar pela extensão do SQL IaaS Agent. Como o ouvinte é registrado por meio da extensão do SQL IaaS Agent, apenas excluí-lo por meio do SQL Server Management Studio é insuficiente.
O melhor método é excluí-lo por meio da extensão do SQL IaaS Agent usando o seguinte trecho de código na CLI do Azure. Realizar essa ação remove os metadados do listener do grupo de disponibilidade da extensão SQL IaaS Agent. Ele também exclui fisicamente o ouvinte do grupo de disponibilidade.
# 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>
Remover cluster
Remova todos os nós do cluster para destruí-lo e, em seguida, remova os metadados do cluster da extensão do SQL IaaS Agent. Você pode fazer isso usando a CLI do Azure ou o PowerShell.
Primeiro, remova todas as VMs do SQL Server do cluster:
# 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>
Se essas forem as únicas VMs no cluster, o cluster será destruído. Se houver outras VMs no cluster além das VMs do SQL Server que foram removidas, as outras VMs não serão removidas e o cluster não será destruído.
Em seguida, remova os metadados do cluster da extensão do SQL IaaS Agent:
# 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>
Próximos passos
Uma vez que o grupo de disponibilidade seja implantado, considere otimizar as configurações de HADR para o SQL Server em VMs do Azure.
Para saber mais, consulte:
- Cluster de Failover do Windows Server com SQL Server em VMs do Azure
- Grupos de Disponibilidade Always On com SQL Server em VMs do Azure
- Visão geral dos grupos de disponibilidade Always On