date: 2020-05-28title: es集群问题总结 #标题
tags: es集群问题 #标签
categories: elastic stack # 分类

这篇博文用于记录下维护es集群时需要注意的事情。

Q:es初次启动无法形成集群怎么回事?

A:如果配置的discovery.seed_hosts等相关都没有错误,那么你的服务器是否为多网卡?如果为多网卡,并且你的network.host还是指定的0.0.0.0,那么就有大概率无法形成集群,因为每个es节点绑定的IP可能不一样,虽然端口是任意IP都在监听,但是你执行下curl 192.168.20.2:9200/_cat/master?v就会发现输出如下:

  1. $ curl 192.168.20.2:9200/_cat/master?v # 可以发现es的master还是绑定了某一个IP,而不是任意IP
  2. id host ip node
  3. Z1f9WuRARJCAQpHPrQ9p8A 192.168.20.2 192.168.20.2 es1

Q:es集群全部宕机了,如何重启es集群?

A:es集群如果不幸全部宕机,那么你应该先将master节点启动,待访问master节点看到以下页面后:

es集群问题总结 - 图1

然后再依次启动node节点即可。

主要原因在于,你必须先形成集群,然后再启动node节点加入到这个集群。

Q:如何向es集群中添加节点?

随着业务的发展,es集群资源可能会吃紧,此时我们想要向集群中添加新的节点,添加节点时,大胆加即可,当节点加入或离开集群时,集群会自动重新组织自己,以便在可用节点之间均匀分布数据。

Q:节点需要暂时离开集群,需要做什么操作?

  1. PUT _all/_settings
  2. {
  3. "settings": {
  4. "index.unassigned.node_left.delayed_timeout": "5m"
  5. }
  6. }

上述指令是将节点离开时的分片延迟分配时间设置成了5m,也就是说,节点离开五分钟之内是不会重新分片的,这时间是自定义的,只要你保证节点在你自定义的时间内可以重新加入集群即可。

具体请参考:官方文档