Planejando um Cluster de Alta Disponibilidade (Failover) Hyper-V

Uma das coisas mais legais que as tecnologias atuais permitem são a criação de infra-estrutura de redes cada vez mais profissionais com um custo cada vez menor, as vezes até mesmo praticamente de graça. E essa nossa série de artigos vai justamente ensinar como criar um Cluster de Alta Disponibilidade (Failover) Hyper-V sem gastar todo orçamento anual da empresa. Então vamos lá.

O que é um cluster?

Mas Fabio, o que é esse tal de cluster afinal e para que ele serve? Bom cluster, em tradução livre, é um agrupamento, um agrupamento de qualquer tipo de coisa pode ser chamado de cluster. Um agrupamento de dados é um cluster de dados, um agrupamento de servidores é um cluster de servidores. Com base nesse conceito então podemos assumir que um cluster de virtualização, de maneira bem básica, é um agrupamento de servidores (hosts) de virtualização.

Mas para que serve um cluster? Bom se falando em servidores e serviços temos basicamente duas utilidades para um cluster:

  1. Alta Disponibilidade
  2. Alta Performance

Em um cluster podemos agrupar dois ou mais servidores para executarem um conjunto uma mesma tarefa, com isso podemos ter maior garantias que, caso um servidor pare de funcionar, outro continua trabalhando e com isso a tarefa em questão não para. Além disso, com mais de um servidor executando a mesma tarefa podemos distribuir a carga de trabalho, fazendo com que ao invés de 1 servidor fazer todo o trabalho, temos dois servidores fazendo cada um metade do trabalho, com isso sobram recursos e poder de processamento.

No caso especifico do nosso objetivo, um Cluster de Alta Disponibilidade (Failover) Hyper-V, temos basicamente 2 ou mais servidores que dividem a tarefa de hosts de virtualização, em cada host temos funções de maquinas virtualizadas, os hosts dividem essas funções entre si, de modo a dividir a carga de trabalho (ou você determina manualmente onde cada carga de trabalho vai rodar, mas isso é outra discussão), e caso um dos hosts caiam, as funções que estavam com aquele que ficou indisponível são distribuídas para os hosts restantes, garantindo assim a tão falada “Alta Disponibilidade”

Requisitos

Na infra estrutura Microsoft é possível fazer cluster de diversos serviços (funções) entre elas DHCP, Namespaces DFS, File Server, Aplicativo e muitos outros, mas sem dúvidas uma das funções clusterizaveis mais interessantes é a função de Hyper-V. Cluster de Alta Disponibilidade (Failover) Hyper-V é incluído em todos os servidores Microsoft de maneira gratuita, inclusive no Hyper-V server.

Para a criação de um Cluster de Alta Disponibilidade (Failover) Hyper-V precisamos de alguns pré requisitos básicos:

  1. Servidor Microsoft (Windows Server ou Hyper-V Server)
  2. Serviço de Cluster de Failover
  3. Armazenamento compartilhado
  4. Rede entre os hosts
  5. Um domínio Active Directory

Sim, eu sei que é possível criar um Cluster de Alta Disponibilidade (Failover) Hyper-V sem um domínio AD mas com as limitações de não permitir o Live Migration (Migração ao vivo) de VMs entre hosts, o que faz perder totalmente o sentido de “Alta Disponibilidade” para mim.

Qual servidor escolher

Bom essa questão é mais fácil de responder se você sabe exatamente o quanto você tem de orçamento disponível. Não existe nenhuma diferença técnica entre usar o pago e caro Windows Server 2019 Enterprise e o gratuito Hyper-V Server 2019. A diferença é que que o Windows Server, seja qual versão, tem suporte tanto por parte da Microsoft quanto dos fabricantes de Hardware, enquanto o Hyper-V Sever é considerada uma ferramenta para testes, e por isso não é suportada. Em minha opinião pessoal, não se perde nada usando o Hyper-V Server, não me deparei até agora em nenhum caso de um servidor que funcione com o Windows Server mas que não funcionasse com o Hyper-V Server. Então pagar pelo Windows Server é mais uma questão de escolha de projeto e de orçamento do que de limitações técnicas.

Hardware do Host de Virtualização

Não existe nenhuma regra que exige um hardware X para a criação de um Cluster de Alta Disponibilidade (Failover) Hyper-V. O sistema operacional base gasta entre 1,8GB e 2,5GB de memória, então o total de memoria RAM de cada host deve ser o suficiente para suportar o SO base mais a carga de trabalho das VMs rodando nele.

Eu recomendo que seja pensado que caso um servidor caia os outros que sobrem consigam assumir 100% da carga do trabalho, ou seja, se você tem 2 servidores, cada um tem 10GB de memoria sendo consumido pelas VMs, você então tem que ter pelo menos 24GB de memoria em cada servidor, pois caso um deles fique fora do ar, o outro assume completamente a carga de trabalho e com isso você mantem a alta disponibilizada. Se você tiver 3 servidores, cada um com a mesma carga de 10GB cada servidor teria que ter pelo menos 18GB de memória, pois caso um deles fique indisponível ainda tenha memória o suficiente em todos os restantes para assumir a essa carga de trabalho.

Em termos de processador e placa mãe é recomendado que todos os servidores em um Cluster de Alta Disponibilidade (Failover) Hyper-V tenham exatamente o mesmo hardware para evitar problemas de compatibilidade no momento de uma Migração Ao Vivo mas como nem sempre isso é possível, existe uma forma de se fugir dessa limitação marcando uma opção de compatibilidade em cada Maquina Virtual antes de sua inicialização, com isso na maioria dos casos é possível migrar a maquina de servidor mesmo com o Hardware Diferente.

Armazenamento Compartilhado

Não vou explicar os bits da logica do armazenamento compartilhado, mas pra resumir é preciso que todos os hosts de virtualização tenham acesso aos discos rígidos das VMs e seus dados de configuração, para isso esses dados precisam estar em um local acessível por todos os hosts, o tal “Armazenamento Compartilhado”.

Hoje em dia existem várias formas de fazer isso, storages SAN, NAS, um servidor de arquivos SMB 3 e até mesmo o pouco usado mas muito interessante sistema de armazenamento hyper convergente do Windows Server. A escolha está diretamente ligada ao que sua empresa pode pagar para ter e arcar com as vantagens e desvantagens de cada tipo de armazenamento. Num mundo ideal diria para todos comprarem um storage EMC Fiber Chanel, mas como sabemos muito bem que poucas pessoas podem fazer isso, a escolha deve ser livre.

No nosso tutorial vamos ensinar a usar um storage feito com o sistema FreeNAS que é completamente gratuito. E em um artigo no futuro devo abordar a criação de um armazenamento hyper convergente.

Em termos de volume de armazenamento todo depende da carga de trabalho, quanto mais dados suas VMs forem armazenar mais volume o Storage precisa ter. E falando de velocidade também depende de sua carga de trabalho, não vou recomendar que você coloque um banco de dados oracle encima de um armazenamento iSCSI com discos SATA. Planeje bem sua carga de trabalho para que o armazenamento não seja seu gargalo.

Um Cluster de Alta Disponibilidade (Failover) Hyper-V precisa de pelo menos 2 volumes compartilhados, 1 para os dados das maquinas virtuais (VHDs, arquivos de configuração e etc) e outro para o Quorum, uma especie de memoria compartilhada entre os hosts, onde são gravados metadados das maquinas virtuais existentes em cada nó do cluster.

O volume de Quorum é bem pequeno, apenas 500MB são requeridos pela Microsoft, é possível atribuir mais, só que é completamente desnecessário, visto que não vai ser usado mais que os 500MB.

Planejando a rede

O planejamento da rede de um Cluster de Alta Disponibilidade (Failover) Hyper-V é pensado desde 2008 quando o primeiro Hyper-V foi disponibilizado. Na ocasião era recomendado usar um adaptador de rede especializado para cada tipo de rede utilizada no Cluster. O numero mínimo é 1 adaptador, esse fazendo todas as funções mas o recomendado era que a carga fosse distribuída entre adaptadores diferentes para aumentar o desempenho e separar a carga de trabalho. Em tipos de serviço até hoje temos basicamente os mesmos:

  • Gerenciamento
    • Rede utilizada para gerenciar os hosts Hyper-V, pode ser ou não compartilhada com as VMs, é a única que de fato é obrigatória
  • CSV
    • Rede utilizada para trafego de informações referentes aos volumes compartilhados (Custer Shared Volume)
  • Live Migration
    • Rede dedicada para o trafego de dados de memória para a migração ao vivo das VMs
  • VMs
    • Rede exclusiva das VMs caso seja necessário o isolamento entre as VMs e a rede de gerenciamento
  • iSCSI
    • Rede para conexão ao armazenamento iSCSI, é recomendado 2 adaptadores por questão de desempenho, utilizando o Multi Path IO

Como podemos ver, temos um total de 5 redes recomendadas, sendo que uma delas utilizaria 2 adaptadores, com isso temos uma quantidade de pelo menos 6 adaptadores por servidor.

Sei que muitas vezes essa quantidade de adaptadores de rede não é possível, seja por questão de custo ou até mesmo por disponibilidade física de portas no servidor. Mas felizmente as novas tecnologias de rede Hyper Convergentes facilitaram isso, é possível já separar o trafego das formas apontadas acima com apenas um adaptador se for o caso.

No nosso tutorial vamos usar sim 6 adaptadores, mas não por obrigação, e sim pois é o cenário minimo ideal, mas vocês podem utilizar quantos quiserem. No nosso setup faremos as seguintes redes:

  • 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

Mas Fabio, temos apenas 5 redes, por que você vai usar 6 adaptadores de rede? A resposta é simples, convergência. Hoje é possível criar através do agrupamento de interfaces (NIC TEAMING) do Windows Server, um grupo de placas de rede que funcionam como um só, dessa forma você elimina o ponto único de falha da rede que pode cair e com isso cair todas as VMs.

É possível agrupar todas as redes em um time de interfaces apenas, e muitos profissionais recomendam hoje em dia essas configuração, mas eu prefiro separar as interfaces iSCSI por questões simplesmente de facilidade de gerenciamento, mas tecnicamente não é necessário essa separação, pode se utilizar o mesmo time para todas as redes.

Próximos passos

Agora vamos configurar um servidor de armazenamento utilizando a ferramenta FreeNAS para iniciarmos nosso Cluster de Alta Disponibilidade (Failover) Hyper-V.