我们当前正在建立一个具有两个Elasticsearch实例(集群服务器)的环境。
由于是群集的,因此我们需要确保在两个实例之间同步数据(索引)。
我们无法设置其他(第3个)服务器/实例来充当“主服务器”。
因此,我们已经将实例配置为主节点和数据节点。因此,实例1是master&node,实例2也是master&node。
当两个实例都启动并运行时,同步工作正常。但是,当一个实例关闭时,另一个实例将继续尝试与关闭的实例连接,这显然会失败,因为该实例关闭了。因此,处于运行状态的节点也不再起作用,因为即使实例本身也是一个“主节点”,它也无法连接到其“主节点”节点(处于关闭状态的节点)。
在这种情况下,将记录以下错误:
所需结果:如果其中一个主实例已关闭,则另一个应继续运行(没有抛出错误)。
关于如何解决此问题的任何建议,而不必设置额外的服务器(即“主服务器”,另2个为“从服务器”)?
谢谢
答案 0 :(得分:0)
要能够投票,硕士必须至少有2名。 这就是为什么要让群集抵抗一个节点丢失的原因,必须至少拥有3个主节点。
您可以通过将所有其他角色设置为false来添加专门的小型主节点。 该节点几乎没有资源。 如这篇文章中所述: https://discuss.elastic.co/t/master-node-resource-requirement/84609 专用主节点需要持久存储,但数量不多。 1-2个CPU内核和2-4GB RAM通常足以满足较小的部署需求。由于专用的主节点不存储数据,因此您还可以将堆设置为建议为数据节点使用的总RAM的较高百分比(75%-80%)。
答案 1 :(得分:0)
您不应在集群中拥有2个符合条件的主节点,因为这是非常危险的事情,并且可能导致大脑分裂问题,请访问split brain issue and how to avoid it
参阅此博客。主节点并不需要太多资源,但是由于您只有两个数据节点,因此仍然可以在没有专用主节点的情况下生存(但请注意,这样做有缺点)只是为了节省成本。
因此,简单地,从另一个节点上删除主角色,您应该就很好了。
答案 2 :(得分:0)
如果没有选择增加1个节点的选项,则可以设置
minimum_master_nodes = 1。即使1个节点启动,这也将使您的es群集起来。但这可能会导致大脑分裂问题,因为我们仅限制1个节点可见才能形成簇。
在那种情况下,您必须重新启动集群才能解决脑裂问题。
我建议您升级到Elasticsearch 7.0或更高版本。您可以在那里拥有两个节点,每个节点都符合资格,并且不会出现脑裂问题。