我正在尝试实现elasticsearch集群。我有 2 台机器,每台机器有 2 个节点。我在 yml 文件中有以下配置。我在每个节点上都给出了唯一的节点名称,它们都是主节点和数据节点。
cluster.name: elasticsearch
node.master: true
node.data: true
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["machine1", "machine2"]
discovery.zen.minimum_master_nodes: 3
集群中的四个节点工作正常。我想关闭其中一个节点,并让其他 3 个节点在集群中运行。当我尝试引入前三个之一时,集群出现故障,出现此错误
{
"error": "ClusterBlockException[blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];]",
"status": 503
}
如果我关闭加入集群的最后一个节点,则集群工作正常。我的理解是,如果我有 4 个主站,并且其中一个主站(任意)出现故障,则其他三个主站应该在集群中运行。我的配置有问题吗?
最佳答案
如果您在一台计算机上运行节点,最好将端口添加到您的配置中。
discovery.zen.ping.unicast.hosts: ["machine1:9300", "machine2:9300", "machine2:9301"]
然后自己配置端口,以便知道哪个节点有哪个端口:
transport.tcp.port: 9300
http.port: 9200
关于多机上的Elasticsearch集群-master选举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23113433/