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