Создание кластера Elasticsearch 7.2 из single-node с сохранением данных

Доброго времени суток!
Исходная такова, есть elasticsearch 7.2 в режиме single-node, с данными.
Необходимо создать географически распределенный отказоустойчивый кластер из 2х мастер/дата нод и одной мастер ноды.

Прошу совета, как лучше реализовать перенос данных в кластер с минимальным перерывом в работе сервиса?

Представляю следующую последовательность действий:
-перевести имеющуюся single-node в режим кластера, сделав её master и data-node одновременно
-создать чистую master/data-node и чистую master node

  • добавить их в кластер

Корректен ли сценарий? Возможна ли корректная репликация данных на вторую мастер/дата ноду?

Elasticsearch не поддерживает географическое распределение внутри кластера. Тут надо смотреть в сторону CCR.

1 Like

Игорь, благодарю за ответ!
Хорошо, отставить географическое распределение. В таком случае такой вопрос, возможно ли ввести вторую ноду в кластер, с целью организации отказоустойчивости в рамках одного ЦОДа? Как синхронизировать индексы из первой во вторую ноду?

Зависит от того, какой уровень отказоустойчивости вам необходим. Если у вас будет мастер узел и два узла данных, то потеря мастер узла приведет к потере способности записи в кластер, но потеря одного узла данных на доступность данных не повлияет (хотя производительность кластера упадет на половину).

Другая альтернатива с 3-я узлами - это сделать их все узлами данных и мастерами. Такой кластер будет способен пережить отказ любого с 30% потерей в производительности. Одна проблема с этой конфигурацией - это перегрузка узла данных может оказывать влияние на мастер узел, что не очень желательно, поэтому мы и советуем отдельные мастер узлы. Но в вашем случае вы увеличиваете производительность кластера в 3 раза.

1 Like

Ресурсы на 3 узла данных будет сложно получить. Потому я склоняюсь к следующей схеме: 2 узла одновременно мастер и дата ноды, в дополнение к ним, третий узел - только мастер, для обеспечения механизма выборов.
Идея с двумя дата узлами и тремя мастер узлами кажется избыточной по ресурсам, но очень интересна, было бы интересно, если бы вы пояснили, при каких сценариях перезагрузка дата/мастер ноды может повлиять на масетр ноду? Где то можно прочитать описание таких сценариев?

В большей степени меня интересует алгоритм репликации данных на другие ноды, не подскажете, как это лучше реализовать?

Например операции поиска и/или индексации заполнили все оперативную память и мастер не может выполнять свои функции. Мы добавили многочисленные меры защиты от такой ситуации, но она все еще может произойти.

https://discuss.elastic.co/search?q=overloaded%20master%20order%3Alatest

и

  1. добавить вторую (и третью) ноду в кластер и убедиться, что у текущей ноду есть связь с новыми нодоами и они сформировали единый кластер. В зависимости от версии и дистрибутива, это может потребовать настройки TLS/SSL
  2. На индексах для которых требуется реплицирование надо поставить "number_of_replicas": 1. Это можно сделать через Update Index Settings API
  3. все. теперь надо подождать немного пока кластер перераспределит данные по всем (двум) доступным нодам данных.
1 Like

Премного благодарен за ответы!