Alta disponibilidade (Confiabilidade) no Azure Cosmos DB for NoSQL
Este artigo descreve o suporte de alta disponibilidade (confiabilidade) no Azure Cosmos DB for NoSQL e abrange zonas de disponibilidade, bem como recuperação de desastre entre regiões e continuidade dos negócios.
Suporte à zona de disponibilidade
As zonas de disponibilidade do Azure são pelo menos três grupos de datacenters separados fisicamente em cada região do Azure. Os datacenters dentro de cada zona são equipados com energia, resfriamento e infraestrutura de rede independentes. Em caso de falha de uma zona local, as zonas de disponibilidade foram projetadas de modo que, se uma zona é afetada, os serviços regionais, a capacidade e a alta disponibilidade têm suporte nas duas zonas restantes.
As falhas podem variar de falhas de software e hardware a eventos como terremotos, inundações e incêndios. A tolerância a falhas é obtida devido à redundância e ao isolamento lógico dos serviços do Azure. Para obter informações detalhadas sobre as zonas de disponibilidade no Azure, confira Regiões e zonas de disponibilidade.
Os serviços habilitados para zonas de disponibilidade do Azure foram projetados para fornecer o nível ideal de resiliência e flexibilidade. Eles podem ser configurados de duas maneiras. Eles podem ter redundância de zona, com replicação automática entre zonas, ou podem ser zonais, com instâncias fixadas em uma zona específica. Você também pode combinar essas abordagens. Para obter mais informações sobre a arquitetura zonal versus com redundância de zona, confira Recomendações para usar zonas e regiões de disponibilidade.
O Azure Cosmos DB é um serviço multilocatário que gerencia todos os detalhes de nós de computação individuais de modo transparente. Você não tem que se preocupar com nenhum tipo de correção ou manutenção planejada. O Azure Cosmos DB garante SLAs para disponibilidade e latência P99 por meio de todas as operações de manutenção automática que o sistema executa.
O Azure Cosmos DB oferece:
Resiliência de interrupção de nó individual. O Azure Cosmos DB reduz automaticamente os interrupções de réplica, garantindo pelo menos três réplicas de seus dados em cada região do Azure para a sua conta dentro de um quorum de quatro réplicas. Essa garantia resulta em um RTO de 0 e um RPO de 0 para interrupções de nó individuais, sem precisar de alterações ou configurações de aplicativos.
Resiliência de interrupção de zona. Quando você implanta uma conta do Azure Cosmos DB usando zonas de disponibilidade, o Azure Cosmos DB fornece um RTO de 0 e um RPO de 0, mesmo em uma interrupção de zona. Para obter informações sobre RTO, consulte os objetivos de recuperação.
Com as zonas de disponibilidade habilitadas, o Azure Cosmos DB for NoSQL dá suporte a uma configuração de redundância de zona.
Pré-requisitos
Suas réplicas devem ser implantadas em uma região do Azure que dê suporte a zonas de disponibilidade. Para revisar se a sua região dá suporte a zonas de disponibilidade, consulte a lista de regiões com suporte.
Determine se as zonas de disponibilidade adicionam ou não valor suficiente à configuração atual em Impacto do uso de zonas de disponibilidade.
Impacto do uso de zonas de disponibilidade
O impacto das zonas de disponibilidade na alta disponibilidade do banco de dados Cosmos DB for NoSQL depende do nível de consistência da conta e de quais regiões têm zonas de disponibilidade habilitadas. Em muitos casos, as zonas de disponibilidade não agregam valor ou valor mínimo se a conta for de várias regiões (a menos que esteja configurada com consistência forte).
Consulte a tabela abaixo para estimar o impacto do uso de zonas de disponibilidade na configuração da conta atual:
Nível de consistência da conta | Regiões com zonas de disponibilidade habilitadas | Impacto do uso de zonas de disponibilidade |
---|---|---|
Assíncrona (desatualização limitada ou mais fraca) | Qualquer número de regiões de leitura secundárias. | Fornece valor mínimo porque o SDK já fornece redirecionamentos contínuos para leituras quando uma região de leitura falha. |
Síncrona (forte) | Duas ou mais regiões de leitura secundárias | Fornece um valor marginal, porque o sistema pode aproveitar o quorum dinâmico caso uma região de leitura perca a disponibilidade, o que permite que as gravações continuem. |
Síncrona (forte) | Uma região de leitura secundária | Fornece um valor maior porque a perda de uma região de leitura nesse cenário pode afetar a disponibilidade de gravação. |
Tudo | Gravar regiões e qualquer número de regiões secundárias | Garante maior disponibilidade para operações de gravação para falhas zonais. |
Tudo | Região única | A região única não pode se beneficiar da funcionalidade de failover de várias regiões. O uso de zonas de disponibilidade protege contra perda de disponibilidade total devido a uma falha zonal. |
Aprimoramentos do SLA
Como as zonas de disponibilidade são fisicamente separadas e fornecem fonte de energia, rede e resfriamento distintos, os SLAs de Disponibilidade (contratos de nível de serviço) são maiores (99,995%) do que as contas com uma única região (99,99%). As regiões em que as zonas de disponibilidade estão habilitadas são cobradas em 25% premium, enquanto aquelas sem zonas de disponibilidade não incorrem no premium. Além disso, o preço premium das zonas de disponibilidade é dispensado para contas configuradas com gravações de várias regiões e/ou para coleções configuradas com o modo de dimensionamento automático.
A adição de uma região adicional à conta do Cosmos DB normalmente aumenta a fatura existente em 100% (aditivamente não multiplicativamente), embora existam pequenas variações de custo entre regiões. Para obter mais detalhes, consulte a página de preços.
Habilitar AZs, adicionar regiões adicionais ou ativar gravações de várias regiões podem ser considerados uma abordagem em camadas que aumenta a resiliência e a disponibilidade de uma determinada conta do Cosmos DB em cada etapa do caminho – da disponibilidade do 4 9 para a configuração não AZ de região única, até 4 e meia 9 para uma única região com AZs, até 5 9's de disponibilidade para configuração de várias regiões com a opção de gravação de várias regiões habilitada. Consulte a tabela a seguir para obter um resumo de SLAs para cada configuração.
KPI | Gravações de região única sem zonas de disponibilidade | Gravações de região única com zonas de disponibilidade | Gravações de várias regiões e de região única sem zonas de disponibilidade | Gravações de várias regiões e de região única com zonas de disponibilidade | Gravações em várias regiões e várias regiões com ou sem zonas de disponibilidade |
---|---|---|---|---|---|
SLA de disponibilidade de gravação | 99,99% | 99,995% | 99,99% | 99,995% | 99,999% |
SLA de disponibilidade de leitura | 99,99% | 99,995% | 99,999% | 99,999% | 99,999% |
Falhas de zona: perda de dados | Perda de dados | Sem perda de dados | Sem perda de dados | Sem perda de dados | Sem perda de dados |
Falhas de zona: disponibilidade | Perda de disponibilidade | Sem perda de disponibilidade | Sem perda de disponibilidade | Sem perda de disponibilidade | Sem perda de disponibilidade |
Interrupção regional: perda de dados | Perda de dados | Perda de dados | Dependente do nível de consistência. Para obter mais informações, consulte Compensações de consistência, disponibilidade e desempenho. | Dependente do nível de consistência. Para obter mais informações, consulte Compensações de consistência, disponibilidade e desempenho. | Dependente do nível de consistência. Para obter mais informações, consulte Compensações de consistência, disponibilidade e desempenho. |
Interrupção regional: disponibilidade | Perda de disponibilidade | Perda de disponibilidade | Nenhuma perda de disponibilidade para a falha de região de leitura, temporária para falha de região de gravação | Nenhuma perda de disponibilidade para a falha de região de leitura, temporária para falha de região de gravação | Sem perda de disponibilidade de leitura, perda temporária de disponibilidade de gravação na região afetada |
Preço (1) | Não aplicável | Taxa de RU/s x 1,25 provisionada | RU/s provisionadas x N regiões | RU/s provisionadas x taxa de 1,25 x N regiões (2) | Taxa de gravação de várias regiões x N regiões |
1 Para contas sem servidor, as RUs são multiplicadas por um fator de 1,25.
2 A taxa de 1,25 se aplica apenas a regiões nas quais você habilita zonas de disponibilidade.
Criar um recurso com zonas de disponibilidade habilitadas
Você só pode configurar zonas de disponibilidade quando adicionar uma nova região a uma conta NoSQL do Azure Cosmos DB.
Para habilitar o suporte à zona de disponibilidade, você pode usar:
Migrar para o suporte às zonas de disponibilidade
Para saber como migrar sua conta do Cosmos DB para o suporte à zona de disponibilidade, consulte Migrar o Azure Cosmos DB for NoSQL para o suporte à zona de disponibilidade).
Recuperação de desastre entre regiões e continuidade dos negócios
A DR (recuperação de desastre) trata da recuperação após eventos de alto impacto, como desastres naturais ou implantações com falha, que resultam em tempo de inatividade e perda de dados. Seja qual for a causa, a melhor solução para um desastre é um plano de DR bem definido e testado e um design de aplicativo que dê suporte ativo à DR. Antes de começar a pensar em criar seu plano de recuperação de desastre, confira Recomendações para criar uma estratégia de recuperação de desastre.
Quando o assunto é DR, a Microsoft usa o modelo de responsabilidade compartilhada. Em um modelo de responsabilidade compartilhada, a Microsoft garante que a infraestrutura de linha de base e os serviços de plataforma estejam disponíveis. Ao mesmo tempo, muitos serviços do Azure não replicam dados automaticamente nem retornam de uma região com falha para a replicação cruzada em outra região habilitada. Para esses serviços, você é responsável por configurar um plano de recuperação de desastre que funcione para sua carga de trabalho. A maioria dos serviços executados nas ofertas de PaaS (plataforma como serviço) do Azure fornece recursos e diretrizes para dar suporte à DR. Além disso, você pode usar recursos específicos do serviço para dar suporte a uma recuperação rápida, a fim de ajudar a desenvolver seu plano de DR.
As interrupções de região são interrupções que afetam todos os nós do Azure Cosmos DB em uma região do Azure, em todas as zonas de disponibilidade. Para os raros casos de interrupções de região, você pode configurar o Azure Cosmos DB para dar suporte a vários resultados de durabilidade e disponibilidade.
Durabilidade
Quando uma conta do Azure Cosmos DB é implantada em uma única região, geralmente não ocorre nenhuma perda de dados. O acesso aos dados é restaurado após a recuperação dos serviços do Azure Cosmos DB na região afetada. A perda de dados pode ocorrer apenas com um desastre irrecuperável na região do Azure Cosmos DB.
Para ajudá-lo a se proteger contra a perda completa de dados, que pode resultar de desastres catastróficos em uma região, o Azure Cosmos DB fornece dois modos de backup:
- Os backups contínuos fazem backup de cada região a cada 100 segundos. Eles permitem que você restaure seus dados para qualquer ponto no tempo com granularidade de 1 segundo. Em cada região, o backup depende dos dados confirmados nessa região. Se a região tiver zonas de disponibilidade habilitadas, o backup será armazenado em contas de armazenamento com redundância de zona.
- Os backups periódicos fazem backups completos de todas as partições de todos os contêineres em sua conta, sem sincronização entre partições. O intervalo de backup mínimo é de 1 hora.
Quando uma conta do Azure Cosmos DB é implantada em várias regiões, a durabilidade dos dados depende do nível de coerência que você configura na conta. A tabela a seguir detalha o RPO de uma conta do Azure Cosmos DB implantada em pelo menos duas regiões, para todos os níveis de coerência.
Nível de coerência | RPO para interrupção de região |
---|---|
Sessão, prefixo coerente, eventual | Menos de 15 minutos |
Bounded staleness | K e T |
Forte | 0 |
K = O número de versões (ou seja, atualizações) de um item.
T = O intervalo de tempo desde a última atualização.
Para contas de várias regiões, o valor mínimo de K e T é de 100 mil operações de gravação ou 300 segundos. Esse valor define o RPO mínimo dos dados quando você está usando a desatualização limitada.
Para obter mais informações sobre as diferenças entre níveis de coerência, confira os Níveis de coerência no Azure Cosmos DB.
Failover gerenciado pelo serviço
Se sua solução exigir tempo de atividade contínuo durante interrupções de região, você pode configurar o Azure Cosmos DB para replicar seus dados em várias regiões e fazer failover transparente para regiões disponíveis quando necessário.
As contas de uma única região podem perder a acessibilidade após uma interrupção regional. Para garantir a continuidade dos negócios em todos os momentos, recomendamos que você configure sua conta do Azure Cosmos DB com uma única região de gravação e pelo menos uma segunda região (leitura) e habilitar o failover gerenciado pelo serviço.
O failover gerenciado pelo serviço permite que o Azure Cosmos DB faça failover na região de gravação de uma conta de várias regiões, a fim de preservar a continuidade dos negócios à custa da perda de dados, conforme descrito anteriormente na seção Durabilidade. Os failovers regionais são detectados e manipulados no cliente do Azure Cosmos DB. Eles não exigem alterações do aplicativo. Para ver instruções de como habilitar várias regiões de leitura e o failover gerenciado pelo serviço, confira como Gerenciar uma conta do Azure Cosmos DB usando o portal do Azure.
Importante
Se você escolheu a configuração de gravação de região única com várias regiões de leitura, é altamente recomendável configurar as contas do Azure Cosmos DB usadas para cargas de trabalho de produção para habilitar o failover gerenciado pelo serviço. Essa configuração permite que o Azure Cosmos DB faça o failover dos bancos de dados da conta para as regiões disponíveis. Na ausência dessa configuração, a conta passará por perda de disponibilidade de gravação durante toda a interrupção da região de gravação. O failover manual não terá sucesso devido à falta de conectividade da região.
Aviso
Mesmo com o failover gerenciado pelo serviço ativado, a interrupção parcial pode exigir intervenção manual da equipe de serviço do Azure Cosmos DB. Nesses cenários, pode levar até 1 hora (ou mais) para que o failover entre em vigor. Para melhorar a disponibilidade de gravação durante interrupções parciais, recomendamos ativar as zonas de disponibilidade, além do failover gerenciado pelo serviço.
Várias regiões de gravação
Você pode configurar o Azure Cosmos DB para aceitar gravações em várias regiões. Essa configuração é útil para reduzir a latência de gravação em aplicativos geograficamente distribuídos.
Quando você configura uma conta do Azure Cosmos DB para várias regiões de gravação, não há suporte para coerência forte e podem surgir conflitos de gravação. Para obter mais informações sobre como resolver conflitos, confira Tipos de conflito e políticas de resolução ao usar várias regiões de gravação.
Importante
Atualizar a mesma ID do documento com frequência (ou recriar a mesma ID do documento com frequência após TTL ou exclusão) terá um efeito sobre o desempenho da replicação devido ao aumento do número de conflitos gerados no sistema.
Região de resolução de conflitos
Quando uma conta do Azure Cosmos DB é configurada com gravações de várias regiões, uma das regiões atuará como um árbitro em conflitos de gravação.
Práticas recomendadas para gravações de várias regiões
Aqui estão algumas práticas recomendadas a serem consideradas ao gravar em várias regiões.
Mantenha o tráfego local local
Quando você usa gravações de várias regiões, o aplicativo deve emitir tráfego de leitura e gravação originado na região local estritamente para a região local do Cosmos DB. Para um desempenho ideal, evitar chamadas entre regiões.
É importante que o aplicativo minimize conflitos evitando os seguintes anti-padrões:
Enviar a mesma operação de gravação para todas as regiões para aumentar as chances de obter um tempo de resposta rápido
Determinar aleatoriamente a região de destino para uma operação de leitura ou gravação por solicitação
Usar uma política round-robin para determinar a região de destino para uma operação de leitura ou gravação por solicitação.
Evite a dependência de retardo de replicação
Você não pode configurar contas de gravação de várias regiões para coerência forte. A região que está sendo gravada responde imediatamente após o Azure Cosmos DB replicar os dados localmente enquanto replica os dados de forma assíncrona globalmente.
Embora seja pouco frequente, um retardo de replicação pode ocorrer em uma ou algumas partições ao replicar dados geografais. O retardo na replicação pode ocorrer devido a erros raros no tráfego de rede ou taxas de resolução de conflitos maiores do que o normal.
Por exemplo, uma arquitetura na qual o aplicativo grava na Região A, mas lê da Região B, introduz uma dependência de retardo de replicação entre as duas regiões. No entanto, se o aplicativo ler e gravar na mesma região, o desempenho permanecerá constante mesmo na presença de retardo de replicação.
Avaliar o uso de coerência de sessão para operações de gravação
Na coerência da sessão, você usa o token de sessão para operações de leitura e gravação.
Para operações de leitura, o Azure Cosmos DB envia o token de sessão armazenado em cache para o servidor com a garantia de recebimento de dados que correspondem ao token de sessão especificado (ou mais recente).
Para operações de gravação, o Azure Cosmos DB envia o token de sessão para o banco de dados com a garantia de persistir os dados somente se o servidor tiver pego o token de sessão fornecido. Em contas de gravação de região única, a região de gravação sempre tem a garantia de ter pego o token de sessão. No entanto, em contas de gravação de várias regiões, a região em que você grava pode não ter pego as gravações emitidas em outra região. Se o cliente gravar na Região A com um token de sessão da Região B, a Região A não poderá manter os dados até que atualize as alterações feitas na Região B.
É melhor usar tokens de sessão somente para operações de leitura e não para operações de gravação ao passar tokens de sessão entre instâncias de cliente.
Mitigar atualizações rápidas para o mesmo documento
As atualizações do servidor para resolver ou confirmar a ausência de conflitos podem colidir com gravações disparadas pelo aplicativo quando o mesmo documento é atualizado repetidamente. Atualizações repetidas em rápida sucessão para o mesmo documento experimentam latências mais altas durante a resolução de conflitos.
Embora intermitências ocasionais em atualizações repetidas para o mesmo documento sejam inevitáveis, considere explorar uma arquitetura em que novos documentos são criados, em vez disso, se o tráfego de estado estável vir atualizações rápidas para o mesmo documento durante um longo período.
Interrupções de leitura e gravação
Os clientes de contas de uma única região terá perda de disponibilidade de leitura e gravação até que o serviço seja restaurado.
As contas de várias regiões terão comportamentos diferentes dependendo das seguintes configurações e tipos de interrupção.
Configuração | Interrupção | Impacto na disponibilidade | Impacto na durabilidade | O que fazer |
---|---|---|---|---|
Região única de gravação | Paralisação da região de leitura | Todos os clientes redirecionam automaticamente as leituras para outras regiões. Não há perda de disponibilidade de leitura ou gravação para todas as configurações. A exceção é uma configuração de duas regiões com coerência forte, que perde a disponibilidade de gravação até a restauração do serviço. Ou, se você habilitar o failover gerenciado pelo serviço, o serviço marcará a região como com falha e ocorrerá um failover. | Sem perda de dados. | Durante a interrupção, verifique se há RUs (Unidades de Solicitação) suficientes provisionadas nas regiões restantes para dar suporte ao tráfego de leitura. Quando a interrupção terminar, ajuste novamente as RUs provisionadas conforme apropriado. |
Região única de gravação | Paralisação da região de gravação | Os clientes redirecionam as leituras para outras regiões. Sem o failover gerenciado pelo serviço, os clientes sofrem perda de disponibilidade de gravação. A restauração da disponibilidade de gravação ocorre automaticamente quando a interrupção termina. Com o failover de gerenciamento de serviço, os clientes terão perda de disponibilidade de gravação até que os serviços gerenciem um failover para uma nova região de gravação selecionada por você. |
Se você não selecionar o nível de coerência forte, o serviço poderá não replicar alguns dados para as regiões ativas restantes. Essa replicação depende do nível de coerência selecionado por você. Se a região afetada sofrer perda permanente de dados, os dados não replicados poderão ser perdidos. | Durante a interrupção, verifique se há RUs suficientes provisionadas nas regiões restantes para dar suporte ao tráfego de leitura. Não acione um failover manual durante a interrupção, pois isso não terá sucesso. Quando a interrupção terminar, ajuste novamente as RUs provisionadas conforme apropriado. As contas que usam APIs para NoSQL também podem recuperar os dados não replicados na região com falha do seu feed de conflitos. |
Várias regiões de gravação | Qualquer interrupção regional | Há uma possibilidade de perda de disponibilidade de gravação temporária, que é análoga a uma única região de gravação com failover gerenciado pelo serviço. O failover da região de resolução de conflitos também pode causar uma perda de disponibilidade de gravação se um alto número de gravações conflitantes ocorrer no momento da paralisação. | Os dados atualizados recentemente na região com falha podem ficar indisponíveis nas regiões ativas restantes, dependendo do nível de coerência selecionado. Se a região afetada sofrer perda permanente de dados, os dados não replicados poderão ser perdidos. | Durante a interrupção, verifique se há RUs suficientes provisionadas nas regiões restantes para dar suporte ao tráfego de leitura. Quando a interrupção terminar, você pode ajustar novamente as RUs provisionadas conforme apropriado. Se possível, o Azure Cosmos DB recupera automaticamente dados não replicados na região com falha. Essa recuperação automática usa o método de resolução de conflitos que você configura para contas que usam a API para NoSQL. Para contas que usam outras APIs, essa recuperação automática usa o metódo a última gravação vence. |
Informações adicionais sobre paralisações de área de leitura
A região afetada está desconectada e marcada como offline. Os SDKs do Azure Cosmos DB redirecionam as chamadas de leitura para a próxima região disponível na lista de regiões preferenciais.
Se nenhuma das regiões na lista de regiões preferenciais estiver disponível, as chamadas retornarão automaticamente à região de gravação atual.
Não é necessária nenhuma alteração no código do aplicativo para lidar com as interrupções da região de leitura. Quando a região de leitura afetada estiver novamente online, ela será sincronizada com a região de gravação atual e estará disponível novamente para atender às solicitações de leitura depois que ela estiver totalmente atualizada.
As próximas leituras são redirecionadas para a região recuperada sem exigir nenhuma alteração do código do aplicativo. Durante o failover e o reingresso de uma região anteriormente com falha, o Azure Cosmos DB continua a honrar as garantias de coerência de leitura.
Mesmo em um evento raro e infeliz em que uma região de gravação do Azure tornar-se permanentemente irrecuperável, não haverá perda de dados se a conta do Azure Cosmos DB de várias regiões estiver configurada com coerência forte. Uma conta do Azure Cosmos DB de várias regiões tem as características de durabilidade especificadas anteriormente na seção Durabilidade.
Informações adicionais sobre paralisações de área de gravação
Durante uma interrupção na região de gravação, a conta do Azure Cosmos DB promove uma região secundária para ser a nova região de gravação primária quando o failover gerenciado por serviço é configurado na conta do Azure Cosmos DB. O failover ocorrerá em outra região na ordem de prioridade de região especificada.
Observe que o failover manual não deve ser disparado e não terá sucesso na presença de uma interrupção da região de origem ou de destino. O motivo é que o procedimento de failover inclui uma verificação de consistência que requer conectividade entre as regiões.
Quando a região afetada anteriormente estiver novamente online, todos os dados de gravação que não foram replicados quando a região falhou serão disponibilizados por meio do feed de conflitos. Aplicativos podem ler o feed de conflitos, resolvê-los com base na lógica específica do aplicativo e gravar os dados atualizados de volta no contêiner do Azure Cosmos DB conforme apropriado.
Depois que a região de gravação afetada anteriormente for recuperada, ela será exibida como "online" no portal do Azure e ficará disponível como uma região de leitura. Nesse ponto, é seguro voltar para a região recuperada como a região de gravação usando [PowerShell, a CLI do Azure ou o portal do Azure](/azure/cosmos-db/how-to-manage-database-account#perform-manual-failover-on-an-azure-cosmos-db-account. Não há perda de dados ou disponibilidade antes, durante ou depois de alternar a região de gravação. O aplicativo continua sendo altamente disponível.
Aviso
No caso de uma interrupção da região de gravação, em que a conta do Azure Cosmos DB promove uma região secundária para ser a nova região de gravação primária por meio de failover gerenciado pelo serviço, a região de gravação original não será promovida de volta como a região de gravação automaticamente depois de recuperada. É sua responsabilidade alternar de volta para a região recuperada como a região de gravação usando o PowerShell, a CLI do Azure ou o portal do Microsoft Azure (uma vez que seja seguro fazê-lo, conforme descrito acima).
Detecção, notificação e gerenciamento de interrupção
Para contas de região única, os clientes experimentam uma perda de disponibilidade de leitura e gravação durante uma interrupção da região do Azure Cosmos DB. As contas de várias regiões terão comportamentos diferentes, conforme descrito na tabela a seguir.
Regiões de gravação | Failover gerenciado pelo serviço | O que esperar | O que fazer |
---|---|---|---|
Região única de gravação | não ativado | No caso de uma interrupção em uma região de leitura quando você não estiver usando coerência forte, todos os clientes serão redirecionados para outras regiões. Não há perda de disponibilidade de leitura ou gravação e não há perda de dados. Quando você usa coerência forte, uma interrupção em uma região de leitura pode afetar a disponibilidade de gravação se menos de duas regiões de leitura permanecerem. No caso de uma interrupção na região de gravação, os clientes terão perda de disponibilidade de gravação. Se você não selecionou a coerência forte, o serviço poderá não replicar alguns dados para as regiões ativas restantes. Essa replicação depende do nível de coerência selecionado. Se a região afetada sofrer perda permanente de dados, os dados não replicados poderão ser perdidos. O Azure Cosmos DB restaura a disponibilidade de gravação quando a interrupção termina. |
Durante a interrupção, verifique se há RUs suficientes provisionadas nas regiões restantes para dar suporte ao tráfego de leitura. Não acione um failover manual durante a interrupção, pois isso não terá sucesso. Quando a interrupção terminar, ajuste novamente as RUs provisionadas conforme apropriado. |
Região única de gravação | habilitado | No caso de uma interrupção em uma região de leitura quando você não estiver usando coerência forte, todos os clientes serão redirecionados para outras regiões. Não há perda de disponibilidade de leitura ou gravação e não há perda de dados. Quando você usa coerência forte, a interrupções de uma região de leitura pode afetar a disponibilidade de gravação se menos de duas regiões de leitura permanecerem. Se houver uma interrupção na região de gravação, os clientes sofrerão a perda da disponibilidade de gravação até que o Azure Cosmos DB eleja uma nova região como a nova região de gravação de acordo com suas preferências. Se você não selecionou a coerência forte, o serviço poderá não replicar alguns dados para as regiões ativas restantes. Essa replicação depende do nível de coerência selecionado. Se a região afetada sofrer perda permanente de dados, os dados não replicados poderão ser perdidos. |
Durante a interrupção, verifique se há RUs suficientes provisionadas nas regiões restantes para dar suporte ao tráfego de leitura. Não acione um failover manual durante a interrupção, pois isso não terá sucesso. Quando a interrupção terminar, você pode mover a região de gravação de volta para a região original e ajustar novamente as RUs provisionadas conforme apropriado. As contas que usam APIs para NoSQL também podem recuperar os dados não replicados na região com falha do seu feed de conflitos. |
Várias regiões de gravação | Não aplicável | Os dados atualizados recentemente na região com falha podem ficar indisponíveis nas regiões ativas restantes. Os níveis de coerência de sessão, eventual e de prefixo coerente garantem uma desatualização inferior a 15 minutos. A desatualização limitada garante menos de K atualizações ou T segundos, dependendo da configuração. Se a região afetada sofrer perda permanente de dados, os dados não replicados poderão ser perdidos. | Durante a interrupção, verifique se há RUs suficientes provisionadas nas regiões restantes para dar suporte ao tráfego de leitura. Quando a interrupção terminar, você pode ajustar novamente as RUs provisionadas conforme apropriado. Se possível, o Azure Cosmos DB recupera dados não replicados na região com falha. Essa recuperação usa o método de resolução de conflitos que você configura para as contas que utilizam a API para NoSQL. Para contas que utilizam outras APIs, essa recuperação usa last write wins. |
Testar a alta disponibilidade
Mesmo se a conta do Azure Cosmos DB estiver altamente disponível, o aplicativo poderá não ser corretamente projetado para permanecer altamente disponível. Para testar a alta disponibilidade de ponta a ponta do aplicativo como parte de seus testes de aplicativo ou simulações de DR (recuperação de desastre), desabilite temporariamente o failover gerenciado pelo serviço para a conta. Invoque o failover manual usando o PowerShell, a CLI do Azure ou o portal do Azure e monitore o failover do aplicativo. Depois de concluir o teste, você pode fazer o failback para a região primária e restaurar o failover gerenciado pelo serviço para a conta.
Importante
Não invoque o failover manual durante uma interrupção do Azure Cosmos DB na região de origem ou de destino. O failover manual requer conectividade de região para manter a coerência dos dados, portanto, não será bem-sucedido.