Стоп-старт экземпляра эластичного поиска, имеющего все первичные осколки - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть кластер 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.

1 Ответ

0 голосов
/ 20 февраля 2020
  1. Имея только два узла данных и вы хотите закрыть один, вы не сможете перераспределить шарды. Elasticsearch никогда не размещает первичные фрагменты и фрагменты реплики в одних и тех же узлах; это не увеличит доступность и производительность и увеличит только дисковое пространство. Таким образом, ваша команда перераспределения здесь не принесет никакой пользы, так как осколки нельзя никуда переместить.
  2. Выполните синхронизированный грипп sh, а затем упорядоченное отключение узла . Осколки реплики на оставшемся узле будут автоматически преобразованы в первичные осколки. Ваш кластер будет go желтым, пока другой узел не присоединится снова, но в вашем сценарии нет способа обойти его (не будучи ни хаком, ни излишним). Но это нормально - если у вас всегда есть реплика, она будет находиться на другом узле, и ваш кластер будет работать должным образом.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...