当前位置: 首页 > elasticsearch, 搜索 > 正文

elasticsearch Zen Discovery

1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

elasticsearch集群发现机制有两种:Zen Discovery和 EC2 discovery。
EC2:亚马逊弹性计算云。
Zen Discovery作用就相当于solrcloud中的zookeeper。EC2 discovery主要在亚马云平台中使用。

Zen发现机制

zen发现机制是elasticsearch默认的内建模块。它提供了多播和单播两种发现方式,能够很容易的扩展至云环境。

zen发现机制是和其他模块集成的,例如所有节点间通讯必须用trasport模块来完成。

它分成几个子模块,下面详细解释:

Ping
这是一个节点使用发现机制去寻找其他节点的进程。同时支持多播和单播方式的发现(也可以组合使用)

多播
多播ping发现的方式通过向其他节点发送一个或多个多播请求来实现,存在的节点将会接收并且响应。提供下面的一组配置,以discovery.zen.ping.multicast做前缀:

配置            描述
group          默认值为224.2.2.4
port           默认值为54328
ttl            多播消息的ttl。默认为3
address        绑定的地址,默认为null,即绑定所有可用的network接口。

将elasticsearch.yml 配置multicast.enabled设为false可以禁用多播方式。

单播
但多播禁用的情况下可以使用单播发现。需要提供一个主机列表作为路由列表。提供下面一组配置,以discovery.zen.ping.unicast作为前缀:

配置         描述
hosts        是一个数组的配置,或以逗号分隔的字符串。格式为host:port,或者host[port1-port2]

单播发现依赖transport模块实现。注意port默认应该是9300,不是9200,因为使用的是tranposrt。

主节点选举
作为初始ping过程的一部分,一个集群的主节点需要被选举或加入。这是自动完成的。discovery.zen.ping_timeout(默认3秒)的配置用于处理网络速度慢或网络拥塞的场景。注意这个配置从0.15.1往后发生了变化(之前叫discovery.zen.initial_ping_timeout)

节点在成为主节点之后可以通过将node.master设为false来退出。注意,一旦一个节点被明确设为一个客户端节点(node.client设为true),则不能再成为主节点(node.master会自动设为false)。

discovery.zen.minimum_master_nodes用于控制选举行为发生的最小集群节点数量。推荐设为大于1的数值,因为只有在2个以上节点的集群中,主节点才是有意义的。

错误检测
有两种错误检测的进程在运行。第一种是在主节点上,用于ping所有其他的集群节点,并验证它们是否存活。另一种是其他节点ping主节点,看主节点是否存活,或者是否需要初始化选举进程。

下面的配置用于错误检测,以discovery.zen.fdprefix为前缀:

配置                 描述
ping_interval       节点ping的频率。默认为1秒。
ping_timeout        等待节点响应的超时时间,默认为30秒
ping_retries        ping失败/超时重试次数。默认为3.

外部多播
多播发现也支持用外部多播请求来发现节点。外部客户端可以发送多播IP/group和端口请求,格式为:

{
   "request" : {
      "cluster_name" : "test_cluster"
   }
}

返回的响应信息格式和节点信息的返回格式类似(仅仅是节点级别的信息,也就是包含transport/http地址,以及节点属性):

{
   "response" : {
       "cluster_name" : "test_cluster",
       "transport_address" : "...",
       "http_address" : "...",
       "attributes" : {
       "..."
       }
    }
}

注意,可以做到禁用内部多播发现,但是启用外部多播发现机制。方式为将discovery.zen.ping.multicast.enabled设为true(默认值),但是将discovery.zen.ping.multicast.ping.enabled设为false

参考地址:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html#modules-discovery-zen

本文固定链接: http://www.chepoo.com/elasticsearch-zen-discovery.html | IT技术精华网

【上一篇】
【下一篇】

elasticsearch Zen Discovery:等您坐沙发呢!

发表评论