Организация безопасного кластера

Начнем с одной ноды. Если эта нода падает - все пропало.

Добавляем вторую ноду. Если одна из нод падает - то все хорошо вторая нода становится (или остается) мастером и все работает. Однако, если нода не падает, а вместо этого теряет связь с первой - у нас получается сплит брейн и потеря данных, что не хорошо. Чтобы решить эту проблему ставим minimum_master_node: 2. Теперь если одна из нод падает или отделяется обе ноды перестают быть мастерами, и кластер переходим в режим только для чтение. Это лучше, чем сплит брейн, но не идеально.

Добавляем третью ноду и оставляем minimum_master_node: 2. Теперь если одна из нод отделяется или падает, две других все еще могут избрать мастера, потому что их 2. То есть все работает при потере одного сервера. Мы можем писать и читать. Но кто-то нам говорить, что это плохой тон. Почему? Дело в том, что у нас мастера в данной архитектуре работают как мастера, так и сервера данных. Поэтому если перегрузка по поисковому или индексному трафику может перегрузить мастера и вызвать нестабильность в кластере. Как это исправить?

Начинаем и одной дата ноды (выключаем на ней роль мастера), добавляем другую дата ноду, и 3 слабеньких мастер-ноды. Теперь у нас есть защита от падения любой ноды. Если падает нода с данными - у нас есть вторая. Если падает мастер - у нас есть еще две. Идеальный вариант, но стоит ли он того - зависит от бюджета, от того на сколько вы склоны к рискам, и от стабильность вашего трафика.

1 Like