Я не использовал AWS Elasticsearch, но я использовал службу Cloud Elasticsearch.
Когда вы используете 3 AZ (зоны доступности), это означает, что ваш кластер будет использовать 3 зоны, чтобы сделать его упругим. Если у одной зоны есть проблемы, то у узлов этой зоны также будут проблемы.
Как упоминается в разделе описания, вам нужно указать кратные 3, если вы выберете 3 AZ. Если у вас есть 3 узла, то каждый AZ будет иметь одну зону. Если в одной зоне есть проблемы, то этот узел отсутствует, две оставшиеся оттуда придется забрать.
Теперь, чтобы ответить на ваш вопрос. Что вы получаете с этими конфигурациями. Вы можете проверить это самостоятельно. Используйте это через kibana или любой HTTP-клиент
GET _nodes
Проверьте разделы:
- node.roles
- node.attributes
В различных документах, публикациях в блогах и т. Д. c вы увидите, что для производственного использования 3 узла и 3 AZ являются хорошей отправной точкой для создания отказоустойчивого производственного кластера.
Итак, давайте возьмем его шаг за шагом:
- Вам нужно четное количество мастер-узлов, чтобы избежать проблемы расщепления мозга .
- Вам нужно более одного узла в вашем кластера, чтобы сделать его устойчивым (если узел недоступен).
Комбинируя эти два, вы получаете минимальное требование 3 узла (пока нет упоминания зон).
Но, имея один мастер и два узла данных, он не обрезается. Вам необходимо иметь 3 узла, отвечающих требованиям мастера. Таким образом, если у вас есть один вышедший узел, два других по-прежнему могут формировать кворум и голосовать за нового мастера, поэтому ваш кластер будет работать с двумя узлами. Но для того, чтобы это работало, вам нужно настроить свои основные сегменты и фрагменты реплики таким образом, чтобы любые два из ваших узлов могли хранить все ваши данные.
Примеры (для простоты у нас есть только один индекс):
- 1 первичная, 2 реплики. Каждый узел содержит один осколок, который составляет 100% данных
- 3 основных цвета, 1 реплика. Каждый узел будет содержать одну первичную и одну реплику (33% первичной, 33% реплики). Два объединенных узла (что также является минимумом для формирования кворума) будут содержать все ваши данные (и некоторые другие)
У вас может быть больше комбинаций, но вы поймете идею.
Как видите, конфигурация сегмента должна составлять go вместе с вашим числом и типом узлов (для доступа к мастеру, только для данных и т. Д. c).
Теперь, если вы добавите зоны доступности, вы позаботитесь о том, чтобы проблема одной зоны была проблематичной c. Если ваш кластер целиком находился в одной зоне (3 узла в одном узле), то если эта зона была проблемной c, то весь ваш кластер отсутствует.
Если вы настроите один мастер-узел и два узла данных (которые не подходят для мастер-класса), наличие 3 AZ (или даже 3-х узлов) не сильно повлияет на отказоустойчивость, так как, если мастер отключится, ваш кластер не может выбрать новый, и он будет отключен до тех пор, пока мастер-узел снова не заработает. Теперь для той же настройки, если узел данных выходит из строя, тогда, если ваши сегменты сконфигурированы таким образом, что существует избыточность (то есть, что два оставшихся узла имеют все данные, если объединены), тогда он будет работать нормально.