As instâncias de cluster de comutação por falha do Microsoft SQL Server (FCI) são uma única instância do SQL Server implementada em vários nós do cluster de comutação por falha do Windows Server (WSFC). Em qualquer altura, 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 2022 e usar a elevada disponibilidade equilibrada do Hyperdisk no modo de vários escritores como armazenamento partilhado regional (multizonal).
- Balanceador de carga interno (consulte o artigo Executar clustering de comutação por falência do Windows Server)
- Nome da rede distribuída (DNN) (consulte o artigo Configure um DNN para uma instância de cluster de comutação por falha)
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.
- Configure um balanceador de carga ou um nome de rede distribuído (DNN) para encaminhar o tráfego para o seu grupo de disponibilidade com o SQL Server.
- Verifique se o cluster está a funcionar simulando uma comutação por falha.
Custos
Este tutorial usa componentes faturáveis do Google Cloud, incluindo:
- Compute Engine
- Cloud Load Balancing (não necessário com uma configuração de DNN)
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.
Certifique-se de que reviu as limitações dos volumes do Hyperdisk no modo de vários escritores e escolheu uma região onde a alta disponibilidade do Hyperdisk Balanced está disponível
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.
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 estado dos intervalos de IP dos Google Cloud testadores: (não é necessário com uma configuração de DNN)
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 ter:
- Windows Server Failover Clustering e SQL Server instalados.
- Suporte do WSFC do Compute Engine ativado.
Usar uma imagem premium do SQL Server com o SQL Server 2022 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 controlador de domínio e 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 e ative o agente de clustering de failover do Windows Server nos nós do WSFC definindo a chave de metadados
enable-wsfc
comotrue
:MACHINE_TYPE=c3-standard-8 REGION=$(gcloud config get-value compute/region) ZONE_1=$REGION-a ZONE_2=$REGION-b gcloud compute instances create node-1 \ --zone $ZONE_1 \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2022-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type hyperdisk-balanced \ --boot-disk-device-name node-1 \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create node-2 \ --zone $ZONE_2 \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-2022-win-2022 \ --image-project windows-sql-cloud \ --tags wsfc,wsfc-node \ --boot-disk-size 50 \ --boot-disk-type hyperdisk-balanced \ --boot-disk-device-name node-2 \ --metadata enable-wsfc=true \ --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1 gcloud compute instances create witness \ --machine-type n4-standard-2 \ --subnet $SUBNET_NAME \ --image-family=windows-2022 \ --image-project=windows-cloud \ --tags wsfc \ --boot-disk-size 50 \ --boot-disk-type hyperdisk-balanced \ --zone $ZONE_1 \ --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 cerca de 3 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.
Crie discos Hyperdisk Balanced de alta disponibilidade no modo de gravação múltipla
Agora, cria um disco de alta disponibilidade equilibrado do Hyperdisk no modo de gravação múltipla e anexa-o a ambos os nós do WSFC. Uma das vantagens do Hyperdisk é a capacidade de definir IOPS e débito para corresponder às necessidades da aplicação. Para mais informações, consulte o artigo Acerca da elevada disponibilidade equilibrada do Hyperdisk.
- Regresse à sua sessão do Cloud Shell existente.
Crie um disco de alta disponibilidade equilibrado do Hyperdisk:
SIZE=200 gcloud compute disks create multiwriter-datadisk-1 \ --size $SIZE \ --provisioned-throughput 200 \ --provisioned-iops 5000 \ --access-mode READ_WRITE_MANY \ --type hyperdisk-balanced-high-availability \ --replica-zones $ZONE_1,$ZONE_2
Anexe o disco a
node-1
:gcloud compute instances attach-disk node-1 \ --disk multiwriter-datadisk-1 \ --zone $ZONE_1 \ --disk-scope=regional
Anexe o disco a
node-2
:gcloud compute instances attach-disk node-2 \ --disk multiwriter-datadisk-1 \ --zone $ZONE_2 \ --disk-scope=regional
Reserve endereços IP do cluster
Agora, reserva dois endereços IP estáticos na sua VPC. Um endereço IP é usado como o endereço IP do cluster WSFC e o outro é usado pelo equilibrador de carga interno.
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 \ --region $REGION \ --subnet $SUBNET_NAME LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \ --region $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: (não é necessário com uma configuração de DNN)
gcloud compute addresses create wsfc-cluster \ --subnet $SUBNET_NAME \ --region $REGION && \ CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \ --region $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 New-SmbShare ` -Name QWitness ` -Path 'C:\QWitness' ` -Description 'SQL File Share Witness' ` -FullAccess $env:username,node-1$,node-2$ Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-1$' -AccessRight Full -Force Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-2$' -AccessRight Full -Force
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:
- Para a configuração do balanceador de carga
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_ADDRESS
Substitua
CLUSTER_ADDRESS
pelo endereço IP do cluster que criou anteriormente.- Para a configuração de DNN
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -ManagementPointNetworkType Distributed
Regresse à sessão do PowerShell em
witness
e conceda ao objeto de computador virtual do cluster autorização para aceder à partilha de ficheiros:icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'sql-cluster$' ` -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:
Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members sql-cluster$
Adicione um disco de cluster
Agora, inicialize o disco Hyperdisk Balanced de alta disponibilidade partilhado que criou anteriormente e adicione-o ao cluster:
- Regresse à sessão do PowerShell em
node-1
. Inicialize o disco de alta disponibilidade equilibrado do Hyperdisk:
$NodeName = [System.Net.Dns]::GetHostName() $ClusterDisks = Get-PhysicalDisk -CanPool $True | Where-Object { ($_ | Get-PhysicalDiskStorageNodeView | Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') } Initialize-Disk -Number $ClusterDisks[0].DeviceId
No disco, crie uma nova partição que use o sistema de ficheiros NTFS e formate o disco com um tamanho de bloco de 64 KB:
New-Partition -DiskNumber $ClusterDisks[0].DeviceId ` -UseMaximumSize -DriveLetter D | Format-Volume ` -FileSystem NTFS -newfilesystemlabel DataDisk -AllocationUnitSize 65536
Adicione o disco ao cluster:
Get-ClusterAvailableDisk | Add-ClusterDisk
O disco é apresentado automaticamente no
node-2
, uma vez que o disco subjacente Hyperdisk Balanced de alta disponibilidade está associado a ambas as instâncias de VM.Abra o snap-in MMC Failover Cluster Manager:
cluadmin.msc
Testar a comutação por falha do disco
Opcionalmente, pode testar se a comutação em caso de falha do disco 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 esquerdo, navegue para Gestor de clusters de failover > sql-cluster > Armazenamento > Discos.
Deve ver um disco denominado Cluster Disk 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
Regresse ao Gestor de clusters de comutação por falha em
node-2
.Observe o estado do disco 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
através do Ambiente de Trabalho Remoto e inicie sessão com o 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 da janela do lado esquerdo, navegue para Failover Cluster Manager > sql-cluster.
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 sql-cluster 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 > sql-cluster > Storage > Disks.
Verifique se o nó proprietário de Cluster Disk 1 está definido como
node-1
.Se o nó proprietário estiver definido como
node-2
, clique em Mover armazenamento disponível > Selecionar nó... > node-1 no menu Ações do lado direito 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:
$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
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 Edição, selecione Só tenho uma licença do SQL Server e selecione Seguinte.
Na página Termos de licença, reveja os termos e, se os aceitar, selecione Seguinte.
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 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
como nome da rede e selecione Seguinte.Na página Grupo de recursos do cluster, mantenha as predefinições e selecione Seguinte.
Na página Cluster Disk Selection, selecione Cluster Disk 1 e, de seguida, Next.
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.
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 um grupo de instâncias não gerido e adicione os dois nós ao grupo:
gcloud compute instance-groups unmanaged create wsfc-group-1 \ --zone $ZONE_1 gcloud compute instance-groups unmanaged add-instances wsfc-group-1 \ --zone $ZONE_1 \ --instances node-1 gcloud compute instance-groups unmanaged create wsfc-group-2 \ --zone $ZONE_2 gcloud compute instance-groups unmanaged add-instances wsfc-group-2 \ --zone $ZONE_2 \ --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"
A porta de sondas de verificação do estado de funcionamento é a
59997
, que é a porta que configurou anteriormente comoProbePort
para o endereço IP do cluster WSFC.Crie um serviço de back-end e adicione o grupo de instâncias:
gcloud compute backend-services create wsfc-backend \ --load-balancing-scheme internal \ --region $REGION \ --health-checks wsfc-healthcheck \ --protocol tcp gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-1 \ --instance-group-zone $ZONE_1 \ --region $REGION gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group-2 \ --instance-group-zone $ZONE_2 \ --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
Configure um recurso de DNN e um nome DNS de DNN
Semelhante ao balanceador de carga interno, o recurso DNN atua como um único gateway para clientes do SQL Server. Durante as comutações por falha, o cluster encaminha o tráfego de forma integrada para o nó FCI do SQL Server ativo. Os clientes estabelecem ligação ao FCI do SQL Server com o nome DNS.
- Regresse à sessão do PowerShell em
node-1
. Execute o script para criar o recurso de RND
$DNNResourceName='fci-dnn' $DNN_DNSName='fcidnn' # create the DNN resource Add-ClusterResource -Name $DNNResourceName -ResourceType 'Distributed Network Name' -Group 'SQL Server (MSSQLSERVER)' # set the DNS name of the DNN resource Get-ClusterResource -Name $DNNResourceName | Set-ClusterParameter -Name DnsName -Value $DNN_DNSName # start the DNN resource Start-ClusterResource -Name $DNNResourceName
Reinicie o
node-1
e onode-2
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 \ --machine-type n2-standard-2 \ --subnet $SUBNET_NAME \ --image-family sql-ent-2022-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 cerca de 3 minutos até ver o resultado Instance setup finished e, de 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.
Estabeleça ligação ao cluster do SQL Server através do respetivo nome de rede
sql
e consulte a tabeladm_os_cluster_nodes
:& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S
SQL_SERVER_NAME
-E -Q "SELECT * FROM sys.dm_os_cluster_nodes"Substitua
SQL_SERVER_NAME
pelosql
para a configuração do balanceador de carga oufcidnn
para a configuração da DNN.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
Repetir a consulta:
& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S
SQL_SERVER_NAME
-E -Q "SELECT * FROM sys.dm_os_cluster_nodes"Substitua
SQL_SERVER_NAME
pelosql
para a configuração do balanceador de carga oufcidnn
para a configuração da DNN.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.
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.
O que se segue?
- Leia mais sobre a partilha de discos no modo de vários autores.
- Saiba como pode configurar uma instância de cluster de comutação por falha do SQL Server que usa o Storage Spaces Direct.