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

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

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

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

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

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

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

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

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._id": ["<node_id>"]
}
}

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

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

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

GET _cluster/health

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

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

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
}
}