首页 > 解决方案 > 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 集群的最佳实践。

问题是关于参数discovery.seed_hosts。据我了解,所有 ES 节点都应该是相同的,所以就我而言,这意味着我应该添加以下内容:

   - IP-data-06:9300

到所有ES节点的discovery.seed_hosts(当然也包括新创建的节点)。

但这是否意味着我必须在添加第 6 个数据节点后重新启动所有其他节点?否则,如何将相同的配置应用于所有 ES 节点?或者也许所有节点的相同 discovery.seed_hosts 根本不重要?

提前感谢您的澄清。

标签: elasticsearch

解决方案


你犯了一个小错误,discovery.seed_hosts应该只有合格节点,而不是所有节点。

由于您正在添加数据节点,因此您不需要将此节点添加到此配置中,您也可以从新数据节点中的此配置中删除所有不符合主节点资格的节点。

只需在所有数据节点中使用此配置。

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

现在不需要重新启动所有节点,但是当您计划这样做时,请修复您的配置并仅在discovery.seed_hosts设置中保留符合主节点资格的节点。


推荐阅读