【发布时间】:2020-09-29 14:53:43
【问题描述】:
我们目前正在设置一个包含两个 elasticsearch 实例(集群服务器)的环境。
由于它是集群的,我们需要确保数据(索引)在两个实例之间同步。
我们无法设置额外的(第 3 个)服务器/实例来充当“主服务器”。
因此,我们将两个实例都配置为主节点和数据节点。所以实例 1 是主节点,实例 2 也是主节点。
当两个实例都启动并运行时,同步工作正常。但是当一个实例宕机时,另一个实例不断尝试连接宕机的实例,这显然是因为实例宕机而失败。因此,启动的节点也不再运行,因为它无法连接到他的“主”节点(即关闭的节点),即使实例本身也是“主”。
在这种情况下会记录以下错误:
- org.elasticsearch.cluster.block.ClusterBlockException:被阻止:[SERVICE_UNAVAILABLE/2/no master];
- org.elasticsearch.transport.ConnectTransportException: [xxxxx-xxxxx-2][xx.xx.xx.xx:9300] connect_exception
- 原因:io.netty.channel.AbstractChannel$AnnotatedConnectException:连接被拒绝:没有更多信息:xx.xx.xx.xx/xx.xx.xx.xx:9300
简而言之:集群设置中有两个 elasticsearch 主实例。当一个关闭时,另一个无法运行,因为它无法连接到“主”实例。
期望的结果:如果一个主实例关闭,另一个应该继续运行(不会抛出错误)。
关于如何解决此问题的任何建议,而无需设置额外的“主服务器”和其他 2 个“从属服务器”?
谢谢
【问题讨论】:
-
已经很久了,如果有帮助的话,如果您能投票并接受答案,那就太好了。
标签: elasticsearch dotcms