Alta disponibilidade e réplicas

Esta página explica como a arquitetura do Memorystore para Valkey oferece e oferece suporte à alta disponibilidade (HA). Esta página também explica como melhorar o desempenho e a estabilidade da instância com as configurações de alta disponibilidade recomendadas.

Alta disponibilidade

O Memorystore para Valkey é criado em uma arquitetura de alta disponibilidade em que os clientes acessam diretamente os nós gerenciados do serviço. Para isso, os clientes se conectam a endpoints individuais, conforme descrito em Conectar-se a uma instância do Memorystore for Valkey.

A conexão direta com fragmentos oferece os seguintes benefícios:

  • A conexão direta evita saltos intermediários, o que minimiza o tempo de ida e volta (latência do cliente) entre o cliente e o nó do Memorystore for Valkey.

  • No modo de cluster ativado, a conexão direta evita qualquer ponto único de falha, porque cada fragmento é projetado para falhar de forma independente. Por exemplo, se o tráfego de vários clientes sobrecarregar um slot (pedaço do keyspace), a falha de fragmento vai limitar o impacto ao fragmento responsável por atender ao slot.

Recomendamos que você crie instâncias multizona de alta disponibilidade em vez de instâncias de zona única devido à maior confiabilidade que elas oferecem. No entanto, se você provisionar uma instância sem réplicas, recomendamos escolher uma instância de zona única. Para mais informações, consulte Quando usar uma instância de zona única.

Para ativar a alta disponibilidade da instância, provisione pelo menos uma réplica para cada fragmento. Você pode fazer isso ao criar a instância ou escalonar a contagem de réplicas para pelo menos uma réplica por fragmento. As réplicas oferecem failover automático durante a manutenção planejada e falhas inesperadas de fragmentos.

Recomendamos que você configure seu cliente de acordo com as orientações em Práticas recomendadas para clientes. Usar as práticas recomendadas permite que seu cliente processe automaticamente e sem tempo de inatividade os seguintes itens da sua instância:

  • A função (failovers automáticos)
  • O endpoint (substituição de nó)
  • Mudanças na atribuição de slots relacionadas ao modo de cluster ativado (escalonar horizontalmente e redução horizontal do consumidor)

Réplicas

Uma instância altamente disponível do Memorystore para Valkey é um recurso regional. O Memorystore for Valkey distribui as VMs primárias e de réplica de fragmentos em várias zonas para proteger contra uma interrupção zonal. O Memorystore for Valkey aceita instâncias com 0 a 5 réplicas por fragmento.

É possível usar réplicas para aumentar a capacidade de leitura, mas isso pode causar defasagem nos dados.

  • Modo de cluster ativado:use o comando READONLY para estabelecer uma conexão que permita ao cliente ler das réplicas.
  • Modo de cluster desativado:conecte-se ao endpoint de leitura para acessar qualquer uma das réplicas disponíveis.

Exemplos de instâncias com o modo de cluster ativado

Os diagramas a seguir ilustram exemplos de instâncias com o modo de cluster ativado:

Exemplo de instância com três fragmentos e zero réplicas por fragmento

Uma instância do Memorystore para Valkey no modo de cluster ativado sem réplicas por fragmento e nós divididos igualmente em três zonas.

Exemplo de instância com três fragmentos e uma réplica por fragmento

Uma instância do Memorystore para Valkey com o modo de cluster ativado, uma réplica por fragmento e nós divididos igualmente em três zonas.

Exemplo de instância com três fragmentos e várias réplicas por fragmento

Uma instância do Memorystore for Valkey com o modo de cluster ativado, várias réplicas por fragmento e nós divididos uniformemente em três zonas.

Exemplos de instâncias com o modo de cluster desativado

O diagrama a seguir ilustra um exemplo de instâncias com o modo de cluster desativado:

Exemplo de instância com várias réplicas

Uma instância do Memorystore para Valkey com o modo de cluster desativado, várias réplicas e nós divididos igualmente em três zonas.

Failover automático

Os failovers automáticos em um fragmento podem ocorrer devido a manutenção ou a uma falha inesperada do nó principal. Durante um failover, uma réplica é promovida para ser a principal. É possível configurar réplicas explicitamente. O serviço também pode provisionar temporariamente réplicas extras durante a manutenção interna para evitar inatividade.

Os failovers automáticos evitam a perda de dados durante as atualizações de manutenção. Para mais informações sobre o comportamento de failover automático durante a manutenção, consulte Comportamento de failover automático durante a manutenção.

Duração do failover e do reparo de nós

Os failovers automáticos podem levar dezenas de segundos para eventos não planejados, como uma falha no processo do nó principal ou uma falha de hardware. Durante esse período, o sistema detecta a falha e elege uma réplica para ser a nova primária.

O reparo de nós pode levar alguns minutos para que o serviço substitua o nó com falha. Isso é válido para todos os nós primários e de réplica. Para instâncias que não são de alta disponibilidade (sem réplicas provisionadas), o reparo de um nó principal com falha também leva tempo, da ordem de minutos.

Comportamento do cliente durante um failover não planejado

As conexões do cliente provavelmente serão redefinidas, dependendo da natureza da falha. Após a recuperação automática, tente novamente suas conexões com espera exponencial para evitar sobrecarga nos nós primários e de réplica.

Os clientes que usam réplicas para capacidade de processamento de leitura podem ter uma degradação temporária na capacidade até que o nó com falha seja substituído automaticamente.

Gravações perdidas

Durante um failover resultante de uma falha inesperada, as gravações confirmadas podem ser perdidas devido à natureza assíncrona do protocolo de replicação do Valkey.

Os aplicativos cliente podem usar o comando WAIT do Valkey para melhorar a segurança dos dados no mundo real.

Impacto do keyspace de uma falha temporária de zona única

Esta seção descreve o impacto de uma interrupção de zona única em uma instância do Memorystore for Valkey.

Instâncias multizonais

  • Instâncias de alta disponibilidade:se uma zona tiver uma interrupção, todo o espaço de chaves estará disponível para leitura e gravação, mas como algumas réplicas de leitura estão indisponíveis, a capacidade de leitura será reduzida. Recomendamos o provisionamento excessivo da capacidade do cluster para que a instância tenha capacidade de leitura suficiente, no raro caso de uma interrupção em uma única zona. Quando a falha temporária terminar, as réplicas na zona afetada serão restauradas e a capacidade de leitura do cluster voltará ao valor configurado. Para mais informações, consulte Padrões para apps escalonáveis e confiáveis.

  • Instâncias não HA (sem réplicas): se uma zona tiver uma interrupção, a parte do keyspace provisionada na zona afetada passará por uma limpeza de dados e ficará indisponível para gravações ou leituras durante a interrupção. Quando a interrupção terminar, as instâncias principais na zona afetada serão restauradas, e a capacidade do cluster voltará ao valor configurado.

Instâncias de zona única

  • Instâncias de alta disponibilidade e não alta disponibilidade:se a zona em que a instância é provisionada tiver uma interrupção, o cluster ficará indisponível e os dados serão liberados. Se uma zona diferente tiver uma interrupção, o cluster vai continuar atendendo às solicitações de leitura e gravação.

Práticas recomendadas

Esta seção descreve as práticas recomendadas para alta disponibilidade e réplicas.

Adicionar uma réplica

Adicionar uma réplica exige um snapshot do RDB. Os snapshots do RDB usam um fork de processo e um mecanismo de cópia na gravação para criar um snapshot dos dados do nó. Dependendo do padrão de gravações nos nós, a memória usada dos nós aumenta à medida que as páginas afetadas pelas gravações são copiadas. A ocupação de memória pode ser até o dobro do tamanho dos dados no nó.

Para garantir que os nós tenham memória suficiente para concluir o snapshot, mantenha ou defina maxmemory em 80% da capacidade do nó para que 20% sejam reservados para sobrecarga. Essa sobrecarga de memória, além dos snapshots de monitoramento, ajuda você a gerenciar sua carga de trabalho para ter snapshots bem-sucedidos. Além disso, ao adicionar réplicas, reduza o tráfego de gravação o máximo possível. Para mais informações, consulte Monitorar o uso da memória de uma instância.