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