如何正确设置双节点ElasticSearch集群

时间:2015-06-09 15:21:12

标签: elasticsearch

我有一个小的2节点集群

  1. node1“始终开启”并放置在生产服务器上

  2. node2“有时开启”并放在笔记本上以进行开发建议

  3. 他们都有简单的单播配置

    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: [ "other node IP" ]
    
    1. 因此node2经常从node1
    2. 脱机
    3. node1是USUALLY master,但是SOMETIMES node2被选为master
    4. 通常node1比node2有更新的数据,连接后所有的分片都从node1同步到node2,没关系

      但是如果node1有更新的数据,他们就会丢失。 如果偶尔node1成为master,它可以杀死生产中的新数据

      我无法在笔记本上设置node.master:false,因为它从node1脱机工作。

      是否可以通过在索引(较新的胜利)中优化合并文档来设置主 - 主同步行为?

      可能我必须在中间添加额外的3d node.data:false,node.master:true节点吗?

      那我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是一个你想要实现的有趣设置,但从长远来看,这不是我建议的,因为你经常会让你的生产节点处于压力之下。

首先,在这种情况下,术语“开发”没有多大意义,因为就ES而言,您每次都会添加一个“生产”节点并终止“生产”节点。您在“开发”节点上执行的大部分操作都会影响您的“生产”节点。

那就是说,我建议你试试这个:

  1. 您可以将“开发”节点设置为不保留node.data: false的任何数据,并防止每个节点成为node.master: false的主人。因此,当您的开发节点加入时,ES将不会开始移动分片,但您仍然可以查询该节点。在此配置中,您希望在所有索引上将副本数设置为0,以使群集保持“绿色”运行状况。请注意,在此配置中,所有数据仅存储在“生产”节点上。如果这种情况发生,你将会丢失数据。

  2. 如果您确实希望开发节点包含数据的副本,请确保在其上设置node.master: false并且所有索引的副本数均为1.这样,您的“生产” “节点将始终具有您的数据副本,并且当您的开发节点脱机时,不会丢失任何数据。当您的开发节点重新联机时,它将自动与“生产”节点同步,以使其数据(其副本)是最新的。根据您拥有的数据量,这可能需要一些时间,但通常很快。再次,请注意您在“开发”节点上执行的任何查询都会影响您的生产节点,所以从长远来看,这可能不是一个好主意。如果你负担得起,最好在每个索引上至少有2个节点,每个索引有1个副本,最好是3 +。