Назад | Перейти на главную страницу

Кластер ElasticSearch переходит на новый тип узла

У меня кластер из 8 узлов в ec2. 4 на каждую зону доступности с cluster.routing.allocation.awareness.attributes: aws_availability_zone Я хочу перенести все шарды на другой тип узла. Итак, я настроил новые узлы и добавил их в кластер. Некоторые шарды теперь перемещаются на новые узлы. Конечная цель - закрыть все старые узлы, при этом все шарды будут разделены между двумя узлами. Как лучше всего сделать это, не закрывая узлы один за другим и не размещая осколки на узлах, которые скоро будут закрыты?

РЕДАКТИРОВАТЬ: Я полагаю, что "cluster.routing.allocation.exclude._ip": "x.x.x.x, y.y.y.y, z.z.z.z" должно работать для меня?

Решение состоит в том, чтобы

curl -XPUT localhost:9200/_cluster/settings -d '{
    "transient" : {
        "cluster.routing.allocation.exclude._ip" : "172.31.3.53,172.31.32.44,172.31.32.43,172.31.41.155,172.31.41.152,172.31.15.219,172.31.6.166,172.31.15.72"
    }
}'

Получил из исходного кода на Github:

96 clusterExcludeFilters = DiscoveryNodeFilters.buildFromKeyValue (ИЛИ, excludeMap);

и

String [] values ​​= Strings.splitStringByCommaToArray (entry.getValue ());

так cluster.routing.allocation.exclude._ip может работать нормально, но вам может потребоваться принудительная перетасовка, но, честно говоря, лучший способ сделать это, когда новые узлы подключены к сети, - просто убить один старый узел. Кластер перейдет в yellow состояние, но он все равно будет работать

Если у вас есть активный осколок с одним резервным осколком. Желтый просто означает, что он не может сопоставить все резервные копии с активными или у резервной копии нет активных. Таким образом, он делает их заново, и вскоре кластер снова станет зеленым.

Таким образом я обновил живые производственные кластеры

Например, имейте 3 м3 больших члена кластера. Пригласите 3 новых участника m4.2xlarge. Убейте один m3.large и дождитесь, пока кластер станет зеленым. Затем повторите для последних двух m3.large. У меня никогда не было проблем