Проектирование отказоустойчивости
Распределенные системы, такие как Elasticsearch, разработаны для сохранения работоспособности даже при сбоях некоторых их компонентов. Пока существует достаточно хорошо связанных узлов, которые могут взять на себя их обязанности, кластер Elasticsearch может продолжать нормально функционировать, если некоторые из его узлов недоступны или отключены.
Существует предел того, насколько маленьким может быть отказоустойчивый кластер. Все кластеры Elasticsearch требуют следующих компонентов для работы:
- Один избранный мастер-узел
- По крайней мере, один узел для каждой роли
- По крайней мере, один экземпляр каждого фрагмента
Отказоустойчивый кластер требует избыточности для каждого необходимого компонента кластера. Это означает, что отказоустойчивый кластер должен иметь следующие компоненты:
- По крайней мере, три узла, способные быть мастерами
- По крайней мере, два узла каждой роли
- По крайней мере, два экземпляра каждого фрагмента (один первичный и один или более реплик, если индекс не является индексом для поиска снимков)
Отказоустойчивый кластер нуждается в трех узлах, способных быть мастерами, чтобы, если один из них выйдет из строя, оставшиеся два все еще составляли большинство и могли успешно провести выборы.
Аналогичным образом, избыточность узлов каждой роли означает, что если узел для определенной роли выйдет из строя, другой узел может взять на себя его обязанности.
Наконец, отказоустойчивый кластер должен иметь по крайней мере два экземпляра каждого фрагмента. Если один из экземпляров выйдет из строя, должен быть другой работоспособный экземпляр, который сможет его заменить. Elasticsearch автоматически восстанавливает любые вышедшие из строя копии фрагментов на оставшихся узлах, чтобы вернуть кластер в полную работоспособность после сбоя.
Сбои временно снижают общую емкость вашего кластера. Кроме того, после сбоя кластер должен выполнить дополнительные фоновые задачи, чтобы восстановить работоспособность. Вы должны убедиться, что ваш кластер обладает емкостью для обработки вашей рабочей нагрузки даже если некоторые узлы выйдут из строя.
В зависимости от ваших потребностей и бюджета, кластер Elasticsearch может состоять из одного узла, сотен узлов или любого количества между ними. При проектировании небольшого кластера, как правило, следует сосредоточиться на обеспечении отказоустойчивости к сбоям одного узла. Разработчики больших кластеров также должны учитывать случаи одновременного выхода из строя нескольких узлов. На следующих страницах приведены некоторые рекомендации по построению отказоустойчивых кластеров различных размеров:
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/high-availability-cluster-design.html