Доброго времени суток!
Исходная такова, есть elasticsearch 7.2 в режиме single-node, с данными.
Необходимо создать географически распределенный отказоустойчивый кластер из 2х мастер/дата нод и одной мастер ноды.
Прошу совета, как лучше реализовать перенос данных в кластер с минимальным перерывом в работе сервиса?
Представляю следующую последовательность действий:
-перевести имеющуюся single-node в режим кластера, сделав её master и data-node одновременно
-создать чистую master/data-node и чистую master node
добавить их в кластер
Корректен ли сценарий? Возможна ли корректная репликация данных на вторую мастер/дата ноду?
Игорь, благодарю за ответ!
Хорошо, отставить географическое распределение. В таком случае такой вопрос, возможно ли ввести вторую ноду в кластер, с целью организации отказоустойчивости в рамках одного ЦОДа? Как синхронизировать индексы из первой во вторую ноду?
Зависит от того, какой уровень отказоустойчивости вам необходим. Если у вас будет мастер узел и два узла данных, то потеря мастер узла приведет к потере способности записи в кластер, но потеря одного узла данных на доступность данных не повлияет (хотя производительность кластера упадет на половину).
Другая альтернатива с 3-я узлами - это сделать их все узлами данных и мастерами. Такой кластер будет способен пережить отказ любого с 30% потерей в производительности. Одна проблема с этой конфигурацией - это перегрузка узла данных может оказывать влияние на мастер узел, что не очень желательно, поэтому мы и советуем отдельные мастер узлы. Но в вашем случае вы увеличиваете производительность кластера в 3 раза.
Ресурсы на 3 узла данных будет сложно получить. Потому я склоняюсь к следующей схеме: 2 узла одновременно мастер и дата ноды, в дополнение к ним, третий узел - только мастер, для обеспечения механизма выборов.
Идея с двумя дата узлами и тремя мастер узлами кажется избыточной по ресурсам, но очень интересна, было бы интересно, если бы вы пояснили, при каких сценариях перезагрузка дата/мастер ноды может повлиять на масетр ноду? Где то можно прочитать описание таких сценариев?
В большей степени меня интересует алгоритм репликации данных на другие ноды, не подскажете, как это лучше реализовать?
Например операции поиска и/или индексации заполнили все оперативную память и мастер не может выполнять свои функции. Мы добавили многочисленные меры защиты от такой ситуации, но она все еще может произойти.
добавить вторую (и третью) ноду в кластер и убедиться, что у текущей ноду есть связь с новыми нодоами и они сформировали единый кластер. В зависимости от версии и дистрибутива, это может потребовать настройки TLS/SSL
На индексах для которых требуется реплицирование надо поставить "number_of_replicas": 1. Это можно сделать через Update Index Settings API
все. теперь надо подождать немного пока кластер перераспределит данные по всем (двум) доступным нодам данных.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.