我有2个Linux VM(都在Cloud Provider的同一数据中心):Elastic1和Elastic2(其中Elastic 2是Elastic 1的克隆)。两者都具有相同的版本centos,相同的群集名称和相同的ES,再次-Elastic2是一个克隆。
我使用服务包装器在启动时自动启动它们,并将彼此的ip引入各自的iptables文件,因此现在我可以在节点之间成功ping。
我认为这足以使ES形成集群,但无济于事。
Elastic1和Elastic2都有1个索引,分别命名为e1和e2。每个索引具有1个没有副本的分片。
我可以在每个服务器上成功使用head和paramedic插件。并用于curl -XGET 'http://localhost:9200/_cluster/nodes?pretty=true'验证群集名称是否相同,并且每个服务器仅列出了1个节点。
curl -XGET 'http://localhost:9200/_cluster/nodes?pretty=true'
这些节点为什么没有说话有什么惊奇的地方吗?Ive重新启动了ES服务,并在两台服务器上重新启动均无济于事。克隆可能是问题所在吗?
在您的elasticsearch.yml中:
discovery.zen.ping.multicast.enabled: false discovery.zen.ping.unicast.hosts: ['host1:9300', 'host2:9300']
因此,只需在单播主机下列出带有传输端口(默认为9300)的节点IP。组播默认情况下处于启用状态,但通常在不使用外部插件的云环境中是不可能的。
另外,请确保检查您的IP规则/安全组!这很容易忘记。