При построении кластера Elasticsearch необходимо указывать количество мастер нод, необходимых для запуска кластера, для того что бы избежать проблемы Split Brain.
Split-brain - это когда в кластере имеется более одного главного узла (master ноды).
Количество мастер нод, для установки minimum_master_nodes, рассчитывается по формуле
minimum_master_nodes = <Количество мастер нод в кластере> / 2 + 1
При развертывании кластера, данный параметр указывается в файле /etc/elasticsearch/elasticsearch.yml, к примеру:
1 | discovery.zen.minimum_master_nodes: 1 |
Данный параметр прописывается в файле конфигурации /etc/elasticsearch/elasticsearch.yml при построении кластера, но при дальнейшем масштабировании могут появиться новые мастер ноды или уменьшиться их количество. Для изменения его в файле конфигурации потребуется изменить его на каждой ноде и перезапустить сервис Elasticsearch, что в большинстве случаев является не желательным, так как кластер и данные в нем будут не доступны, но и могут возникнуть другие проблемы с запуском.
Для изменения количества мастер нод в кластере, можно использовать следующий API метод
1 2 3 4 5 6 | curl -XPUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' { "persistent": { "discovery.zen.minimum_master_nodes": 2 } }' |
Данный параметр является более приоритетным, чем тот что указан в файле конфигурации.
Если при обновлении возникнет ошибка, аналогичная то что ниже, это означает что в кластере не достаточное количество мастер нод.
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"illegal value can't update [discovery.zen.minimum_master_nodes] from [1] to [2]"}],"type":"illegal_argument_exception","reason":"illegal value can't update [discovery.zen.minimum_master_nodes] from [1] to [2]","caused_by":{"type":"illegal_argument_exception","reason":"cannot set discovery.zen.minimum_master_nodes to more than the current master nodes count [1]"}},"status":400}