美文网首页
Elasticsearch的节点发现

Elasticsearch的节点发现

作者: 代码的搬运工 | 来源:发表于2019-12-27 14:08 被阅读0次

    在Elasticsearch中,节点之间可以相互发现,并把相同集群名称的节点统一成一个集群,那节点是如何发现的呢,这次就谈一下节点发现的一些内部细节。在Elasticsearch内部,zen发现机制是默认的发现模块。它提供了单播发现方式,能够很容易地扩展至云环境。发现模块和其他模块集成,例如所有节点的通信是通过传输模块。发现模块分成两个模块:

    1) ping模块,通过ping模块可以寻找其他节点。

    2) 单播模块,需要提供一个主机列表作为路由列表。以discouvery.zen.ping.unicast作为前缀。

    主机列表设置:hosts,配置全路径为:discovery.zen.ping.unicast.hosts。它是一个数组的配置,多个主机设置以逗号分开。格式为host:port,或者host[port1-port2],ip6的主机必须放在方括号内,例如:127.0.0.1,[::1]。

    单播发现依赖传输模块实现。注意port默认端口是9300。

    1、主节点选举

    在集群中,系统会自动通过ping来进行选举主节点或者加入主节点,这些都是自动完成的:

    1) discovery.zen.ping_timeout(默认3秒)配置允许对选举的时间进行调整,用来处理缓慢或拥挤的网络。当一个节点请求加入主节点,它会发送请求信息到主节点,请求的超时时间配置为discovery.zen.join_timeout,这个时间比较长,是discovery.zen.ping_timeout时间的20倍。

    当主节点发生问题的时候,现有的节点又会通过ping来重新选举一个新的主节点。当discovery.zen.master_election.filter_client设置为true的时候,在选举主节点的时候从客户端节点(node.client为true,或者node.data和node.master同时为false)的ping操作将被忽略,该参数默认为true。当discovery.zen.master_election.filter_data为true时,在选举主节点的时候从数据节点(node.data为true,node.master同时为false)的ping 操作将被忽略,默认为false。主节点配置为true的节点一直都有选举的资格。

    当节点node.master设置为false或者node.client设置为true的时候,它们将自动排除成为主节点的可能性。

    2、故障检测

    有两种方式进行故障检测,第一个是由主节点到所有其他节点的验证,证明它们还活着。另一种,是每个节点ping主节点验证,当主节点有故障的时候会启动选举过程。控制故障检测过程使用discovery.zen.fd前缀设置:

    1) ping_interval:ping检查的频率(时间间隔),默认值为1秒。

    2) ping_timeout:ping的超时时间,默认为30秒。

    3) ping_retries:多少次ping失败或者超时的节点被认为是失败的。默认是3次。

    主节点是在一个集群中可以改变集群状态的唯一节点。主节点处理一个集群状态的更新,适用于所需的更改,并将更新的集群状态发布到集群中的所有其他节点上。每个节点接收发布消息,更新它自己的集群状态,并对主节点进行应答,该主节点等待所有节点响应,然后在处理下一个更新的队列前进行超时处理。discovery.zen.publish_timeout默认为30秒,可以通过动态配置进行设置。

    一个健康的集群必须有一个主节点,并且有多个满足主节点选举条件的节点,这个数字由discovery.zen.minimum_master_nodes设置。discovery.zen.no_master_block设置没有有效的主节点时应拒绝的操作,有两个选择:

    1) all:这个节点上的所有行为被拒绝,包括读写,同时拒绝集群状态的读写操作,比如得到索引设置。

    2) write:基于最后一次的集群配置,写操作被拒绝,允许读操作。这可能会导致部分读取的数据是过期的,因为这个节点已经从集群中分离,这个是默认设置。

    discovery.zen.no_master_block设置不适用于基于节点状态的API,例如:_cluster/stats、_node/info、_node/stats。

    相关文章

      网友评论

          本文标题:Elasticsearch的节点发现

          本文链接:https://www.haomeiwen.com/subject/estdoctx.html