问题背景

首先问题是出在我通过VM搭建ES集群的时候,之前已经搭建了一个2个节点的集群,现在因为要搭建冷热集群,所以需要添加一个节点,之前是在VM上开启的虚拟机搭建的2个节点,所以克隆的方式复制了一个节点,修改了IP和es配置文件,启动之后发现新节点始终无法加入集群

解决步骤

检查配置文件

首先确保了配置文件的正确性,要搭建集群要注意的配置项如下

# 集群名保持一致
cluster-name: cluster1
# 节点名要唯一,不要重复
node-name: node-3
# 添加上集群所有节点的IP
# ps: 节点数过多的不用全部添加,有别的方法,这里不做详述,有兴趣自查
discovery.seed_hosts: ["ip1","ip2","ip3"]

检查网卡文件

这里我也是排查完配置文件后没有发现问题,才想到的网卡文件中之前只修改了ip还没有修改uuid,要保证uuid的唯一性
修改网卡配置指令(我这里用的是mac下的VM,创建出来的网卡叫ens33,注意自己的网卡名,window下的应该是ens0)

vi /etc/sysconfig/network-scripts/ifcfg-ens33

删除data/nodes文件夹

上述的问题排查完后都还是没办法加入节点,于是我关闭了node2,发现node1与node3结成集群了,这说明配置文件应该都没问题了,但它们能结成集群一个很重要的前提是node3是node2的克隆副本,我想到虽然网卡信息和配置文件修改了,但是还有一个至关重要的东西他们是一样的,那就是存储节点数据的data文件夹。
这个应该就是问题所在了,我因为是本机搭建测试,所以采取了最粗暴的方式,将三个节点data/nodes文件夹都删除了,如果你是线上环境的话,可以先试试只删除node3的data/nodes,然后启动试试看,这里我因为没有做这个测试,无法给出准确答案,如果还是不行的话,可以留言,大家做些探讨
需要注意的是,data文件夹是你在es配置文件中配置的data路径,默认是在es安装路径下的data目录,但是不建议使用默认配置,因为data是存放索引数据的,如果es重新安装或者升级的话,因为data在es安装路径下,就会导致数据丢失,所以建议放在es目录外,这里我自己配置的是/var/local/elasticsearch_data,所以我只需要将这个目录的nodes目录删除即可

rm -rf /var/local/elasticsearch_data/nodes

重启之后节点加入成功,可以通过_cat/nodes指令查看集群节点状态

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐