之前写了一篇文章如何安全重启ES集群的节点,这又一个前提,就是需要停止写入业务。但是,有些时候业务是不能停的,又需要重启某一个节点(例如补丁修复,服务器更换等),这就需要用到本篇文章提到的不停业务重启ES节点。

总体思路

将需要重启的节点从集群中删除,然后重新加入,也能起到重启的效果,但是不需要停业务

具体步骤

Step1 开启集群shard自动平衡

一般情况下,集群的自动平衡都是开启的,可以用以下指令查看

$ curl "localhost:9200/_cluster/settings?pretty"
{"persistent" : {"cluster" : {"routing" : {"allocation" : {"enable" : "all"}}}}
}

如果 “enable” : “all”,则表示自动平衡已经开启,如果没有开启,用以下方法开启自动平衡。

 curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{"persistent": {"cluster.routing.allocation.enable": "all"     }
}
'

Step2 从ES集群中删除指定节点

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{"persistent" : {"cluster.routing.allocation.exclude._ip" : "10.0.0.1"}
}
'

这里可以通过ip,nodename等方法指定需要删除的节点

_name  Match nodes by node name
_host_ip  Match nodes by host IP address (IP associated with hostname)
_publish_ip  Match nodes by publish IP address
_ip  Match either _host_ip or _publish_ip
_host  Match nodes by hostname
_id  Match nodes by node id
_tier  Match nodes by the node’s data tier role

Step3 等待集群自动重新平衡Shard

在同步期间,可以通过以下方法查看集群状态

$ curl 'localhost:9200/_cluster/health?pretty'
{"cluster_name" : "natanalyzer","status" : "green","timed_out" : false,"number_of_nodes" : 6,"number_of_data_nodes" : 6,"active_primary_shards" : 6694,"active_shards" : 6844,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}

当relocating_shards=0的时候,再次确认需要删除的节点上已经没有shard,才执行下一步的操作

curl http://localhost:9200/_cat/shards?v|grep esnode5% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  561k  100  561k    0     0  1029k      0 --:--:-- --:--:-- --:--:-- 1028k

Step4,重新启动节点

Step5,节点重新加入集群

由于重新启动的节点已经被列入集群的exclude列表,需要对其进行清除,以触发shard重新平衡

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{"persistent" : {"cluster.routing.allocation.exclude._name" : null}
}
'

综上,就可以在带业务的情况下完成集群节点的重启。

在不停业务的情况下重启ES集群中的节点相关推荐

  1. 如何在零停机的情况下迁移 Kubernetes 集群

    作者:顾静(子白)|阿里云高级研发工程师:谢瑶瑶(初扬)|阿里云技术专家 导语: 随着云原生理念在企业中的深入和践行,应用容器化的比例大幅提升.是否可以保证应用容器化迁移过程中的平稳切换,保证应用不停 ...

  2. windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error...

    windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...

  3. 0110-如何给Kerberos环境下的CDH集群添加Gateway节点

    2019独角兽企业重金招聘Python工程师标准>>> Fayson的github: https://github.com/fayson/cdhproject 1.文档编写目的 Ga ...

  4. ES集群中出现UNASSIGNED分片时的解决思路

    原文:https://www.modb.pro/db/182864 引入此问题的原因,是因为在单节点的ES部署策略中,如果在设置某个ES索引的replica不为零,你会发现. 存在Unassigned ...

  5. ES系列:停用集群中的节点

    目录 下线方法 按IP下线 按id下线 按name下线 验证方法 下线方法 按IP下线 PUT _cluster/settings {"transient": {"clu ...

  6. es集群节点加入失败join validation on cluster state with a different cluster uuid...than local cluster uuid..

    本来之前已经将es集群搭建完成了,但是不小心使用rm -rf /var/lib把文件删除了,我本来只想删除/var/lib下的一个文件夹的,结果删错了,整个集群没了,这,,,,还好集群上跑的都是一些测 ...

  7. Kubernetes 搭建 ES 集群(存储使用 cephfs)

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  8. 基于docker-compose部署es集群和es-head

    目录 1. 服务器基础设置 2. es集群的yml配置 3. 集群验证 3.1 访问es-head来查看集群 3.2 通过cerebro查看es集群 4. 参考资料 1. 服务器基础设置 修改/etc ...

  9. Elasticsearch——Windows下ES集群部署 Linux下ES单节点、集群部署

    1.开篇 在之前的两篇文章中,说白了就是在windows下部署的ES单节点的环境. 这篇文章主要是说一下windows下部署ES集群.Linux下单节点部署. 单台 Elasticsearch 服务器 ...

最新文章

  1. onAttach 显示过时的处理方法
  2. 用C语言写PHP扩展
  3. 苗旺:因果推断,观察性研究和 2021 年诺贝尔经济学奖
  4. 【Eclipse】推荐UML插件Green UML、AmaterasUML
  5. 【组合数学】生成函数 ( 移位性质 )
  6. Swoole的全双工、半双工和单工
  7. 联想电脑如何添加无线网络连接服务器,安装英特尔MYWIFI的操作步骤
  8. arrays.sort(._Arrays.hashCode(Object [])与Objects.hash(Object…)
  9. PowerDesigner生成的建表脚本中如何把对象的双引号去掉
  10. 总结一下用caffe跑图片数据的研究流程接上篇
  11. OD查找QQ sessionkey教程
  12. 论坛看到的很有感触的问答
  13. deepin系统引导_【转】deepin系统启动流程
  14. 快速检测npm registry镜像网址下载的速度
  15. 10月更新!又一波新功能上线,升级后的EasyOps®简直神了!
  16. 关于网上很不好找的幼儿识图APP
  17. “血洗”Twitter,“杀疯了”的马斯克究竟想干啥?
  18. starGan-v2论文复现-代码完整
  19. 多線程之WaitFor
  20. FPGA实现简易电梯控制系统设计

热门文章

  1. 如何在Linux上查看历史命令
  2. pycharm更改整体背景颜色(黑-白)
  3. Html与css步入新手村
  4. 【Android源码面试宝典】MMKV从使用到原理分析(一)
  5. Lammps压力控制之活塞控压—一个代码循环限域空间内的气体分子数
  6. 【NLP】1、nlp各类中文文本语料库
  7. 单例模式之懒汉式单例模式
  8. 数学建模之多元非线性回归
  9. jstack 命令的使用和问题排查分析思路
  10. 解释机器学习中的熵、联合熵、条件熵、相对熵和交叉熵