Alta disponibilidade e recuperação de desastres

Nesta página, descrevemos as opções de alta disponibilidade no GKE no VMware.

Principal recurso

Arquitetura do GKE no VMware com clusters de usuários altamente disponíveis
Arquitetura do GKE no VMware com clusters de usuários altamente disponíveis (clique para ampliar)

O GKE no VMware inclui um cluster de administrador e um ou mais clusters de usuário.

O cluster de administrador gerencia o ciclo de vida dos clusters de usuários, incluindo a criação, atualizações, upgrades e exclusão de clusters. No cluster de administração, o mestre do administrador gerencia os nós de worker de administrador, que incluem mestres do usuário (nós que executam o plano de controle dos clusters de usuários gerenciados) e nós de complemento (nós que executam os componentes do complemento compatíveis com o funcionalidade do cluster de administração).

Para cada cluster de usuário, o cluster de administrador tem um nó não HA ou três nós de alta disponibilidade que executam o plano de controle. O plano de controle inclui o servidor da API Kubernetes, o programador do Kubernetes, o gerenciador do controlador do Kubernetes e vários controles críticos para o cluster do usuário.

A disponibilidade do plano de controle do cluster de usuários é essencial para operações de carga de trabalho, como criação, escalonamento, redução e encerramento. Em outras palavras, uma interrupção do plano de controle não interfere nas cargas de trabalho em execução. No entanto, as cargas de trabalho atuais perdem os recursos de gerenciamento do servidor da API Kubernetes se o plano de controle estiver ausente.

As cargas de trabalho e os serviços em contêineres são implantados nos nós de trabalho do cluster de usuários. Nenhum nó de trabalho único é essencial para a disponibilidade do aplicativo, desde que seja implantado com pods redundantes programados em vários nós de trabalho.

Como ativar a alta disponibilidade

O vSphere e o GKE no VMware oferecem vários recursos que contribuem para a alta disponibilidade (HA, na sigla em inglês).

vSphere HA e vMotion

Recomendamos ativar os dois recursos a seguir no cluster do vCenter que hospeda os clusters do GKE no VMware:

Esses recursos melhoram a disponibilidade e a recuperação caso um host ESXi falhe.

O vCenter com alta disponibilidade usa vários hosts ESXi configurados como um cluster para fornecer recuperação rápida de interrupções e alta disponibilidade econômica para aplicativos executados em máquinas virtuais. Recomendamos que você provisione seu cluster do vCenter com hosts extras e ative o Monitoramento de host de alta disponibilidade do vSphere com Host Failure Response definido como Restart VMs. Assim, as VMs poderão ser reiniciadas automaticamente em outros hosts disponíveis em caso de falha do host do ESXi.

O vMotion permite migração em tempo real e sem inatividade de VMs de um host ESXi para outro. Para a manutenção planejada do host, use a vMotion disponibilização em tempo real para evitar a inatividade do aplicativo e garantir a continuidade dos negócios.

Cluster de administrador

O GKE no VMware oferece suporte à criação de clusters de administrador de alta disponibilidade (HA). Um cluster de administrador de alta disponibilidade tem três nós que executam componentes do plano de controle. Para informações sobre requisitos e limitações, consulte Cluster de administrador de alta disponibilidade.

A indisponibilidade do plano de controle do cluster de administrador não afeta a funcionalidade atual do cluster de usuário nem as cargas de trabalho em execução nos clusters de usuário.

Há dois nós complementares em um cluster de administrador. Se um deles estiver inativo, o outro ainda poderá fornecer as operações de cluster de administrador. Para redundância, o GKE no VMware distribui serviços complementares essenciais, como o kube-dns, em ambos os nós de complementos.

Se você definir antiAffinityGroups.enabled como true no arquivo de configuração do cluster de administrador, o GKE no VMware criará automaticamente regras antiafinidade do vSphere DRS para os nós de complementos, o que faz com que eles sejam distribuídos em dois hosts físicos para alta disponibilidade.

Cluster de usuário

É possível ativar a alta disponibilidade para um cluster de usuário ao definir masterNode.replicas como 3 no arquivo de configuração do cluster de usuário. Se o cluster de usuário tiver o Plano de controle V2 ativado (recomendado), os três nós do plano de controle serão executados no cluster de usuário. Os clusters de usuário do kubeception de alta disponibilidade legados executam os três nós do plano de controle no cluster de administrador. Cada nó do plano de controle também executa uma réplica do etcd. O cluster do usuário continua funcionando, desde que haja um plano de controle em execução e um quórum do etcd. Um quórum do etcd exige que duas das três réplicas do etcd estejam funcionando.

Se você definir antiAffinityGroups.enabled como true no arquivo de configuração do cluster de administrador, o GKE no VMware criará automaticamente regras antiafinidade do vSphere DRS para os três nós que executam o plano de controle do cluster de usuário. Isso faz com que essas VMs sejam distribuídas em três hosts físicos.

O GKE no VMware também cria regras antiafinidade do vSphere DRS para os nós de trabalho no cluster de usuário, o que faz com que esses nós sejam distribuídos em pelo menos três hosts físicos. Várias regras antiafinidade do DRS são usadas por pool de nós de cluster de usuário com base no número de nós. Isso garante que os nós de trabalho encontrem hosts para serem executados, mesmo quando o número de hosts for menor que o número de VMs no pool de nós do cluster de usuário. Recomendamos que você inclua hosts físicos extras no cluster do vCenter. Além disso, configure o DRS para ser totalmente automatizado. Assim, se um host ficar indisponível, o DRS poderá reiniciar automaticamente as VMs em outros hosts disponíveis sem violar as regras de antiafinidade da VM.

O GKE no VMware mantém um rótulo de nó especial, onprem.gke.io/failure-domain-name, com valor definido como o nome do host ESXi subjacente. Os aplicativos do usuário que querem alta disponibilidade podem configurar regras podAntiAffinity com este rótulo como o topologyKey para garantir que seus pods de aplicativo estejam distribuídos em diferentes VMs e hosts físicos. Também é possível configurar vários pools de nós para um cluster de usuário com armazenamentos de dados diferentes e rótulos de nós especiais. Da mesma forma, é possível configurar regras podAntiAffinity com esse rótulo de nó especial como topologyKey para ter uma disponibilidade maior após falhas do armazenamento de dados.

Para ter alta disponibilidade para cargas de trabalho do usuário, verifique se o cluster de usuário tem um número suficiente de réplicas em nodePools.replicas. Isso garantirá o número pretendido de nós de trabalho do cluster de usuário na condição de execução.

É possível usar armazenamentos de dados separados para clusters de administrador e clusters de usuários para isolar as falhas deles.

Balanceador de carga

Há dois tipos de balanceadores de carga que podem ser usados para alta disponibilidade.

Balanceador de carga MetalLB em pacote

Para o balanceador de carga MetalLB em pacote, você alcança a alta disponibilidade quando tem mais de um nó com enableLoadBalancer: true.

O MetalLB distribui serviços nos nós do balanceador de carga, mas para um único serviço, há apenas um nó líder processando todo o tráfego para esse serviço.

Durante o upgrade do cluster, há um tempo de inatividade quando os nós do balanceador de carga são atualizados. A duração da interrupção de failover do MetalLB aumenta à medida que o número de nós do balanceador de carga cresce. Com menos de cinco nós, a interrupção ocorre dentro de 10 segundos.

Balanceador de carga da Seesaw em pacote

Para o balanceador de carga da Seesaw em pacote, é possível ativar a alta disponibilidade ao definir loadBalancer.seesaw.enableHA como true no arquivo de configuração do cluster. Também é preciso ativar uma combinação de aprendizado MAC, transmissões forjadas e modo variado no grupo de portas do balanceador de carga.

Com a alta disponibilidade, dois balanceadores de carga são configurados em modo ativo-passivo. Se o balanceador de carga ativo tiver um problema, o tráfego fará o failover para o balanceador de carga passivo.

Durante o upgrade de um balanceador de carga, há um tempo de inatividade. Se a alta disponibilidade estiver ativada no balanceador de carga, o tempo máximo de inatividade será de dois segundos.

Balanceador de carga com F5 BIG-IP integrado

A plataforma F5 BIG-IP oferece diversos Serviços para você melhorar a segurança, a disponibilidade e o desempenho dos seus aplicativos. Para o GKE no VMware, o BIG-IP fornece acesso externo e serviços de balanceamento de carga L3/4.

Para mais informações, consulte Alta disponibilidade do BIG-IP.

Como usar vários clusters para recuperação de desastres

A implantação de aplicativos em vários clusters em vários vCenters ou plataformas do GKE Enterprise pode fornecer maior disponibilidade global e limitar o raio de impacto durante interrupções.

Essa configuração usa o cluster do GKE Enterprise no data center secundário para recuperação de desastres em vez de configurar um novo cluster. Veja a seguir um resumo completo para conseguir isso:

  • Crie outro cluster de administrador e um cluster de usuário no data center secundário. Nesta arquitetura de vários clusters, é necessário que os usuários tenham dois clusters de administrador em cada data center, e cada cluster de administrador executa um cluster de usuário.

  • O cluster de usuário secundário tem um número mínimo de nós de trabalho (três) e está em espera ativa (sempre em execução).

  • As implantações de aplicativos podem ser replicadas nos dois vCenters usando o Config Sync, ou a abordagem recomendada é usar um conjunto de ferramentas de DevOps (CI/CD, Spinnaker) de aplicativo atual.

  • No caso de um desastre, o cluster de usuário pode ser redimensionado para o número de nós.

  • Além disso, é necessário fazer uma alternância de DNS para rotear o tráfego entre os clusters para o data center secundário.