Elasticsearch 添加新节点流程
in Note with 0 comment
Elasticsearch 添加新节点流程
in Note with 0 comment

情况是这样的:
已有的 8 台 es 节点,出现很大的写入慢的问题,主要原因有四个:
1、有 5 台节点所在服务器的磁盘是机械盘,而且是服役了两三年的老盘,读写性能差;
2、多个服务同用一个磁盘,磁盘可用性雪上加霜;
3、服务器有多个服务在跑,CPU、内存资源也存在竞争,频繁地切换用户态和内核态,消耗大;
4、业务成长快,数据量大,数据写入量也大。

这四个原因,导致了集群处于不稳定的状态,解决不稳定要亦步亦趋。那么解决不稳定的第一步就是给现有的集群添加节点,目的是缓和集群的写入瓶颈,对现有的集群的问题进行止血。

那么,对现有的 es 集群新添节点提出三个问题:
1、新添节点会对现有的集群产生什么行为?
2、如何新添节点?
3、怎么确保新添节点的工作?

各 es 节点是如何组成集群的

添加新节点前,得先弄明白集群是如何发现新节点的,并组成集群,过程如下:

各节点组成 Elasticsearch 集群很简单的,只要cluster.name设置一致,并且机器在同一网段下,配置好discovery.zen.ping.unicast.hosts列表,启动后 es 节点会通过列表自动发现对方,组成集群。Elasticsearch 采用广播的方式自动发现节点,需要等一小段时间才能发现新的节点。

另外,集群重新均衡分片默认并发操作数是 2,所以新节点加入到集群,并不会对现有的服务产压力,基本上无压力。

新节点部署

这里的新节点主要指节点角色的 node.data 设置为 ture 的,含有 data 角色的节点到集群中,master 节点会触发分片重新分配的行为。

节点部署流程如下:

1、找出新节点配置需要的参数,如cluster.name、集群其他节点的 ip、本机的ip、heapSize 、数据存储目录等等参数
2、更新系统的 ulimit 和 sysctl
3、安装 JAVA 8 包括 JDK 和 JRE
4、安装 Elasticsearch 5.6.3
5、配置 Elasticsearch
6、启动 Elasticsearch
7、检查是否成功加入到集群,是否开始重新分片
8、检查新节点已经可以工作了

部署过程不再列出来,过程全部用 ansible 写好了。

部署完后的工作

1、检查集群是否开始均衡分片
2、定时检查确定是否完成分片均衡

注意事项

1、部署前,一定要检查部署参数是否跟现有集群匹配
2、一定要检查新机器的磁盘目录等等参数是否适合部署新节点
3、均衡分片所需的时间取决于已有的分片数、分片容量、网络和磁盘IO

The article has been posted for too long and comments have been automatically closed.