Aqui está como o Redis Cluster lida com falhas de nós:
Failover automático
Quando um nó mestre do cluster Redis falha, o cluster promoverá automaticamente um dos nós de réplica desse mestre para se tornar o novo mestre. Este processo de failover acontece automaticamente, sem qualquer intervenção manual.
As principais etapas do processo de failover são:
1. Os outros nós do cluster detectam que o nó mestre falhou, seja por meio do protocolo de fofoca do cluster ou pela tentativa de conexão com o nó.
2. O cluster então realiza uma eleição entre os nós de réplica desse mestre. A réplica com os dados mais atualizados é eleita como o novo mestre.
3. O nó de réplica eleito é promovido para se tornar o novo mestre. As outras réplicas são então reconfiguradas para replicar a partir do novo mestre.
4. Os clientes são redirecionados para o novo nó mestre usando a resposta de erro `MOVED`, que contém o novo mapeamento de slot para nó.
Cobertura de slots
Para permanecer disponível durante falhas de nós, o Redis Cluster exige que a maioria dos nós mestres esteja disponível e seja capaz de se comunicar. Isto é conhecido como manutenção da "cobertura de slots".
Cada nó mestre no cluster é responsável por um subconjunto dos 16.384 slots de hash. Enquanto a maioria dos mestres estiver disponível e puder atender aos slots atribuídos, o cluster poderá continuar a operar.
Se muitos nós mestres falharem, de modo que os mestres restantes não consigam cobrir todo o intervalo de slots de hash, o cluster ficará indisponível até que os nós com falha se recuperem ou sejam substituídos.
Promoção de réplica
O Redis Cluster depende de nós de réplica para fornecer alta disponibilidade. Quando um mestre falha, um de seus nós de réplica é automaticamente promovido para se tornar o novo mestre.
A réplica com os dados mais atualizados é eleita como o novo mestre. Isso garante que a consistência dos dados seja mantida durante o processo de failover.
Lidando com cérebro dividido
O Redis Cluster usa uma abordagem baseada em quorum para lidar com partições de rede e evitar cenários de “cérebro dividido”, onde o cluster é dividido em vários clusters independentes.
Se a maioria dos mestres ficar indisponível, os nós restantes recusarão as solicitações dos clientes até que a partição seja resolvida. Isso garante que a consistência dos dados seja preservada.
Ao aproveitar esses mecanismos de failover automático e baseados em quórum, o Redis Cluster é capaz de fornecer alta disponibilidade e resiliência diante de falhas de nós e partições de rede.
Citações:[1] https://yifan-online.com/en/km/article/detail/16750
[2] https://stackoverflow.com/questions/63878562/two-failure-support-in-3-node-redis-cluster
[3] https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/
[4] https://redis.io/docs/latest/commands/cluster-nodes/
[5] https://github.com/lettuce-io/lettuce-core/issues/2318