Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як Redis Cluster обробляє збої вузлів


Як Redis Cluster обробляє збої вузлів


Ось як Redis Cluster обробляє збої вузлів:

Автоматичне перемикання після відмови

Коли головний вузол Redis Cluster виходить з ладу, кластер автоматично підвищить один із вузлів-реплік для цього головного, щоб стати новим головним. Цей процес відновлення після відмови відбувається автоматично без будь-якого ручного втручання.

Ключові кроки в процесі відновлення після відмови:

1. Інші вузли в кластері виявляють, що головний вузол вийшов з ладу, або через протокол переговорів кластера, або шляхом спроби підключитися до вузла.

2. Потім кластер проводить вибори серед вузлів-реплік для цього головного. Репліка з найновішими даними обирається новим майстром.

3. Вибраний вузол-репліка стає новим головним. Потім інші репліки перенастроюються для реплікації з нового головного.

4. Клієнти перенаправляються до нового головного вузла за допомогою відповіді про помилку `MOVED`, яка містить нове зіставлення слота з вузлом.

Покриття слотів

Щоб залишатися доступним під час збоїв вузлів, Redis Cluster вимагає, щоб більшість головних вузлів були доступні та могли спілкуватися. Це відомо як підтримка "покриття слотів".

Кожен головний вузол у кластері відповідає за підмножину з 16 384 хеш-слотів. Поки більшість майстрів доступні та можуть обслуговувати призначені їм слоти, кластер може продовжувати працювати.

Якщо надто багато головних вузлів виходить з ладу, так що інші головні вузли не можуть покрити повний діапазон геш-слотів, кластер стане недоступним, доки несправні вузли не відновляться або не будуть замінені.

Репліка просування

Redis Cluster покладається на репліки вузлів для забезпечення високої доступності. Коли майстер виходить з ладу, один із його реплік вузлів автоматично стає новим головним.

Репліка з найновішими даними обирається новим майстром. Це забезпечує узгодженість даних під час процесу відновлення після відмови.

Керування Split-Brain

Redis Cluster використовує підхід на основі кворуму для обробки мережевих розділів і уникнення сценаріїв «розділеного мозку», коли кластер ділиться на кілька незалежних кластерів.

Якщо більшість майстрів стають недоступними, решта вузлів відхилятимуть запити клієнтів, доки розділ не буде вирішено. Це гарантує збереження узгодженості даних.

Використовуючи ці механізми автоматичного відновлення після відмови та кворуму, Redis Cluster може забезпечити високу доступність і стійкість у разі збоїв вузлів і мережевих розділів.

цитати:
[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