Как называется процесс переключения на резервный узел (Replica) при отказе основного узла (Master) в системах с репликацией?

Ответ

Этот процесс называется Failover (переключение при отказе).

Failover — это автоматический процесс, при котором система обнаруживает отказ основного узла (Master) и назначает один из резервных узлов (Replica/Slave) новым основным узлом для обеспечения непрерывной работы сервиса.

Важно отличать его от Switchover — это плановое, управляемое администратором переключение ролей между узлами, например, для проведения технического обслуживания.

Ключевые этапы и проблемы Failover:


  1. Обнаружение сбоя (Failure Detection): Система должна надежно определить, что Master недоступен. Обычно это делается с помощью heartbeat-сигналов или health-check запросов.



  2. Выбор нового мастера (Leader Election): Резервные узлы должны договориться между собой, кто из них станет новым Master. Для этого используются алгоритмы консенсуса, такие как Raft или Paxos, чтобы избежать ситуации, когда несколько узлов одновременно считают себя мастерами.



  3. Перенастройка системы (Reconfiguration): Клиенты и остальные реплики должны быть уведомлены о новом Master, чтобы направлять запросы на запись по правильному адресу.



  4. Предотвращение Split-Brain: Это критическая проблема, когда из-за сбоя сети части системы изолируются друг от друга, и в каждой части выбирается свой Master. Это приводит к рассогласованию данных. Алгоритмы консенсуса и использование кворума помогают предотвратить Split-Brain.


В Go-приложениях логика failover обычно не пишется с нуля, а делегируется специализированным системам, таким как etcd, Consul, или встроенным механизмам баз данных (например, Patroni для PostgreSQL, Redis Sentinel).