elasticsearch选举master

数据节点确定了master以后,会开启MasterPinger线程来与其保持心跳通信的逻辑
如果通信过程中链接断开,会通过MasterNodeFailureListener监听器进行回调处理
处理过程中会去调用ZenDiscovery类的handleMasterGone方法,以便选举出新的master进行通信
master的选举逻辑主要是通过ZenDiscovery类findMaster方法来封装的,大致过程如下:
1.首先通过ping操作来向其他节点进行学习
  ping的方式有两种,单播(官方推荐)或组播。针对ping的返回结果可通过如下两个参数来进行过滤
  - discovery.zen.master_election.filter_client
    过滤调用Client节点的ping结果,默认启用
  - discovery.zen.master_election.filter_data
    过滤掉数据节点的ping结果,默认不开启
2.如果ping的结果显示其他节点已选举出了master
  在这些节点所选举的master列表中选取id值最小的一个作为当前节点的master
3.如果ping结果显示其他节点还没有选举出master
  则在当前节点所能访问的master备选集合中(一定要占多数,否则容易发生脑列,可通过discovery.zen.minimum_master_nodes参数设置)
  选取id值最小的一个作为master
新选举出的master并不一定正确,验证方法同样是通过ping操作来完成,如果ping的过程中,服务端返回NotMasterException异常
将开启新一轮的master选举(具体参考MasterPinger线程中有关handleException的处理)

时间: 2024-10-07 08:05:21

elasticsearch选举master的相关文章

ElasticSearch 中 master、data 和 client 节点

在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题. 默认情况下,elasticsearch 集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务.这些功能是由两个属性控制的. 1. node.master 2. node.data 默认情况下这两个属性的值都是true. node.master:这个属性表示节点是否具有成为主节点的资格 注意:此属性的值为 true,并不意味着这个节点就是主节点.因为真正的主节点,是

Zookeeper系列五:Master选举、ZK高级特性:基本模型

一.Master选举 1. master选举原理: 有多个master,每次只能有一个master负责主要的工作,其他的master作为备份,同时对负责工作的master进行监听,一旦负责工作的master挂掉了,其他的master就会收到监听的事件,从而去挣脱负责工作的权利,其他没有争夺到负责主要工作的master转而去监听负责工作的新master. 本质其实是利用zookeeper的临时节点的特性:临时节点随着会话的消亡二消亡,同一个临时节点只能创建一个,创建失败的节点(从master)对创

ElasticSearch集群服务器配置

一.安装 简单的安装与启动于前文ElasticSearch初探(一)已有讲述,这里不再重复说明. 二.启动 1.自带脚本启动 1)bin/elasticsearch,不太任何参数,默认在前端启动 2)bin/elasticsearch-d,带参-d,表示在后台作为服务线程启动 还可以设置更多的参数:bin/elasticsearch-Xmx2g-Xms2g-Des.index.store.type=memory--node.name=my-node 注意:如果是在局域网中运行elasticsea

分布式搜索elasticsearch配置文件详解

elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了.下面主要讲解下elasticsearch.yml这个文件中可配置的东西. cluster.name: elasticsearch 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es

elasticsearch参数详解

elasticsearch.yml cluster.name: elasticsearch 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群. node.name: "Franz Kafka" 节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字. node.master: true 指定该节点是否有

elasticsearch配置文件详解

elasticsearch的config文件夹里面有两个配置文 件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日 志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了.下面主要讲解下elasticsearch.yml这个文件中可配置的 东西. cluster.name: elasticsearch配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的

Elasticsearch 单机多实例

elasticsearch 开源的搜索引擎: 一.下载安装: https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.4.2/elasticsearch-2.4.2.zip 二.集群配置: # unzip elasticsearch-2.4.2.zip # cd /opt/elasticsearch-2.4.2/config 编辑配置文件 # vim

Elasticsearch使用积累

常用插件 Head查看分片情况,操作简单api Bigdesk监控所在机器的CPU,IO,JVM等指标,简单分片概览 KOPF查看集群gc回收磁盘性能, 分片情况, 简单操作api, 感觉该插件较Head更实用一些 Sql可以通过sql进行聚合检索, 可以将sql语句翻译成ES的JSON检索语句 ES集群优雅停止,启动 在一开始使用ES的时候, 都是通过 kill <pid> (不是Kill -9)来关闭ES实例. 但是每回重启后, 都会发现有很长时间的分片同步(即使没有手动删除数据等操作).

全文检索(elasticsearch入门)

Elasticsearch篇: Elasticsearch是一个采用java语言开发的,基于Lucene构造的开源,分布式的搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定可靠. Elasticsearch的数据模型是JSON. 对于需要分布式需求的这是一个非常好的选择,部署简单,同网段内会自动组成集群服务无需配置.其集成数据库同步插件,不仅支持几乎实时的全文检索服务,还支持距离查询,提供类似类似百度地图离我最近查询. 官方主页:http://www.elasticsearch.org/ 中