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

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

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

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

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

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

Исключения узла OpenSearch из кластера

Исключение узла из процесса аллокации

Используя ID узла, необходимо исключить из аллокации узел, с помощью команды:

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._id": ["<node_id>"]
}
}
Обратите внимание!

В версии OpenSearch 2.13 обнаружен баг, по инструкции выше команда выполнялась, но ничего не происходило. При указании нескольких узлов для исключения перечислите их id в одной строке, например, так:

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._id": "<node_id_1>,<node_id_2>,<node_id_3>"
}
}

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

Исключения узла OpenSearch из кластера

Ожидание переноса шардов

После исключения узла из аллокации запуститься процесс переноса шардов. Для того, чтобы проверить закончился процесс или нет, можно с помощью команды, представленной ниже (смотреть параметр relocating_shards, должен быть 0):

GET _cluster/health

Исключения узла OpenSearch из кластера

Проверка ошибок аллокации

После переноса шардов с исключенного узла, необходимо проверить на ошибки аллокации - все ли шарды корректно мигрировали и проинициализировались. Можно проверить с помощью команды:

GET _cluster/allocation/explain

Пример отсутствие ошибок аллокации

Если присутствуют ошибки аллокации

Для корректного исключения узла, необходимо исправить все ошибки аллокации. Ошибки могут быть разными начиная с неправильной настройки индекса (зачастую связано с количеством реплик) до повреждения шарда или всех найденных копий шардов, которые устарели.

После выполнения команды, представленной выше, отобразиться JSON-объект с информацией об ошибке (смотреть allocate_explanation и node_allocation_decisions.deciders.explanation).

Проверка настроек узла

Необходимо проверить список плагинов на удаляемом узле и убедиться, что после отключения узла от кластера не изменится работоспособность Smart Monitor.

Если на исключаемом узле в конфигурационном файле opensearch.yml присутствует настройка node_with_sme: true, то необходимо проверить на других узлах с ролью data (hot и warm, на узлах cold не настраивается данный параметр), присутствует ли данная настройка или нет. Если нет, то необходимо настроить на всех data-узлах.

Проверить, где какой плагин установлен можно командой:

GET _cat/plugins

Проверка настроек узла

Отключение аллокации

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

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

Отключение аллокации

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

После выключении аллокации кластера, можно остановить процесс 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

Включение аллокации

Очистка списка исключений узлов

После того, как кластер станет green, необходимо очистить список исключений ID узлов:

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._id": null
}
}

Очистка списка  исключений узлов