ElasticSearch-将数据节点添加到现有集群。最佳做法是什么?

时间:2020-11-10 11:39:41

标签: 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一点都不重要?

感谢您对此进行澄清。

1 个答案:

答案 0 :(得分:2)

您犯了个小错误,discovery.seed_hosts应该只有 master-eligible节点,而不是所有节点。

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

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

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设置中仅保留符合资格的主节点。