Как настроить локально высокодоступный кластер elasticsearch?

Я новичок в Elasticsearch и хочу настроить высокодоступный кластер Elasticsearch на одном компьютере, чтобы протестировать и узнать, как использовать Elasticsearch. Я надеюсь, что когда главный узел выйдет из строя, один из других узлов возьмет на себя управление и станет главным узлом. На своей машине я установил кластер Elasticsearch, состоящий из 3 узлов, главного узла и двух узлов данных, но когда я остановил главный узел, ни один из других узлов не занял свое место и не стал главным узлом, вот моя конфигурация для три узла (используемая версия elasticsearch - 7.9.2):

# master node config.

cluster.name:demo-cluster
node.name: "es-node-1"
node.master: true
node.data: false
discovery.zen.minimum_master_nodes: 2
#  data node 1 config.

cluster.name:demo-cluster
node.name: "es-node-2"
node.master: false
node.data: true
discovery.zen.minimum_master_nodes: 2
# data node 2 config.

cluster.name:demo-cluster
node.name: "es-node-3"
node.master: false
node.data: true
discovery.zen.minimum_master_nodes: 2

У кого-нибудь есть идея, пожалуйста?


person Ghiloufi    schedule 19.03.2021    source источник
comment
Если вы хотите попробовать изучить elasticsearch в первый раз, я бы посоветовал попробовать хостинговую версию компании за elasticsearch. Возьмите самый низкий тип машины, только в одной зоне, и его стоимость составит +/- 15 евро в месяц. Это значительно упростит настройку. Кроме того, у вас есть такие инструменты, как Kibana, которые очень легко использовать для исследования вашего кластера. elastic.co/pricing   -  person Sam    schedule 19.03.2021


Ответы (1)


Только один из ваших узлов имеет конфигурацию node.master: true, поэтому только этот узел может быть мастером. Если этот узел выйдет из строя, у вас не будет другого мастера, и ваш кластер не будет работать.

Вам необходимо установить для всех трех узлов значение node.master: true, таким образом, если главный узел выйдет из строя, два оставшихся узла в кластере выберут, кто будет новым мастером.

Кроме того, вы используете версию 7.X, в этой версии изменились настройки обнаружения и discovery.zen.minimum_master_nodes устарели, вы должны использовать discovery.seed_hosts и cluster.initial_master_nodes, как описано в документация.

discover.seed_hosts: ["es-node-1", "es-node-2", "es-node-3"]
cluster.initial_master_nodes: ["es-node-1", "es-node-2", "es-node-3"]

И для этого все ваши узлы должны иметь node.master: true в файле конфигурации. Это позволит вашему кластеру работать, если вы потеряете один узел.

person leandrojmp    schedule 19.03.2021
comment
Что произойдет, если я потеряю два узла, потому что я только что проверил, работает ли только один узел, мой кластер больше не будет доступен, даже если этот узел является одновременно главным и данным. - person Ghiloufi; 19.03.2021
comment
Это верно, если у вас есть кластер с тремя узлами, вы можете потерять только один узел, если вы потеряете еще один, ваш кластер будет недоступен. Вам необходим минимальный кворум узлов для голосования, чтобы ваш кластер продолжал работать, для кластера из 3 узлов это число равно 2. Подробнее о процессе голосования можно прочитать в документация - person leandrojmp; 19.03.2021