使用supervisor托管elasticsearch进程
背景
线上出现过一次ES集群故障:记一次线上ES集群故障
此文主要介绍ES集群健壮性的整改措施.主要在以下几个方面:
- 新增一台ES集群Master节点,使节点数达到3个,从而可以容忍一个master节点故障
- 使用supervisor托管elasticsearch进程
- 使用systemd托管supervisord.使supervisord开机自动启动
详细措施
1.在supervisor的conf.d的目录下新增elasticsearch.conf配置文件.内容如下
1 | [program:elasticsearch] |
以上就是elasticsearch的配置文件.但是经过我测试,在部分服务器上,ES启动后无法使用预期的ES_HEAP_SIZE变量.所以我选择是在elasticsearch的启动文件中直接写死.
在/data/app/elasticsearch-2.4.6/bin/elasticsearch/bin/elasticsearch.in.sh启动文件中的如下位置新增一行
1 | [root@hsq-es-node3 ~]# cat /data/app/elasticsearch-2.4.6/bin/elasticsearch.in.sh |
- 使用systemd托管supervisord实现开机自启
在/usr/lib/systemd/system/路径下新增supervisord.service文件.内容如下
1 | [Unit] |
加入开机启动
1 | systemctl enable supervisord |
- 手动kill掉正在运行中的supervisord和elasticsearch进程.
注意观察当前是否有其他重要进程由supervisor托管
然后使用1
2
3
4
5
6
----
## ES集群新增master节点
编辑elasticsearch.yaml文件.修改如下字段
node.master: true
node.data: false
node.client: false
1 | 此时该节点启动后,就只做为master节点运行. |
discovery.zen.ping.unicast.hosts: [“10.111.30.202:9300”,”10.111.30.207:9300”,”10.111.30.206:9300”,”10.111.30.193:9300”,”10.111.30.197:9300”]`