场景
- elasticserach生产环境肯定是进行集群的, 集群失败的主要是根据下面的两个配置
- cluster.name
- discovery.zen.ping.unicast.hosts
问题描述
- 我的各个节点的cluster.namer相同, discovery.zen.ping.unicast.hosts囊括了所有的IP, 但是总是有两个节点无法组成集群
- 各个节点只有node.name不同
cluster.name: wechat-es-cluster #集群的名字
node.name: es-node-1 #节点的名字 每个节点都不一样
node.master: true # 是否有资格成为主节点 我的机器是都可以成为主节点的
node.data: true # 是否可以成为数据节点 (主节点也可以成为数据节点)
path.data: /home/carsonlius/elasticsearch/data // 数据存储路径
path.logs: /home/carsonlius/elasticsearch/logs // 日志存储路径
network.host: 0.0.0.0 # 设置访问的地址和端口, 默认无法公开访问
http.port: 9200 # 设置访问的地址和端口
discovery.zen.ping.unicast.hosts: ["172.17.0.4", "172.17.0.2", "172.17.0.3", "172.17.0.5"] #集群的主机地址
discovery.zen.minimum_master_nodes: 3 # 防止脑裂 通常为 (可成为主节点的主机数目 / 2) + 1
gateway.recover_after_nodes: 3 # 最好3个节点 回应之后集群就可以继续工作
cluster.initial_master_nodes: ["es-node-4", "es-node-3", "es-node-2", "es-node-1"] # 通过为 cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或 IP 地址来引导启动集群
参考文档
解决
- 清理掉数据文件, 重启集群
rm -fr /home/carsonlius/elasticsearch/data
sudo -i service elasticsearch restart