Исключение узла с ролью 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
}
}