As instâncias de cluster de comutação por falha Always On do Microsoft SQL Server (FCI) permitem-lhe executar uma única instância do SQL Server em vários nós do cluster de comutação por falha do Windows Server (WSFC). Em qualquer momento, um dos nós do cluster aloja ativamente a instância SQL. Em caso de falha, o WSFC transfere automaticamente a propriedade dos recursos da instância para outro nó.
O FCI do SQL Server requer que os dados estejam localizados no armazenamento partilhado para que possam ser acedidos em todos os nós do WSFC. Este guia descreve como pode implementar uma instância de cluster de failover do SQL Server 2019 que usa o Storage Spaces Direct (S2D) para armazenamento partilhado. O S2D fornece uma SAN virtual baseada em software que pode usar discos de dados de VMs do Compute Engine para armazenar a base de dados SQL.
O diagrama seguinte ilustra a implementação:
Ao implementar uma arquitetura hiperconvergente, as instâncias de VM node-1
e node-2
servem como nós do WSFC e também alojam o armazenamento partilhado. Uma terceira instância de VM, witness
, é usada para alcançar um quórum num cenário de comutação por falha. As três instâncias de VM estão
distribuídas por três zonas e partilham uma sub-rede comum.
Os clientes comunicam com a instância do SQL Server através de um balanceador de carga de TCP interno. Este equilibrador de carga usa uma verificação de funcionamento personalizada para determinar que nó do WSFC está atualmente a alojar a instância SQL e encaminha o tráfego para essa instância.
Este artigo pressupõe que já implementou o Active Directory no Google Cloud e que tem conhecimentos básicos do SQL Server, do Active Directory e do Compute Engine.
Objetivos
- Implemente um WSFC que compreenda duas instâncias de VM do SQL Server e uma terceira instância de VM que funcione como testemunha de partilha de ficheiros.
- Implemente um FCI do SQL Server no WSFC.
- Verifique se o cluster está a funcionar simulando uma comutação por falha.
Custos
Este tutorial usa componentes faturáveis do Google Cloud, incluindo:
Use a calculadora de preços para gerar uma estimativa de custos com base na sua utilização prevista.
Antes de começar
Para concluir este guia, precisa do seguinte:
- Um domínio do Active Directory com, pelo menos, um controlador de domínio. Pode criar um domínio do Active Directory através do Microsoft AD gerido. Em alternativa, pode implementar um ambiente do Active Directory personalizado no Compute Engine e configurar uma zona de encaminhamento de DNS privado que encaminha as consultas de DNS para os controladores de domínio.
- Um utilizador do Active Directory que tem autorização para associar computadores ao domínio
e pode iniciar sessão através do RDP. Se estiver a usar o Managed Microsoft AD, pode usar o utilizador
setupadmin
. - Um projeto Google Cloud e uma VPC com conetividade aos controladores de domínio do Active Directory.
- Uma sub-rede a usar para as instâncias de VM do WSFC.
Para concluir o guia, também precisa de um Google Cloud projeto:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Quando terminar este tutorial, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpar.
Preparar o projeto e a rede
Para preparar o Google Cloud projeto e a VPC para a implementação do FCI do SQL Server, faça o seguinte:
Na Google Cloud consola, abra o Cloud Shell clicando no botão Ativar Cloud Shell
.
Inicialize as seguintes variáveis:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Onde:
VPC_NAME
: nome da sua VPCSUBNET_NAME
: nome da sua sub-rede
Defina o seu ID do projeto predefinido:
gcloud config set project
PROJECT_ID
Substitua
PROJECT_ID
pelo ID do seu Google Cloud projeto.Predefina a sua região:
gcloud config set compute/region
REGION
Substitua
REGION
pelo ID da região na qual quer fazer a implementação.
Crie regras de firewall
Para permitir que os clientes se liguem ao SQL Server, permita a comunicação entre os nós do WSFC e para permitir que o equilibrador de carga realize verificações de estado, tem de criar várias regras de firewall. Para simplificar a criação destas regras de firewall, use etiquetas de rede:
- Os 2 nós do WSFC estão anotados com a etiqueta
wsfc-node
. - Todos os servidores (incluindo o servidor testemunha) são anotados com a etiqueta
wsfc
.
Crie regras de firewall que usem estas etiquetas de rede:
- Regresse à sua sessão do Cloud Shell existente.
Crie regras de firewall para os nós do WSFC:
SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\)) gcloud compute firewall-rules create allow-all-between-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp,udp,icmp \ --enable-logging \ --source-tags=wsfc \ --target-tags=wsfc \ --network=$VPC_NAME \ --priority 10000 gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp:1433 \ --enable-logging \ --source-ranges=$SUBNET_CIDR \ --target-tags=wsfc-node \ --network=$VPC_NAME \ --priority 10000
Crie uma regra de firewall que permita verificações de funcionamento a partir dos intervalos de IPs dos verificadores do Google Cloud:
gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=wsfc-node \ --network=$VPC_NAME \ --priority 10000
Crie instâncias de VM
Agora, implementa duas instâncias de VM para o cluster de comutação por falha. Em qualquer momento, apenas uma destas VMs funciona como o nó FCI ativo, enquanto o outro nó funciona como o nó de comutação por falha. As duas instâncias de VM têm de cumprir os seguintes requisitos:
- Estão localizados na mesma região para que possam ser acedidos por um balanceador de carga TCP interno.
- O respetivo agente convidado está configurado para usar o modo WSFC. Neste modo, o agente convidado ignora os endereços IP dos equilibradores de carga internos quando configura a interface de rede local. Este comportamento é necessário para evitar conflitos de endereços IP durante eventos de comutação por falha do WSFC.
Usar uma imagem premium do SQL Server com o SQL Server 2019 pré-instalado.
Para fornecer um voto de desempate e alcançar um quórum para o cenário de comutação por falha, implementa uma terceira VM que funciona como um teste de partilha de ficheiros.
- Regresse à sua sessão do Cloud Shell existente.
Crie um script especializado para os nós do WSFC. O script instala a funcionalidade do Windows necessária e cria regras de firewall para o WSFC e o SQL Server:
cat << "EOF" > specialize-node.ps1 $ErrorActionPreference = "stop" # Install required Windows features Install-WindowsFeature Failover-Clustering -IncludeManagementTools Install-WindowsFeature RSAT-AD-PowerShell # Open firewall for WSFC netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59997 # Open firewall for SQL Server netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433 EOF
Crie as instâncias de VM. Nas duas VMs que funcionam como nós S2D e WSFC, anexe discos de dados adicionais e ative o modo WSFC definindo a chave de metadados
enable-wsfc
comotrue
:REGION=$(gcloud config get-value compute/region) PD_SIZE=50 MACHINE_TYPE=n2-standard-8 gcloud compute instances create node-1 \ --zone $REGION-a \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --boot-disk-device-name "node-1" \ --create-disk=name=node-1-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-1-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create node-2 \ --zone $REGION-b \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --boot-disk-device-name "node-2" \ --create-disk=name=node-2-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --create-disk=name=node-2-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create "witness" \ --zone $REGION-c \ --machine-type n2-standard-2 \ --subnet $SUBNET_NAME \ --image-family=windows-2022 \ --image-project=windows-cloud \ --tags wsfc \ --boot-disk-size 50 \ --boot-disk-type pd-ssd \ --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
Para associar as 3 instâncias de VM ao Active Directory, faça o seguinte para cada uma das 3 instâncias de VM:
Monitorize o processo de inicialização da VM vendo a respetiva saída da porta de série:
gcloud compute instances tail-serial-port-output
NAME
Substitua
NAME
pelo nome da instância de VM.Aguarde alguns minutos até ver o resultado
Instance setup finished
e, em seguida, prima Ctrl+C. Neste momento, a instância de VM está pronta a ser usada.Crie um nome de utilizador e uma palavra-passe para a instância de VM
Estabeleça ligação à VM através do Ambiente de Trabalho Remoto e inicie sessão com o nome de utilizador e a palavra-passe criados no passo anterior.
Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
Clique em Sim para confirmar o pedido de elevação.
Associe o computador ao seu domínio do Active Directory e reinicie:
Add-Computer -Domain
DOMAIN -Restart
Substitua
DOMAIN
pelo nome DNS do seu domínio do Active Directory.Aguarde aproximadamente 1 minuto para que o reinício seja concluído.
Reserve endereços IP do cluster
Agora, reserva dois endereços IP estáticos na sua rede VPC. As duas moradas têm finalidades diferentes:
- IP do equilibrador de carga: este endereço IP é usado pelos clientes para estabelecer ligação ao SQL Server.
- IP do cluster: este endereço IP é usado apenas internamente pelo WSFC.
Para reservar os endereços IP estáticos, faça o seguinte:
Reserve um IP estático para o equilibrador de carga interno e capture o endereço numa nova variável de ambiente denominada
LOADBALANCER_ADDRESS
:gcloud compute addresses create wsfc \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \ --region $(gcloud config get-value compute/region) \ --format=value\(address\)) && \ echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
Tome nota do endereço IP, pois vai precisar dele mais tarde.
Reserve outro endereço IP estático que usa como IP do cluster:
gcloud compute addresses create wsfc-cluster \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/region) && \ CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \ --region $(gcloud config get-value compute/region) \ --format=value\(address\)) && \ echo "Cluster IP: $CLUSTER_ADDRESS"
Tome nota do endereço IP, pois vai precisar dele mais tarde.
O projeto e a VPC estão agora prontos para a implementação do WSFC e do SQL Server.
Crie uma partilha de ficheiros de testemunho
Para preparar witness
para funcionar como testemunha de partilha de ficheiros, crie uma partilha de ficheiros e conceda-se a si próprio e aos dois nós do WSFC acesso à partilha de ficheiros:
- Ligue-se a
witness
através do Ambiente de Trabalho Remoto. Inicie sessão com a sua conta de utilizador do domínio. - Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
- Clique em Sim para confirmar o pedido de elevação.
Crie a pasta de testemunho e partilhe-a:
New-Item "C:\QWitness" -Type directory icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)' icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)' New-SmbShare ` -Name QWitness ` -Path "C:\QWitness" ` -Description "SQL File Share Witness" ` -FullAccess $env:username,node-1$,node-2$
Implementar o cluster de comutação por falha
Agora, usa as instâncias de VM para implementar um WSFC e o SQL Server.
Implemente o WSFC
Já tem tudo pronto para criar o cluster de failover:
- Ligue-se a
node-1
através do Ambiente de Trabalho Remoto. Inicie sessão com a sua conta de utilizador do domínio. - Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
- Clique em Sim para confirmar o pedido de elevação.
Crie um novo cluster:
New-Cluster ` -Name windows-fci ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_ADDRESS
Substitua
CLUSTER_ADDRESS
pelo endereço IP do cluster que criou anteriormente.O comando cria uma conta de computador
windows-fci
no seu domínio do Active Directory.Regresse à sessão do PowerShell em
witness
e conceda à conta do computador a autorizaçãowindows-fci
para aceder à partilha de ficheiros:icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'windows-fci$' ` -AccessRight Full ` -Force
Regresse à sessão do PowerShell em
node-1
e configure o cluster para usar a partilha de ficheiros emwitness
como um quorum de cluster:Set-ClusterQuorum -FileShareWitness \\witness\QWitness
Verifique se o cluster foi criado com êxito:
Test-Cluster
Pode ver alguns avisos que podem ser ignorados com segurança:
WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings.. WARNING: Network - Validate Network Communication: The test reported some warnings.. WARNING: Test Result: HadUnselectedTests, ClusterConditionallyApproved Testing has completed for the tests you selected. You should review the warnings in the Report. A cluster solution is supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
Também pode iniciar o snap-in MMC do Gestor de clusters de failover para rever o estado do cluster executando
cluadmin.msc
.Se estiver a usar o AD gerido, adicione a conta do computador usada pelo WSFC ao grupo Contas de associação ao domínio do serviço na nuvem para que possa associar computadores ao domínio:
Install-WindowsFeature RSAT-ADDS Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members windows-fci$
Ativar o Storage Spaces Direct
Agora, ativa o S2D e cria um volume partilhado do cluster que combina os três discos persistentes que criou anteriormente:
- Regresse à sessão do PowerShell em
node-1
. Ativar S2D:
Enable-ClusterStorageSpacesDirect
Opcionalmente, se quiser um melhor desempenho do disco, pode adicionar SSDs locais aos nós S2D, além dos discos persistentes SSD padrão. Os SSDs locais podem servir como a camada de colocação em cache do S2D. Faça com que o número de unidades de capacidade (no nosso caso, discos persistentes SSD) seja um múltiplo do número de SSDs locais. Em alternativa, execute o seguinte comando para ativar o S2D com o armazenamento em cache:
Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
Aceite a predefinição quando lhe for pedido que confirme. Pode ver alguns avisos que podem ser ignorados com segurança:
WARNING: 2021/04/08-13:12:26.159 Node node-1: No disks found to be used for cache WARNING: 2021/04/08-13:12:26.159 Node node-2: No disks found to be used for cache
Opcionalmente, defina a cache na memória do volume partilhado de cluster (CSV) para 2048 MB para um melhor débito de leitura:
(Get-Cluster).BlockCacheSize = 2048
Crie um novo volume que use as versões de volume partilhado do cluster do ReFS e um tamanho do cluster de 64 KB:
New-Volume ` -StoragePoolFriendlyName S2D* ` -FriendlyName FciVolume ` -FileSystem CSVFS_ReFS ` -UseMaximumSize ` -AllocationUnitSize 65536
Testar a comutação por falha do conjunto de armazenamento
Opcionalmente, pode testar se a comutação por falha do conjunto de armazenamento funciona corretamente:
- Ligue-se a
node-2
através do Ambiente de Trabalho Remoto. Inicie sessão com a sua conta de utilizador do domínio. - Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e selecione Executar
- Introduza
cluadmin.msc
e selecione OK. No painel de navegação do lado esquerdo, navegue para Gestor de clusters de failover > windows-fci > Armazenamento > Pools.
Deve ver um conjunto denominado Cluster Pool 1 com o nó proprietário definido como
node-1
.Regresse ao Cloud Shell e reponha a VM
node-1
para simular uma comutação por falha:gcloud compute instances reset node-1 --zone $REGION-a
Regresse ao Gestor de clusters de comutação por falha em
node-2
.Observe o estado do conjunto de armazenamento premindo repetidamente F5 para atualizar a vista.
Após cerca de 30 segundos, o nó proprietário deve mudar automaticamente para
node-2
.
Remova a instalação predefinida do SQL Server
Agora, remova a instalação predefinida do SQL Server dos dois nós e substitua-a por uma nova configuração de FCI.
Para cada um dos dois nós do WSFC, node-1
e node-2
, siga estes passos:
- Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
- Clique em Sim para confirmar o pedido de elevação.
Remova a instância predefinida do SQL Server:
C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
Remova o controlador OLE da Microsoft:
Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
Remova o controlador ODBC da Microsoft:
Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
Reinicie o computador:
Restart-Computer
Aguarde aproximadamente 1 minuto para que o reinício seja concluído.
Instale o FCI do SQL Server
Antes de instalar a nova configuração de FCI, verifique se o node-1
é o nó ativo no cluster:
- Volte a ligar-se ao
node-1
usando o ambiente de trabalho remoto e inicie sessão com o utilizador do seu domínio. - Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e selecione Executar
- Introduza
cluadmin.msc
e selecione OK. No painel da janela do lado esquerdo, navegue para Gestor de clusters de failover > windows-fci.
Verifique se o servidor anfitrião atual está definido como
node-1
.Se o servidor anfitrião atual estiver definido como
node-2
, clique com o botão direito do rato em windows-fci no painel da janela do lado esquerdo e selecione Mais ações > Mover recursos do cluster principal > Selecionar nó… > node-1 e clique em OK.No painel da janela do lado esquerdo, navegue para Failover Cluster Manager > windows-fci > Storage > Pools.
Verifique se o nó proprietário de Cluster Pool 1 está definido como
node-1
.Se o nó proprietário estiver definido como
node-2
, clique com o botão direito do rato no conjunto, selecione Mover > Selecionar nó > node-1 e clique em OK.
Agora, cria uma nova instalação do cluster de failover do SQL Server em node-1
:
- Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
- Clique em Sim para confirmar o pedido de elevação.
Crie uma conta de utilizador do domínio para o SQL Server e o agente SQL e atribua uma palavra-passe:
Active Directory
$Credential = Get-Credential -UserName sql_server -Message 'Enter password' New-ADUser ` -Name "sql_server" ` -Description "SQL Agent and SQL Admin account." ` -AccountPassword $Credential.Password ` -Enabled $true -PasswordNeverExpires $true
Microsoft AD gerido
$Credential = Get-Credential -UserName sql_server -Message 'Enter password' New-ADUser ` -Name "sql_server" ` -Description "SQL Agent and SQL Admin account." ` -AccountPassword $Credential.Password ` -Enabled $true -PasswordNeverExpires $true ` -Path "OU=Cloud,DOMAIN"
Substitua
DOMAIN
pelo nome distinto do seu domínio, por exemplo,DC=example,DC=org
.Inicie a configuração do SQL Server:
& c:\sql_server_install\setup.exe
No menu do lado esquerdo, selecione Instalação.
Selecione Nova instalação do cluster de comutação por falha do SQL Server
Na página Microsoft Update, selecione Seguinte para iniciar a instalação.
Na página Instalar regras de cluster de failover, é apresentado um aviso Avisos de validação de cluster do MSCS e Firewall do Windows. Pode ignorar estes avisos e selecionar Seguinte.
Na página Chave do produto, mantenha as predefinições e selecione Seguinte.
Na página Termos de licença, reveja os termos e, se os aceitar, selecione Seguinte.
Na página Seleção de funcionalidades, selecione Serviços do motor de base de dados e, de seguida, selecione Seguinte.
Na página Configuração da instância, introduza
sql
para o nome da rede e a instância com nome, e selecione Seguinte.Na página Grupo de recursos do cluster, mantenha as predefinições e selecione Seguinte.
Na página Seleção de discos do cluster, ative Disco virtual do cluster (FciVolume) e desative todos os outros discos. Selecione Seguinte.
Na página Configuração da rede de clusters, configure as seguintes definições e, em seguida, selecione Seguinte:
- DHCP: clear
- Endereço IP: introduza o endereço IP do balanceador de carga interno.
Na página Configuração do servidor, configure as seguintes definições para o SQL Server Agent e o SQL Server Database Engine:
- Nome da conta:
DOMAIN\sql_server
, ondeDOMAIN
é o nome NetBIOS do seu domínio do Active Directory - Palavra-passe: introduza a palavra-passe que criou anteriormente
- Nome da conta:
Selecione o separador Ordenação e selecione a ordenação que quer usar. Em seguida, clique em Seguinte.
Na página Configuração do motor de base de dados, selecione Adicionar utilizador atual para designar o utilizador atual como administrador do SQL Server. Em seguida, selecione Seguinte.
Na página Pronto para instalar, reveja as definições e, de seguida, selecione Instalar.
Após a conclusão da instalação, selecione Fechar.
O seu domínio do Active Directory contém agora uma conta de computador sql
que representa a instância do SQL Server e uma entrada DNS correspondente que aponta para o endereço IP do equilibrador de carga interno.
Agora, adicione node-2
ao cluster de comutação por falha do SQL Server:
- Estabeleça ligação a
node-2
através do Ambiente de Trabalho Remoto e inicie sessão com o utilizador do seu domínio. - Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
- Clique em Sim para confirmar o pedido de elevação.
Inicie a configuração do SQL Server:
& c:\sql_server_install\setup.exe
No menu do lado esquerdo, selecione Instalação.
Selecione Adicionar nó a um cluster de failover do SQL Server.
Siga as instruções do assistente de instalação e aceite as definições predefinidas até aceder à página Contas de serviço.
Na página Contas de serviço, introduza a palavra-passe que criou anteriormente para o SQL Server Agent e o SQL Server Database Engine. Em seguida, selecione Seguinte.
Na página Pronto para instalar, reveja as definições e, de seguida, selecione Instalar.
Após a conclusão da instalação, selecione Fechar.
Configure verificações de funcionamento
Como passo final, configure o cluster para expor um ponto final de verificação do estado que pode ser usado por um equilibrador de carga interno:
- Regresse à sessão do PowerShell em
node-2
Inicialize uma variável com o endereço IP do balanceador de carga.
$LoadBalancerIP = '
IP_ADDRESS
'Substitua
IP_ADDRESS
pelo endereço IP do endereçowsfc
que reservou anteriormente.Configure o cluster de comutação por falha para responder ao serviço de verificação de funcionamento:
$SqlGroup = Get-ClusterGroup | Where-Object {$_.Name.StartsWith("SQL Server")} $SqlIpAddress = Get-ClusterResource | Where-Object {$_.Name.StartsWith("SQL IP Address")} $SqlIpAddress | Set-ClusterParameter -Multiple @{ 'Address'=$LoadBalancerIP; 'ProbePort'= 59997; 'SubnetMask'='255.255.255.255'; 'Network'= (Get-ClusterNetwork).Name; 'EnableDhcp'=0; }
Reinicie o recurso de cluster:
$SqlIpAddress | Stop-ClusterResource $SqlIpAddress | Start-ClusterResource
Reinicie o grupo de clusters:
$SqlGroup | Stop-ClusterGroup $SqlGroup | Start-ClusterGroup
Crie um balanceador de carga interno
Para fornecer um único ponto final para clientes do SQL Server, agora implementa um equilibrador de carga interno. O balanceador de carga usa uma verificação do estado que garante que o tráfego é direcionado para o nó ativo do WSFC.
- Regresse à sua sessão do Cloud Shell existente.
Crie dois grupos de instâncias não geridos, um por zona, e adicione os dois nós aos grupos:
gcloud compute instance-groups unmanaged create wsfc-group-1 --zone $REGION-a gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \ --instances node-1 gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \ --instances node-2
Crie uma verificação de funcionamento que o balanceador de carga possa usar para determinar qual é o nó ativo.
gcloud compute health-checks create tcp wsfc-healthcheck \ --check-interval="2s" \ --healthy-threshold=1 \ --unhealthy-threshold=2 \ --port=59997 \ --timeout="1s"
As sondas de verificação do estado de funcionamento usam a porta
59997
, que configurou anteriormente comoProbePort
para o recurso de endereço IP do SQL Server.Crie um serviço de back-end e adicione os dois grupos de instâncias:
gcloud compute backend-services create wsfc-backend \ --load-balancing-scheme internal \ --region $(gcloud config get-value compute/region) \ --health-checks wsfc-healthcheck \ --protocol tcp gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-1 \ --instance-group-zone $REGION-a \ --region $REGION gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-2 \ --instance-group-zone $REGION-b \ --region $REGION
Crie o balanceador de carga interno:
gcloud compute forwarding-rules create wsfc-sql \ --load-balancing-scheme internal \ --address $LOADBALANCER_ADDRESS \ --ports 1433 \ --network $VPC_NAME \ --subnet $SUBNET_NAME \ --region $REGION \ --backend-service wsfc-backend
Testar o cluster de comutação por falha
Concluiu a instalação do cluster de ativação pós-falha, mas ainda tem de testar se o cluster funciona corretamente.
Prepare um cliente
Crie uma nova instância de VM que pode usar para se ligar ao cluster de failover:
- Regresse à sua sessão do Cloud Shell existente.
Criar uma nova instância de VM:
gcloud compute instances create sqlclient \ --zone $REGION-a \ --machine-type n2-standard-2 \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --boot-disk-size 50 \ --boot-disk-type pd-ssd
Monitorize o processo de inicialização da VM vendo a respetiva saída da porta de série:
gcloud compute instances tail-serial-port-output sqlclient
Aguarde alguns minutos até ver o resultado
Instance setup finished
e, em seguida, prima Ctrl+C. Neste momento, a instância de VM está pronta a ser usada.Crie um nome de utilizador e uma palavra-passe para a instância de VM
Estabeleça ligação à VM através do Ambiente de Trabalho Remoto e inicie sessão com o nome de utilizador e a palavra-passe criados no passo anterior.
Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
Clique em Sim para confirmar o pedido de elevação.
Associe o computador ao seu domínio do Active Directory:
Add-Computer -Domain
DOMAIN
Substitua
DOMAIN
pelo nome DNS do seu domínio do Active Directory.Reinicie o computador:
Restart-Computer
Aguarde aproximadamente 1 minuto para que o reinício seja concluído.
Execute o teste
Use a VM sqlclient
para testar se consegue estabelecer ligação ao cluster de comutação por falha e
para verificar se a comutação por falha funciona corretamente:
- Estabeleça ligação a
sqlclient
através do Ambiente de Trabalho Remoto e inicie sessão com o utilizador do seu domínio. - Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell.
Ligue-se ao cluster do SQL Server através de TCP/IP e do nome DNS
sql
e consulte a tabeladm_os_cluster_nodes
:& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
O resultado deve ter o seguinte aspeto:
NodeName status status_description is_current_owner ------------------------------ ----------- ------------------ ---------------- NODE-1 0 up 1 NODE-2 0 up 0 (2 rows affected)
Tenha em atenção que
node-1
é o proprietário atual do recurso de cluster de comutação por falha do SQL Server.Regresse ao Cloud Shell e desative a VM node-1 para testar o cenário de comutação por falha.
gcloud compute instances stop node-1 --zone $REGION-a
Repetir a consulta:
& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
O resultado deve ter agora o seguinte aspeto:
NodeName status status_description is_current_owner ------------------------------ ----------- ------------------ ---------------- NODE-1 1 down 0 NODE-2 0 up 1 (2 rows affected)
Repare que, apesar da perda de
node-1
, a consulta é bem-sucedida e mostra quenode-2
é agora o proprietário atual do cluster de comutação por falha.
Limitações
- O S2D só é suportado para o Windows Server 2016 e superior.
- Com o S2D, cada disco contém apenas uma vista parcial dos dados gerais. Por isso, não basta tirar uma captura de um disco persistente para fazer uma cópia de segurança dos seus dados. Em alternativa, use a cópia de segurança SQL nativa.
Limpar
Depois de concluir o tutorial, pode limpar os recursos que criou para que deixem de usar a quota e incorrer em custos. As secções seguintes descrevem como eliminar ou desativar estes recursos.
Eliminar o projeto
A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.
Para eliminar o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.