Configurando um Hyper-V Server para um Cluster de Alta Disponibilidade (Failover)

Na nossa série de posts sobre o Hyper-V e como configurar um Cluster de Alta disponibilidade já ensinamos como instalar o Microsoft Hyper-V Server, como instalar o FreeNAS para criar um servidor de armazenamento e como configurar o FreeNAS para disponibilizar o armazenamento para o Cluster. Agora vamos ensinar como Configurar o Hyper-V server 2019 para um Cluster de Alta Disponibilidade (Failover)

Já vou começar com o Disclaimer que tudo que vamos fazer aqui é feito pela linha de comando, o Hyper-V Server não possui interface gráfica, por esse motivo é bom já se acostumar com o Powershell. Nesse tutorial a maior parte dos comandos vão ser executados remotamente usando o Powershell remoto, mas algumas coisas terão que ser feitas no console do servidor pois ou você vai estar sem conectividade de rede ou alguma caixa adicional é aberta no console então é preciso estar local na maquina.

Chega de lenga lenga e vamos ao tutorial.

Adicionando o Servidor ao Domínio Active Diretory

O primeiro passo é adicionar o Hyper-V Server ao Domínio Active Diretory. Não isso não é obrigatório para ter um servidor Hyper-V em Cluster mas sem isso um dos melhores recursos do Cluster Hyper-V de Alta Disponibilidade (Failover) é perdida, as migrações ao vivo, ou “Live Migration”. Esse recurso permite que uma maquina virtual rodando em um Host seja migrada ao vivo, sem desligar o sistema operacional convidado, com isso temos 0% de Downtime.

Adicionar um Hyper-V Server ao Domínio Active Directory é bem simples, você precisa logar no console do servidor com o usuário Administrador local e seguir o passo a passo abaixo:

No console do Hyper-V Server 2019 escolha a opção 1: “Domínio/Grupo de Trabalho”
Depois disso escolha a opção “D” para domínio, em seguida digite do FQDN do seu Domínio e o usuário Administrador do Domínio com permissão para adicionar computadores ao Domínio. O nome do usuário deve seguir o padrão DOMÍNIO\usuario
Digite a senha do administrador

Depois de digitar a senha o assistente vai perguntar se deseja mudar o nome do Servidor antes de ingressar no Domínio, caso queira diga que sim e coloque o nome do servidor. Após isso reinicie o Hyper-V Server e pronto, ele já está no Domínio.

Habilitando o PowerShell Remoto

Uma das grandes vantagens do PowerShell é que ele pode ser executado remotamente, com isso não existe a necessidade de se conectar fisicamente ao console de um servidor. Por padrão o Hyper-V Server 2019 já vem habilitado para o gerenciamento remoto, mas caso você tenha problemas de conexão com o PowerShell não custa nada passar apenas um comando para habilitar a execução de scripts remotos:

Enable-PSRemoting

Conectando remotamente ao Hyper-V Server via PowerShell

Conectar ao Hyper-V Server 2019 remotamente via PowerShell é bem simples, basta digitar o comando abaixo no PowerShell da sua maquina com Windows 10.

Enter-PSSession -ComputerName svr01 -Credential vnext\administrador

Configurando a Rede via PowerShell

Bom, agora que estamos conectados remotamente vamos configurar a rede do nosso Hyper-V Server 2019. Lembrando que vamos usar a topologia criada no nosso post Planejando um Cluster de Alta Disponibilidade (Failover) Hyper-V.

Nesse post colocamos que vamos criar basicamente 5 interfaces de rede para nosso Servidor Hyper-V de acordo com o seguinte esquema:

  • Gerenciamento: 192.168.1.1/24
  • Live Migration: 192.168.10.1/24
  • CSV: 192.168.20.1/24
  • iSCSI 1: 192.168.30.1/24
  • iSCSI 2: 192.168.40.1/24

Para o cenário ideal o seu servidor deveria ter pelo menos 5 interfaces de rede de 1 Gbps, não uma para cada rede logica, vamos usar o NIC Teaming para resolver a parte lógica, mas para aumentar o Throughput da rede. Mas se você não puder ter essa quantidade o minimo que eu recomento é de 3 interfaces de 1 Gbps, 2 dedicadas ao iSCSI e 1 para todas as outras redes. Mas como toda regra tem excessão. Se seu servidor tiver apenas 1 interface de 10 Gbps não acredito ser necessário mais nenhuma interface, visto que 10 Gbps é a mesma coisa que 10 interfaces de 1 Gbps, nesse caso basta dar uma adaptada nesse tutorial e fazer que as interfaces iSCSI também façam parte do NIC Teaming.

Bom, a parte inicial da configuração da rede é feita remotamente, visto que você tem acesso remoto ainda a rede do seu servidor. Para configurar basta seguir os comandos abaixo:

#Renomear Adaptadores
Get-NetAdapter -Name 'Ethernet' | Rename-NetAdapter -NewName 'eth1'
Get-NetAdapter -Name 'Ethernet 2' | Rename-NetAdapter -NewName 'eth2'
Get-NetAdapter -Name 'Ethernet 3' | Rename-NetAdapter -NewName 'eth3'
Get-NetAdapter -Name 'Ethernet 4' | Rename-NetAdapter -NewName 'eth4'
Get-NetAdapter -Name 'Ethernet 5' | Rename-NetAdapter -NewName 'iSCSI 1'
Get-NetAdapter -Name 'Ethernet 6' | Rename-NetAdapter -NewName 'iSCSI 2'

#Cria NIC Team
New-NetLbfoTeam -Name Team01 -TeamMembers eth1,eth2,eth3,eth4 -LoadBalancingAlgorithm Dynamic -TeamingMode SwitchIndependent

Após Configurar o NIC Team você vai perder acesso ao servidor, pois o mesmo vai atrelar os adaptadores de rede no time sem nenhuma interface virtual criada, consequentemente, sem IP. Agora você volta para o console do servidor e configura o resto da rede

#Cria o Switch Virtual
New-VMSwitch -Name switch01 -NetAdapterName Team01 -AllowManagementOS $False -MinimumBandwidthMode Weight
Set-VMSwitch "switch01" -DefaultFlowMinimumBandwidthWeight 3.

#Cria os adaptadores de rede virtuais
Add-VMNetworkAdapter -ManagementOS -Name "Gerenciamento" -SwitchName "switch01"
Add-VMNetworkAdapter -ManagementOS -Name "Live Migration" -SwitchName "switch01"
Add-VMNetworkAdapter -ManagementOS -Name "CSV" -SwitchName "switch01"

#Renomear Adaptadores
Get-NetAdapter -Name 'vEthernet (Gerenciamento)' | Rename-NetAdapter -NewName 'Gerenciamento'
Get-NetAdapter -Name 'vEthernet (Live Migration)' | Rename-NetAdapter -NewName 'Live Migration'
Get-NetAdapter -Name 'vEthernet (CSV)' | Rename-NetAdapter -NewName 'CSV'

#Atribui os adaptadores as VLANS
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Gerenciamento" -Untaged
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "CSV" -Access -VlanId 100
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Live Migration" -Access -VlanId 200


#Configura o peso dos adaptadores
Set-VMNetworkAdapter -ManagementOS -Name "Live Migration" -MinimumBandwidthWeight 20
Set-VMNetworkAdapter -ManagementOS -Name "CSV" -MinimumBandwidthWeight 10
Set-VMNetworkAdapter -ManagementOS -Name "Gerenciamento" -MinimumBandwidthWeight 10

#Configura IP Interface de Gerenciamento
New-NetIPAddress -InterfaceAlias "Gerenciamento" -IPAddress 192.168.1.210 -PrefixLength "24" -DefaultGateway 192.168.1.1
Set-DnsClientServerAddress -InterfaceAlias "Gerenciamento" -ServerAddresses 192.168.1.203, 192.168.0.202

No meu exemplo estou usando o IP final 210 para o meu primeiro servidor Hyper-V, mas você pode colocar qualquer IP disponível na sua rede. No meu caso também o Gateway é o IP final 1 e os DNS final 203 e 202, mude esses dados de acordo com a sua rede.

Apos configurado a interface de Gerenciamento, então podemos voltar ao PowerShell Remoto em um computador com Windows 10 e terminar a configuração.

#Configura IP Interfaces Live Migration, CSV 
New-NetIPAddress -InterfaceAlias "Live Migration" -IPAddress 192.168.10.210 -PrefixLength "24"
New-NetIPAddress -InterfaceAlias "CSV" -IPAddress 192.168.20.210 -PrefixLength "24"
Set-DnsClient -InterfaceAlias "Live Migration" -RegisterThisConnectionsAddress $false
Set-DnsClient -InterfaceAlias "CSV" -RegisterThisConnectionsAddress $false

#Configura IP Interfaces SAN 
New-NetIPAddress -InterfaceAlias "iSCSI 1" -IPAddress 192.168.30.210 -PrefixLength "24"
New-NetIPAddress -InterfaceAlias "iSCSI 2" -IPAddress 192.168.40.210 -PrefixLength "24"

#Habilitar Jumbo Frames
Set-NetAdapterAdvancedProperty -Name 'iSCSI 1' -DisplayName 'Jumbo Packet' -Registryvalue 9014
Set-NetAdapterAdvancedProperty -Name 'iSCSI 2' -DisplayName 'Jumbo Packet' -Registryvalue 9014 

#Habilita RDMA
Enable-NetAdapterRDMA

#Desabilitar protocolos de rede
Disable-NetAdapterBinding -InterfaceAlias 'Gerenciamento' -ComponentID ms_tcpip6
Disable-NetAdapterBinding -InterfaceAlias 'CSV' -ComponentID ms_tcpip6
Disable-NetAdapterBinding -InterfaceAlias 'Live Migration' -ComponentID ms_tcpip6
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID ms_tcpip6
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID ms_msclient
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID ms_server
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID ms_implat
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID ms_lltdio
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID ms_rspndr
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID vms_pp
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 1' -ComponentID ms_pacer
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID ms_tcpip6
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID ms_server
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID ms_msclient
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID ms_implat
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID ms_lltdio
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID ms_rspndr
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID vms_pp
Disable-NetAdapterBinding -InterfaceAlias 'iSCSI 2' -ComponentID ms_pacer

Nesse bloco configuramos os IPs para as interfaces de CSV e Live Migration, desabilitamos o DNS nessas interfaces para evitar problemas de conexão por registros incorretos no DNS. Além disso configuramos as interfaces iSCSI, com Jumbo Frames e IPs (também sem DNS). Por ultimo habilitamos o Net RDMA e desabilitamos os protocolos de rede desnecessários em cada interface. No caso da desabilitação dos protocolos, para as interfaces “Gerenciamento”, “CSV” e “Live Migration” é necessário desabilitar apenas o IPv6 se não estiver sendo utilizado na sua rede, já nas interfaces iSCSI desabilitamos todos os protocolos que não o IPv4, pois assim diminuímos o Overhead e o processamento dos pacotes e deixamos apenas o necessário para funcionamento do protocolo iSCSI.

Instalar serviço de Cluster de Failover

Para ser possível conectar nosso servidor Hyper-V a um Cluster de Alta Disponibilidade (Failover) é preciso instalar a função no Hyper-V server, visto que a mesma não vem instalada por padrão. Para isso basta digitar o comando:

Install-WindowsFeature -Name Failover-Clustering

Configurando o iSCSI

O passo final do nosso servidor é configurar o iSCSI. Para que o servidor se conecte no armazenamento compartilhado que configuramos com o FreeNAS. Esses passos devem ser executados no console do servidor pois eles abrem caixas de dialogo adicionais.

Inicialmente temos que instalar o Multipath IO, para isso conectamos no PowerShell no console do servidor e digitamos o seguinte comando:

Enable-WindowsOptionalFeature –Online –FeatureName MultiPathIO

Após isso é necessário configurar o MultiPathIO, para isso digite o comando no PowerShell:

mpiocpl

E configure conforme as imagens abaixo:

Clique na aba “Descobrir Vários Caminhos”
Clique em “Adicionar suporte para dispositivos iSCSI” e depois clique em “Adicionar”
Clique em “OK” e em “OK” novamente e reinicie o servidor.

Após o servidor reiniciado é a hora de configurar o iSCSI para isso vamos digitar o sequinte comando no PowerShell

iscsicpl

Uma caixa de dialogo vai abrir, vamos configurar o iSCSI de acordo com os prints abaixo:

Clique em “Sim” para iniciar o serviço do Hyper-V
Clique na aba “Descoberta”
Clique em “Descobrir Portal”
Coloque o IP do portal iSCSI do FreeNAS, nesse caso 192.168.30.250 e clique em “OK”
Volte para a aba “Destinos”
Verifique se o nome do portal iSCSI está de acordo com o configurado no FreeNAS e se está marcado “Inativo”, clique em “Propriedades”
Clique em “Adicionar sessão”
Marque a opção “Habilitar múltiplos caminhos” e clique em “Avançado”
Configure conforme a imagem, certificando que a dede do iniciador tem que bater com a rede do portal de destino. Clique em “OK” e em seguida em “OK” novamente
Veja que uma seção já aparece, mas é preciso repetir o processo para a proxima rede, então clique novamente em “Adicionar sessão”
Novamente marque “Habilitar múltiplos caminhos” e clique em “Avançado”
Configure novamente conforme a imagem, sempre lembrando que é preciso verificar se as redes do Iniciador e do Portal são iguais. Clique em “OK” e em “OK” novamente.
Veja que agora aparecem duas sessões configuradas. Clique em “OK”
Agora o portal está marcado como “Conectado”, sinal que a configuração foi um sucesso. Clique na aba “Volumes e Dispositivos”
Clique em “Configuração Automática”, após clicar os discos vão aparecer listados conforme o print. Clique em “OK”

Pronto, nossa configuração base está finalizada, o Hyper-V server já esta com as redes e o armazenamento configurados, basta apenas configurar o Cluster.

Proximos passos

No nosso próximo artigo da série de como configurar um Cluster de Alta Disponibilidade (Failover) Hyper-V, vamos mostrar como configurar o serviço de Cluster, como adicionar o primeiro nó no Cluster, como configurar o armazenamento compartilhado e a rede do cluster. Espero vocês lá.