ElasticSearch — добавить узел данных в существующий кластер. Какова наилучшая практика?

#elasticsearch

#elasticsearch

Вопрос:

У меня запущен кластер Elasticsearch, он содержит 3 главных узла и 5 узлов данных. Версия 7.6.0.

Конфигурация основных узлов выглядит следующим образом:

 cluster.name: es-cluster
node.name: master-0[1-3]
bootstrap.memory_lock: true
node.master: true
node.voting_only: false
node.data: false
node.ingest: false
node.ml: false
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
http.port: 9200
network.host: 0.0.0.0
discovery.seed_hosts:
   - IP-master-01:9300
   - IP-master-02:9300
   - IP-master-03:9300
   - IP-data-01:9300
   - IP-data-02:9300
   - IP-data-03:9300
   - IP-data-04:9300
   - IP-data-05:9300
  

Конфигурация узлов данных:

 cluster.name: es-cluster
node.name: data-0[1-5]
bootstrap.memory_lock: true
node.data: true
node.master: false
node.voting_only: false
node.ingest: false
node.ml: false
cluster.remote.connect: false
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
http.port: 9200
network.host: 0.0.0.0
discovery.seed_hosts:
   - IP-master-01:9300
   - IP-master-02:9300
   - IP-master-03:9300
   - IP-data-01:9300
   - IP-data-02:9300
   - IP-data-03:9300
   - IP-data-04:9300
   - IP-data-05:9300
  

Я собираюсь добавить новый узел данных. Пожалуйста, помогите мне понять наилучшую практику добавления узла в существующий кластер ES.

Вопрос касается обнаружения параметра.seed_hosts. Насколько я понимаю, он должен быть одинаковым для всех узлов ES, поэтому в моем случае это означает, что я должен добавить это:

    - IP-data-06:9300
  

в discovery.seed_hosts всех узлов ES (конечно, включая вновь созданный узел).

Но означает ли это, что я должен перезапустить все остальные узлы после добавления 6-го узла данных? В противном случае, как одна и та же конфигурация будет применяться ко всем узлам ES? Или, может быть, то же самое discovery.seed_hosts для всех узлов вообще не важно?

Заранее спасибо за разъяснение.

Ответ №1:

Вы допускаете небольшую ошибку, в discovery.seed_hosts нем должны быть только узлы, отвечающие требованиям master, а не все узлы.

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

Просто используйте эту конфигурацию во всех ваших узлах данных.

 cluster.name: es-cluster
node.name: data-X
bootstrap.memory_lock: true
node.data: true
node.master: false
node.voting_only: false
node.ingest: false
node.ml: false
cluster.remote.connect: false
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
http.port: 9200
network.host: 0.0.0.0
discovery.seed_hosts:
   - IP-master-01:9300
   - IP-master-02:9300
   - IP-master-03:9300
  

Сейчас нет необходимости перезапускать все ваши узлы, но когда вы планируете это сделать, исправьте свою конфигурацию и оставьте в настройках только узлы, отвечающие требованиям master discovery.seed_hosts .