ES集群的高可用性知识点整理

标签: 系统架构 | 发表时间:2019-07-03 11:34 | 作者:admin
出处:https://blog.haohtml.com

为了防止ES集群中单点问题,一般都需要对集群节点做高可用性,当发生单点问题时,也可以向外正常提供服务。这里主要记录一下节点的加入、离开和选举。

集群安装教程请参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

节点角色: https://www.jianshu.com/p/7c4818dda91a

新节点的加入

随着数量大的增加,有时候我们不得进行机器的扩容,这时间就需要加入一些新的机器节点,用来提高访问速度。

当一个新节点加入的时候,它通过读取 discovery.zen.ping.unicast.hosts 配置的节点获取集群状态,然后找到 master 节点,并向其发送一个join request(discovery.zen.join_timeout)。主节点接收到请求后,同步集群状态到新节点。

对于每个节点角色一般有三种,分别为master、data 和 eligible 。就是我们通过 http://localhost:9200/_cat/nodes?v 查看到的列 node.role 的值。
master: 表示为master节点,主要管理集群信息、primary分片和replica分片信息、维护index信息。
data: 表示数据节点,存储数据,维护倒排索引,提供数据检索等。
eligible: 表示参与选举

每个节点都可以配置成这三种身份,如果不配置的话,则默认为 mdi 角色。

非主节点离开

当主节点定期ping(ping_interval 默认为1s)一个节点出现3次ping不通的情况时(ping_timeout 默认为30s),主节点会认为该节点已宕机,将该节点踢出集群。

主节点的选举

当主节点发生故障时,集群中的其他节点将会ping当前的 master eligible 节点,并从中选出一个新的主节点。
节点可以通过设置 node.master=true 来设置自己的角色为主节点。
通过配置 discovery.zen.minimum_master_nodes防止集群出现脑裂。该配置通过检查集群中 master eligible 的个数来判断是否选举出一个主节点。其个数最好设置为 (number_master eligible/2)+1,防止当主节点出问题时,一个集群分裂为两个集群。
具有最小编号的active master eligible node将会被选举为master节点。

脑裂的概念:
如果你有2个Master候选节点,并设置最小Master节点数为1,当网络抖动或偶然断开时,2个Master都会认为另一个Master挂掉了,他们都被选举为主Master,则此时集群中存在两个主Master,即物理上1个集群变成了逻辑上的2个集群,而当其中一个Master再次挂掉时,即便它恢复后回到了原有的集群,在它作为主Master期间写入的数据都会丢失,因为它上面维护了Index信息。

相关 [es 集群 高可用性] 推荐:

ES集群的高可用性知识点整理

- - 学习日志
为了防止ES集群中单点问题,一般都需要对集群节点做高可用性,当发生单点问题时,也可以向外正常提供服务. 这里主要记录一下节点的加入、离开和选举. 集群安装教程请参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html.

ES集群重启最佳实践 - 简书

- -
单index大小:20GB ~ 40GB. 索引数(按天拆分索引):600. 直接kill掉节点,可能导致数据丢失. 集群会认为该节点挂掉了,集群重新分配数据进行数据转移(shard rebalance),会导致节点直接大量传输数据. 节点重启之后,恢复数据,同样产生大量的磁盘、网络流量,耗费机器和网络资源的.

亿级日增量的ES线上环境集群部署,上干货!

- -
在生产环境搭建或维护 Elasticsearch 集群和个人搭建集群的小打小闹有非常大的不同. 本文的最佳实践基于每天增量数亿+ 的线上环境. Elasticsearch 和 Lucene 都是 Java 语言编写,这意味着我们必须注意堆内存的设置. Elasticsearch 可用的堆越多,它可用于过滤器(filter)和其他缓存的内存也就越多,更进一步讲可以提高查询性能.

es集群快速恢复(优化方案)_大数据_ClearloveXXX的博客-CSDN博客

- -
2、关闭allocate,禁止shard做allocate. 5、等级集群变成yellow后开启allocate,允许shard做allocate. 调整集群恢复时的带宽,-1是指无限制 . 调整集群恢复时的单机并发度,最好是和磁盘块数一致 . 调整集群恢复时单个shard中同时恢复的小文件的个数.

ES优化总结

- - 非技术 - ITeye博客
最近一直在研究ES集群,也看了很多篇前辈们总结的博客,同事借鉴了官方给出的一些建议,做了一下几点总结,希望对后来者有用:. 为了防止ES进程的内存被置换到磁盘上(会导致在检索的时候发生内存交换导致检索速度迟缓)引起性能急速下降. 候可以把config/elasticsearch.yml中的bootstrap.mlockall设置为true就可以了.

es的连接查询

- - 行业应用 - ITeye博客
在一般的关系型数据库中,都支持连接操作. 在ES这种分布式方案中进行连接操作,代价是十分昂贵的. 不过ES也提供了相类似的操作,支持水平任意扩展,实现连接的效果. 其他内容, 参考Elasticsearch官方指南整理. 在ES中支持两种连接方式:嵌套查询 和 has_child、has_parent父子查询.

ES性能优化总结

- - 互联网 - ITeye博客
    Elasticsearch是目前大数据领域最热门的技术栈之一,经过近8年的发展,已从0.0.X版升级至6.X版本,虽然增加了很多的特性和功能,但是在主体架构上,还是没有太多的变化. 下面就把我对于ES使用实践的一些经验总结一下,供大家参考;也请大家拍砖. 如果有条件,尽可能使用SSD硬盘, 不错的CPU.

ElasticSearch —修改ES数据

- -
ElasticSearch能够以接近实时的速度提供数据操作和搜索功能. 在默认情况下,从索引/更新/删除数据到出现在搜索结果之间,你可能会感受到有1秒的延迟时间(刷新间隔). 这是与SQL等其他平台的一个重要区别,这些平台在完成事务之后,它们的数据立即可用. 先前,我们已经知道如何索引一个单个的文档.

es近实时搜索原理

- - 企业架构 - ITeye博客
 随着按段(per-segment)搜索的发展, 一个新的文档从索引到可被搜索的延迟显著降低了. 新文档在几分钟之内即可被检索,但这样还是不够快.  提交(Commiting)一个新的段到磁盘需要一个 . fsync 来确保段被物理性地写入磁盘,这样在断电的时候就不会丢失数据. 但是  fsync 操作代价很大; 如果每次索引一个文档都去执行一次的话会造成很大的性能问题.

请警惕 ES 的三大坑

- - InfoQ推荐
搜索引擎现在是用得越来越多了,比如 日志系统用到的 ELK 中的 E 就是 搜索引擎 Elasticsearch(简称 ES). 那对于搜索这种技术来说,最看重的是搜索的结果的准确性和搜索的响应时间. ES 的准确性可以通过 倒排索引算法来保证,那响应时间就需要磁盘或缓存来支持了,那么磁盘和缓存会带来哪些坑呢.