我们目前正在建立一个包含两个elasticsearch示例(集群服务器)的环境。
因为它是集群的,所以我们需要确保两个示例之间的数据(索引)是同步的。
我们不可能设置一个额外的(第三个)服务器/示例作为“主服务器”。
因此,我们将这两个示例都配置为主节点和数据节点。所以示例1是master&node,示例2也是master&node。
当两个示例都启动并运行时,同步工作正常。但是当一个示例关闭时,另一个示例继续尝试与关闭的示例连接,这显然是失败的,因为该示例已关闭。因此,启动的节点也不再工作,因为它无法连接到其“主”节点(即关闭的节点),即使示例本身也是“主”节点。
在这种情况下会记录以下错误:
org.elasticsearch.cluster.block.clusterblockexception:阻止者:[service_unavailable/2/no master];
org.elasticsearch.transport.connecttransportexception:[xx-xx-2][xx.xx.xx.xx:9300]连接\u异常
原因:io.netty.channel.abstractchannel$annotatedConnectionException:连接被拒绝:无进一步信息:xx.xx.xx.xx/xx.xx.xx.xx:9300
简而言之:集群设置中的两个elasticsearch主示例。当一个关闭时,另一个无法运行,因为它无法连接到“master”示例。
期望的结果:如果一个主示例关闭,另一个应该继续工作(没有抛出错误)。
有没有关于如何解决这个问题的建议,而不必设置一个额外的服务器,即“主”服务器和其他2个“从”服务器?
谢谢
3条答案
按热度按时间ig9co6j11#
你不应该有2个主合格的节点在集群中,因为这是一个非常危险的事情,并可能导致分裂大脑的问题,请参阅这个博客分裂大脑的问题和如何避免它
主节点不需要太多的资源,但是由于您只有两个数据节点,您仍然可以在没有专用主节点的情况下生存(但是请注意它有缺点)以节省成本。
所以简单地说,从另一个节点删除主角色,就可以开始了。
2hh7jdfx2#
如果没有增加1个节点的选项,则可以设置
最小主节点数=1。这将使您的es集群即使有1个节点启动。但它可能会导致分裂的大脑问题,因为我们限制只有一个节点是可见的形成集群。在这种情况下,你必须重新启动集群来解决分裂的大脑。
我建议您升级到elasticsearch 7.0或更高版本。在那里你可以住两个节点每个主资格和分裂的大脑问题不会来。
f2uvfpb93#
要能够投票,大师必须至少有2名。这就是为什么如果您希望您的集群能够抵抗一个节点的丢失,那么您必须至少有3个主节点。
您可以通过将所有其他角色设置为false来添加一个专门的小型主节点。此节点可能只有很少的资源。如本文所述:https://discuss.elastic.co/t/master-node-resource-requirement/84609dedicated 主节点需要持久性存储,但不是很多。1-2个cpu内核和2-4gb ram通常足以用于较小的部署。由于专用主节点不存储数据,您还可以将堆设置为建议用于数据节点的总ram的更高百分比(75%-80%)。