Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As Instâncias de Contêiner do Azure fornecem uma maneira simples de executar contêineres do Linux ou do Windows no Azure, sem a necessidade de gerenciar VMs (máquinas virtuais) ou adotar um serviço mais complexo e de nível superior.
Este artigo descreve o suporte à confiabilidade em Instâncias de Contêiner, abrangendo a resiliência intra-regional por meio de zonas de disponibilidade e implantações de várias regiões.
A confiabilidade é uma responsabilidade compartilhada entre você e a Microsoft. Você pode usar este guia para determinar quais opções de confiabilidade atendem aos seus objetivos de negócios específicos e metas de tempo de atividade.
Recomendações de implantação de produção
Para aumentar a confiabilidade dos aplicativos de produção criados em Instâncias de Contêiner, recomendamos que você execute as seguintes ações:
Execute seus aplicativos em várias zonas de disponibilidade.
Considere se também deve executar grupos de contêineres separados em várias regiões.
Use investigações de atividade para detectar e reiniciar automaticamente contêineres não íntegros.
Use sondas de prontidão para aguardar até que seus contêineres estejam prontos para receber tráfego.
Use atualizações sem interrupção para aplicar alterações progressivamente se você usar NGroups. Essa abordagem reduz a probabilidade de tempo de inatividade devido a atualizações.
Revise práticas recomendadas e considerações para Instâncias de Contêiner.
Visão geral da arquitetura de confiabilidade
Para usar instâncias de contêiner, implante um grupo de contêineres. Um grupo de contêineres contém um ou mais contêineres. Cada contêiner é criado a partir de uma imagem de contêiner, que é armazenada em um registro, como o Registro de Contêiner do Azure.
Todos os contêineres em um grupo de contêineres são implantados juntos como uma única unidade lógica e compartilham a mesma infraestrutura física.
O diagrama a seguir mostra a relação entre grupos de contêineres, contêineres e imagens.
As Instâncias de Contêiner fornecem os seguintes recursos para gerenciar grupos de contêineres:
O NGroups (versão prévia) fornece um conjunto de recursos para gerenciar vários grupos de contêineres relacionados. Ao criar um NGroup, você define o número de grupos de contêineres a serem criados. As Instâncias de Contêiner fornecem funcionalidades como distribuições de atualização automatizadas e distribuição de grupos de contêineres entre zonas de disponibilidade.
Os pools em espera criam um pool de grupos de contêineres pré-provisionados que podem ser usados em resposta ao tráfego de entrada. Os pools de espera são projetados para otimizar a criação de grupos de contêineres e não destinam-se a aumentar sua resiliência.
Falhas transitórias
Falhas transitórias são falhas curtas e intermitentes nos componentes. Elas ocorrem com frequência em um ambiente distribuído, como a nuvem, e são uma parte normal das operações. Falhas transitórias se corrigem após um curto período de tempo. É importante que seus aplicativos possam lidar com falhas transitórias, geralmente repetindo solicitações afetadas.
Todos os aplicativos hospedados na nuvem devem seguir as diretrizes transitórias de tratamento de falhas do Azure quando eles se comunicam com qualquer APIs, bancos de dados e outros componentes hospedados na nuvem. Para obter mais informações, confira Recomendações para tratamento de falhas transitórias.
Os SDKs fornecidos pela Microsoft geralmente lidam com falhas transitórias. Como você hospeda seus próprios aplicativos em Instâncias de Contêiner, execute medidas para reduzir a chance de falhas transitórias:
Execute vários grupos de contêineres para cargas de trabalho importantes para garantir que uma falha em um contêiner ou grupo de contêineres não afete todo o aplicativo.
Crie seu código de aplicativo para ser resiliente a falhas transitórias em serviços aos quais você se conecta, como usar políticas de repetição com estratégias de retrocesso.
Para obter mais informações sobre outros erros que podem ocorrer em runtime e como responder a eles, consulte Problemas durante o runtime do grupo de contêineres.
Suporte à zona de disponibilidade
As zonas de disponibilidade são grupos fisicamente separados de datacenters em cada região do Azure. Quando uma zona falha, os serviços podem fazer o failover de uma das zonas restantes.
As Instâncias de Contêiner dão suporte a zonas de disponibilidade de diferentes maneiras, dependendo de como você implanta seus grupos de contêineres:
Grupos de contêineres criados manualmente: Um grupo de contêineres individual é um recurso zonal , o que significa que ele pode ser implantado em uma única zona de disponibilidade selecionada. Todos os contêineres dentro do grupo são implantados na mesma zona de disponibilidade. Se essa zona de disponibilidade tiver uma interrupção, o grupo de contêineres e todos os contêineres poderão ter tempo de inatividade.
Observação
Para garantir que seu aplicativo continue sendo executado quando qualquer zona única na região sofrer uma interrupção, recomendamos que você crie no mínimo dois grupos de contêineres em duas zonas de disponibilidade diferentes.
Se você não especificar zonas de disponibilidade a serem usadas para seu grupo de contêineres, ela será nonzonal ou regional, o que significa que ela pode ser colocada em qualquer zona de disponibilidade dentro da região ou dentro da mesma zona. Se qualquer zona de disponibilidade na região tiver um problema, o grupo de contêineres poderá enfrentar tempo de inatividade.
NGroups: Ao implantar um NGroup, você pode especificar uma ou mais zonas para implantá-lo. Se você implantar um NGroup em duas ou mais zonas, ele será um NGroup com redundância de zona e uma interrupção de uma zona de disponibilidade só causará problemas para os grupos de contêineres dentro da zona afetada.
Se você não especificar zonas de disponibilidade a serem usadas para seu NGroup, ele será nonzonal e poderá ter tempo de inatividade se qualquer zona de disponibilidade na região tiver um problema.
Pools em espera: Ao implantar um pool em espera, você pode, opcionalmente, especificar uma ou mais zonas. A plataforma pode solicitar contêineres entre as zonas selecionadas.
No entanto, os pools em espera não oferecem redundância de zona ou resiliência de zona, pois não há garantia de que os contêineres sejam criados em várias zonas. Se ocorrer uma interrupção de zona, é possível que todos os contêineres no pool possam ser colocados na zona afetada.
Como os pools em espera não são projetados para dar suporte à resiliência a falhas de zona, este guia não descreve o comportamento detalhado de pools em espera com zonas de disponibilidade.
Importante
Os pools em espera não são projetados para serem resilientes à zona. Eles não devem ser usados para cargas de trabalho que exigem resiliência a falhas de zona.
Suporte de regiões
As implantações de grupo de contêineres zonais têm suporte em todas as regiões com zonas de disponibilidade.
Requirements
As implantações zonais estão disponíveis para grupos de contêineres do Linux e do Windows Server 2019.
Para selecionar uma zona de disponibilidade, você deve usar o SKU Standard. Os grupos de contêineres zonais não estão disponíveis com o SKU Confidencial.
Considerações
Contêineres Spot não oferecem suporte a zonas de disponibilidade e são sempre não regionais.
Custo
Não há custo adicional para configurar zonas de disponibilidade para um grupo de contêineres.
Configurar o suporte à zona de disponibilidade
Crie grupos de contêineres com suporte à zona de disponibilidade. A abordagem que você usa para configurar zonas de disponibilidade depende de como você cria grupos de contêineres.
Grupos de contêineres criados manualmente: Para criar um grupo de contêineres zonais em uma zona específica, você pode usar um dos seguintes métodos:
NGroups: Você pode implantar um NGroup com redundância de zona usando um modelo do ARM e especificando várias zonas. Para obter mais informações, consulte NGroups com exemplo de zonas.
Pools em espera: Você pode implantar um pool em espera que usa zonas de disponibilidade especificando uma ou mais zonas ao criar ou atualizar o pool. No entanto, os contêineres podem não ser criados em várias zonas. Pools de contingência não devem ser usados para cargas de trabalho que exigem resiliência para falhas de zona. Para obter mais informações, consulte Criar um pool de reserva para instâncias de contêiner.
Habilite o suporte à zona de disponibilidade em recursos existentes. A abordagem que você usa para configurar zonas de disponibilidade depende de como você cria grupos de contêineres.
Grupos de contêineres criados manualmente: Você não pode habilitar zonas de disponibilidade em um grupo de contêineres nonzonal existente. Você deve excluir o grupo de contêineres e criar um grupo de contêineres zonais.
NGroups: Você não pode habilitar zonas de disponibilidade em um NGroup nonzonal existente. Você deve excluir o NGroup e criar um NGroup redundante entre zonas.
Pools em espera: Você não pode habilitar zonas de disponibilidade em um pool de espera nonzonal existente. Você deve excluir o grupo de contêineres e criar um novo pool em espera que use várias zonas de disponibilidade.
Mova grupos de contêineres entre zonas ou desabilite o suporte à zona de disponibilidade. A abordagem que você usa para modificar zonas de disponibilidade depende de como você cria grupos de contêineres.
Grupos de contêineres criados manualmente: Para alterar a zona de disponibilidade de um grupo de contêineres, você deve excluir o grupo de contêineres e criar outro grupo de contêineres com a nova zona de disponibilidade. Para saber como excluir o grupo de contêineres, consulte os seguintes recursos:
NGroups: Você pode adicionar zonas a um NGroup, mas não pode remover zonas.
Pools em espera: Você pode adicionar zonas a um pool em espera, mas não pode remover zonas.
Distribuição de grupo de contêineres
A maneira como os grupos de contêineres são distribuídos entre zonas de disponibilidade depende de como você implanta seus grupos de contêineres.
Grupos de contêineres criados manualmente: Você é responsável por distribuir os grupos de contêineres criados manualmente em várias zonas de disponibilidade.
NGroups: Durante as operações de escala, o NGroups exclui aleatoriamente instâncias, o que pode não manter uma distribuição entre zonas de disponibilidade. As operações de expansão tentam reequilibrar a propagação entre zonas.
Pools em espera: Um pool em espera pode criar contêineres em qualquer uma das zonas de disponibilidade configuradas no pool. No entanto, os contêineres talvez não sejam criados em várias zonas. Pools de contingência não devem ser usados para cargas de trabalho que exigem resiliência para falhas de zona.
Planejamento e gerenciamento de capacidade
Para se preparar para uma falha na zona de disponibilidade, considere o superprovisionamento do número de grupos de contêineres que você implanta. Essa abordagem permite que a solução tolere alguma perda de capacidade e continue a funcionar sem desempenho degradado. Para obter mais informações, consulte Gerenciar capacidade usando o excesso de provisionamento.
A abordagem usada para sobreprovisionar grupos de contêineres depende de como você implanta seus grupos de contêineres.
Grupos de contêineres criados manualmente: Você é responsável por planejar a capacidade de seus grupos de contêineres criados manualmente, incluindo o planejamento de quantos grupos de contêineres serão implantados em cada zona.
NGroup: Considere o excesso de provisionamento da capacidade do NGroup para tolerar a perda de uma zona.
Pools em espera: Os pools em espera não são projetados para serem resilientes a falhas de zona. Considere usar múltiplos pools de standby em diferentes zonas, ou use NGroups.
Operações normais
Esta seção descreve o que esperar quando os recursos das Instâncias de Contêiner são configurados para suporte à zona de disponibilidade e todas as zonas de disponibilidade estão operacionais.
Roteamento de tráfego entre zonas: Você é responsável por rotear o tráfego para seus contêineres. Por exemplo, você pode usar o Gateway de Aplicativo do Azure como gateway e balanceador de carga para seus grupos de contêineres.
Se você usar NGroups ou pools de espera, será responsável pelo balanceamento de carga em cada contêiner. Você também precisa configurar seu sistema de roteamento de tráfego para detectar a integridade de cada grupo de contêineres e redirecionar o tráfego para um grupo alternativo quando necessário.
Replicação de dados entre zonas: Contêineres e grupos de contêineres são sem estado. Você pode anexar seu próprio compartilhamento de arquivos ou conectar-se a bancos de dados ou outros serviços de armazenamento de dentro de seus aplicativos. Você é responsável por garantir que esses compartilhamentos de arquivos e os serviços de armazenamento sejam resilientes à zona. Examine os guias de confiabilidade de cada serviço para entender como tornar cada zona de componente resiliente.
Experiência de redução de atividade na zona
Essa seção descreve o que esperar quando recursos das Instâncias de Contêiner são configurados para suporte a zona de disponibilidade e há uma interrupção na zona de disponibilidade.
Detecção e resposta: A responsabilidade pela detecção de falhas de zona e a resposta associada dependem de como você implanta seus grupos de contêineres.
Grupos de contêineres criados manualmente: Você precisa detectar a perda de uma zona de disponibilidade e iniciar um failover para um grupo de contêineres secundário criado em outra zona de disponibilidade.
NGroups: a plataforma Instâncias de Contêiner é responsável por detectar uma falha em uma zona de disponibilidade e responder a ela.
No entanto, você é responsável por garantir que o tráfego seja roteado para contêineres em uma zona saudável.
Pools em espera: a plataforma Instâncias de Contêiner não tem garantia de responder a falhas de zona para pools em espera. Pools de contingência não devem ser usados para cargas de trabalho que exigem resiliência para falhas de zona.
Notificação: As Instâncias de Contêineres não notificam você quando uma zona fica indisponível. No entanto, você pode usar a Integridade do Serviço do Azure para entender a integridade geral do serviço Instâncias de Contêiner, incluindo qualquer falha de zona.
Configure alertas para receber notificações de problemas no nível da zona. Para obter mais informações, consulte Criar alertas de Integridade do Serviço no portal do Azure.
Solicitações ativas: Se uma zona falhar, todos os contêineres em execução nessa zona provavelmente serão interrompidos, incluindo qualquer trabalho ativo que estejam executando
Perda de dados esperada: Como contêineres e grupos de contêineres são sem estado, não há nenhuma perda de dados esperada de uma falha de zona. No entanto, você é responsável por garantir que cada componente em sua carga de trabalho seja resiliente à zona, incluindo serviços de armazenamento e bancos de dados.
Tempo de inatividade esperado: O tempo de inatividade que você pode esperar de uma falha de zona depende de como você implanta seus grupos de contêineres.
Grupos de contêineres criados manualmente: Para grupos de contêineres zonais, quando uma zona não está disponível, o grupo de contêineres e seus contêineres ficam indisponíveis até que a zona de disponibilidade se recupere.
NGroups: Para NGroups, se uma zona falhar, seu aplicativo permanecerá disponível porque os grupos de contêineres restantes dentro dos NGroups continuarão sendo executados em outras zonas. Nenhum tempo de inatividade é esperado.
Pools em espera: Os pools em espera não fornecem resiliência de zona. Se todos os grupos de contêineres no pool de espera estiverem em uma única zona, é possível que todos os grupos de contêineres e seus contêineres fiquem indisponíveis até que a zona de disponibilidade se recupere.
Redirecionamento de tráfego: Como você é responsável por rotear o tráfego para seus contêineres, você também é responsável por redirecionar o tráfego se um grupo de contêineres falhar devido a uma interrupção de zona de disponibilidade.
Recuperação de zona
Após a recuperação da zona, a plataforma do Azure reinicia automaticamente os grupos de contêineres que foram interrompidos. Não é necessária nenhuma ação do cliente.
Teste de falhas de zona
Não há como simular uma interrupção da zona de disponibilidade que contém o grupo de contêineres. No entanto, você pode configurar manualmente gateways upstream ou balanceadores de carga para redirecionar o tráfego para um grupo de contêineres diferente em uma zona de disponibilidade diferente.
Suporte para várias regiões
Instâncias de Contêiner é um serviço de região única. Se a região ficar indisponível, seus grupos de contêineres e seus contêineres também ficarão indisponíveis.
Abordagens alternativas de várias regiões
Opcionalmente, você pode implantar grupos de contêineres separados em várias regiões. Você é responsável por implantar e configurar os grupos de contêineres em cada região. Você também precisa configurar o balanceamento de carga usando um serviço como o Gerenciador de Tráfego do Azure ou o Azure Front Door. Você é responsável por qualquer sincronização de dados, failover e failback.
Contrato de nível de serviço
O acordo de nível de serviço (SLA) dos serviços do Azure descreve a disponibilidade esperada de cada serviço e as condições que sua solução deve atender para alcançar essa expectativa de disponibilidade. Para obter mais informações, consulte SLAs para serviços online.