我们目前正在设置一个包含两个弹性搜索实例(集群服务器)的环境。
由于它是集群的,我们需要确保数据(索引)在两个实例之间同步。
我们无法设置额外的(第 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
简而言之:集群设置中的两个弹性搜索主实例。当一个关闭时,另一个无法运行,因为它无法连接到“主”实例。
期望的结果:如果一个主实例关闭,另一个应该继续运行(不抛出错误)。
关于如何解决这个问题的任何建议,而无需设置一个额外的服务器,即“主服务器”和其他 2 个“从属服务器”?
谢谢