Visão geral da solução passiva e fria para o AKS (Serviço de Kubernetes do Azure)
Quando você cria um aplicativo no AKS (Serviço de Kubernetes do Azure) e escolhe uma região do Azure durante a criação de recursos, ele é um aplicativo de região única. Quando a região fica indisponível durante um desastre, seu aplicativo também fica indisponível. Se você criar uma implantação idêntica em uma região secundária do Azure, o aplicativo ficará menos suscetível a um desastre em uma só região, garantindo a continuidade dos negócios. Além disso, a replicação de dados entre as regiões permite que você recupere o último estado de aplicativo.
Este guia descreve uma solução passiva e fria para o AKS. Nessa solução, implantamos dois clusters AKS independentes e idênticos em duas regiões emparelhadas do Azure com apenas um cluster atendendo ativamente o tráfego quando o aplicativo é necessário.
Observação
A prática a seguir foi revisada internamente e examinada em conjunto com nossos parceiros da Microsoft.
Visão geral da solução passiva e fria
Nessa abordagem, temos dois clusters independentes do AKS sendo implantados em duas regiões do Azure. Quando o aplicativo é necessário, ativamos o cluster passivo para receber tráfego. Se o cluster passivo falhar, devemos ativar manualmente o cluster frio para assumir o fluxo de tráfego. Podemos definir essa condição por meio de uma entrada manual todas as vezes ou para especificar um determinado evento.
Cenários e configurações
Essa solução é melhor implementada como uma carga de trabalho de "uso conforme necessário", que é útil para cenários que exigem que as cargas de trabalho sejam executadas em horários específicos do dia ou executadas sob demanda. Exemplos de casos de uso para uma abordagem passiva-fria incluem:
- Uma empresa de fabricação que precisa executar uma simulação complexa e com uso intensivo de recursos em um grande conjunto de dados. Nesse caso, o cluster passivo está localizado em uma região de nuvem que oferece serviços de computação e armazenamento de alto desempenho. O cluster passivo só é usado quando a simulação é disparada pelo usuário ou por um agendamento. Se o cluster não funcionar ao disparar, o cluster frio poderá ser usado como um backup e a carga de trabalho poderá ser executada nele.
- Uma agência governamental que precisa manter um backup de seus sistemas e dados críticos em caso de um ataque cibernético ou desastre natural. Nesse caso, o cluster passivo está localizado em um local seguro e isolado que não é acessível ao público.
Componentes
A solução de recuperação de desastre passiva e fria usa muitos serviços do Azure. Esta arquitetura de exemplo envolve os seguintes componentes:
Vários clusters e regiões: você implanta vários clusters do AKS, cada um em uma região separada do Azure. Quando o aplicativo é necessário, o cluster passivo é ativado para receber tráfego de rede.
Key Vault: você provisiona um Azure Key Vault em cada região para armazenar segredos e chaves.
Log Analytics: as instâncias regionais do Log Analytics são usadas para armazenar as métricas de rede regionais e os logs de diagnóstico. Uma instância compartilhada armazena métricas e logs de diagnóstico para todas as instâncias do AKS.
Par hub-spoke: um par hub-spoke é implantado para cada instância regional do AKS. As políticas do Gerenciador de Firewall do Azure gerenciam as regras de firewall em cada região.
Registro de Contêiner: as imagens de contêiner para a carga de trabalho são armazenadas em um registro de contêiner gerenciado. Com essa solução, uma só instância do Registro de Contêiner do Azure é usada para todas as instâncias do Kubernetes no cluster. A replicação geográfica do Registro de Contêiner do Azure permite que você replique as imagens nas regiões selecionadas do Azure e fornece acesso contínuo às imagens, mesmo que uma região enfrente uma interrupção.
Processo de failover
Se o cluster passivo não estiver funcionando corretamente devido a um problema em sua região específica do Azure, você poderá ativar o cluster frio e redirecionar todo o tráfego para a região desse cluster. Você pode usar esse processo enquanto o cluster passivo é desativado até que ele comece a funcionar novamente. O cluster frio pode levar alguns minutos para ficar online, pois foi desativado e precisa concluir o processo de instalação. Essa abordagem não é ideal para aplicativos que diferenciam o tempo. Nesse caso, recomendamos considerar um failover ativo-ativo.
Pods de Aplicativo (Regional)
Um objeto de implantação do Kubernetes cria várias réplicas de um pod (ReplicaSet). Se uma delas não está disponível, o tráfego é roteado entre as réplicas restantes. O ReplicaSet do Kubernetes tenta manter o número especificado de réplicas em funcionamento. Se uma instância ficar inoperante, uma nova instância deverá ser recriada. As investigações de atividade podem verificar o estado do aplicativo ou do processo em execução no pod. Se o pod não responder, a investigação de atividade removerá o pod, o que força o ReplicaSet a criar outra instância.
Para obter mais informações, confira ReplicaSet de Kubernetes.
Pods de aplicativo (globais)
Quando uma região inteira fica indisponível, os pods no cluster não estão mais disponíveis para atender às solicitações. Nesse caso, a instância do Azure Front Door roteia todo o tráfego para as regiões íntegras restantes. Os clusters e os pods do Kubernetes nessas regiões continuam atendendo às solicitações. Para compensar o aumento do tráfego e das solicitações para o cluster restante, tenha em mente as seguintes diretrizes:
- Verifique se os recursos de rede e de computação têm o tamanho certo para absorver qualquer aumento repentino no tráfego devido ao failover de região. Por exemplo, ao usar a CNI (Adaptador de Rede de Contêiner) do Azure, verifique se você tem uma sub-rede que pode dar suporte a todos os IPs do pod com uma carga de tráfego em pico.
- Use o Dimensionador Automático de Pod Horizontal para aumentar a contagem de réplicas de pod, a fim de compensar o aumento da demanda regional.
- Use o Dimensionador Automático de Cluster do AKS para aumentar a contagem de nós da instância do Kubernetes, a fim de compensar o aumento da demanda regional.
Pools de nós do Kubernetes (regionais)
Ocasionalmente, uma falha localizada pode ocorrer para calcular recursos, por exemplo, a energia fica indisponível para um só rack de servidores do Azure. Para proteger os nós do AKS de se tornarem uma falha regional de ponto único, use as Zonas de Disponibilidade do Azure. As zonas de disponibilidade garantirão que os nós do AKS em cada zona de disponibilidade estejam fisicamente separados daqueles definidos em outras zonas de disponibilidades.
Pools de nós do Kubernetes (globais)
Em uma falha regional completa, o Azure Front Door roteia o tráfego para as regiões íntegras restantes. Novamente, lembre-se de compensar o aumento do tráfego e das solicitações para o cluster restante.
Estratégia de teste de failover
Embora não haja mecanismos atualmente disponíveis no AKS para interromper uma região inteira da implantação para fins de teste, o Azure Chaos Studio oferece a capacidade de criar um teste de caos no seu cluster.
Próximas etapas
Se você estiver considerando uma solução diferente, consulte os seguintes artigos:
Azure Kubernetes Service