У меня есть кластер Elasticsearch (v5.6.10) с 3 узлами.
- Узел A: мастер
- Узел B: мастер + данные
- Узел C: Master + Data
В каждом узле данных по 6 сегментов с репликацией равной 1. Все 6 основных узлов находятся в узле B, а все 6 реплик находятся в узле C.
Мое требование - вынуть узел B, выполнить некоторые работы по техническому обслуживанию и вернуть его в кластер без простоев.
Я проверил elasti c документацию, дискуссионный форум и вопросы stackoverflow. Я обнаружил, что сначала должен выполнить приведенный ниже запрос, чтобы выделить сегменты на этом узле для остальных узлов.
curl -XPUT localhost:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
"transient" :{
"cluster.routing.allocation.exclude._ip" : <Node B IP>
}
}';echo
После того, как все сегменты были перераспределены, я могу отключить узел и выполнить техническое обслуживание. Работа. Как только я закончу, мне нужно снова включить узел для выделения, и Elasticsearch снова перебалансирует шарды.
Теперь я также нашел другое обсуждение, где пользователь столкнулся с проблемой здоровья желтого / красного кластера из-за наличия только один узел данных, но ошибочно устанавливая репликацию как один, вызывая неназначенные шарды. Мне кажется, что, выполняя это упражнение, я направляю свой кластер к этому состоянию.
Итак, меня беспокоит то, следую ли я правильным путем, имея в виду, что все мои основные осколки находятся в узле (Узел B ) который я вынимаю из кластера с коэффициентом репликации 1.