Перейти к основному содержимому
Версия: 4.1

Исключение узла с ролью master

Обратите внимание!

Исключать узел с ролью master можно только в том случае, если их общее количество четное. Другими словами, кластер должен состоять из нечетного числа узлов с ролью master для избежания возможных конфликтов между узлами.

Для исключения узла из кластера нужно выполнить пункты, представленные в разделах ниже.

Определение название узла

Необходимо получить название узла, который планируется исключить. Для этого нужно выполнить следующую команду:

GET _cat/nodes?v&full_id&h=name,id,ip

Отключение узла из процесса голосования

Просто отключить роль master нельзя, требуется сначала отключить удаляемый узел из процесса голосования. Используя название node, необходимо выполнить команду:

POST _cluster/voting_config_exclusions?node_names=<node_name>

где <node_name> - это название узла, который необходимо исключить.

Вывода результата работы команда не имеет. После ввода команды нужно подождать 30 секунд, потому что исключается узел не моментально. Убедитесь, что главным стал другой узел - после выполнения команды, представленной ниже, в выводе отобразиться информация о главном узле:

GET _cat/cluster_manager

Изменение конфигураций OpenSearch

Перед выключением master узла, необходимо изменить конфигурацию OpenSearch на каждом узле. Но перед этим необходимо выключить аллокацию кластера, чтобы не повредить и не потерять данные, для этого нужно выполнить команду:

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}

ОБРАТИТЕ ВНИМАНИЕ!

Следующие шаги необходимо выполнить на всех узлах кластера.

  • Нужно отредактировать параметр discovery.seed_hosts в файле /app/opensearch/config/opensearch.yml, необходимо оставить только IP-адреса тех узлов, которые имеют роль master.
  • Перезагрузите службу OpenSearch:
    systemctl restart opensearch

И дождитесь когда узел подключится к кластеру:

GET _cat/nodes

Остановка службы и бэкап конфига удаленного узла

После выключении аллокации кластера, можно остановить процесс OpenSearch удаленного узла:

systemctl stop opensearch

И для безопасности, необходимо сделать бэкап директории с конфигурациями OpenSearch:

sudo cp -r /app/opensearch/config /app/os_conf_backup

Включение аллокации кластера

Необходимо обратно включить аллокацию кластера:

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}

И после дождаться, когда кластер примет статус green:

GET _cluster/health

Очистка исключений

Поскольку ранее мы добавили узел в исключения, теперь надо его оттуда удалить. Для начала, проверьте есть ли в списке удаленный узел:

GET _cluster/state?filter_path=metadata.cluster_coordination.voting_config_exclusions

Если в поле voting_config_exclusions присутствует узел, который был исключен, то необходимо выполнить команду:

DELETE _cluster/voting_config_exclusions?wait_for_removal=false

Теперь снова проверьте что в поле voting_config_exclusions отсутствует удаленный узел и состояние кластера green:

GET _cluster/state?filter_path=metadata.cluster_coordination.voting_config_exclusions
GET _cluster/health