elasticsearch(es) 集群恢复触发配置(Local Gateway参数)

elasticsearch(es) 集群恢复触发配置(Local Gateway)

当你集群重启时,几个配置项影响你的分片恢复的表现。 首先,我们需要明白如果什么也没配置将会发生什么。

想象一下假设你有 10 个节点,每个节点只保存一个分片,这个分片是一个主分片或者是一个副本分片,或者说有一个有 5 个主分片/1 个副本分片的索引。有时你需要为整个集群做离线维护(比如,为了安装一个新的驱动程序), 当你重启你的集群,恰巧出现了 5 个节点已经启动,还有 5 个还没启动的场景。

假设其它 5 个节点出问题,或者他们根本没有收到立即重启的命令。不管什么原因,你有 5 个节点在线上,这五个节点会相互通信,选出一个 master,从而形成一个集群。 他们注意到数据不再均匀分布,因为有 5 个节点在集群中丢失了,所以他们之间会立即启动分片复制。

最后,你的其它 5 个节点打开加入了集群。这些节点会发现 它们 的数据正在被复制到其他节点,所以他们删除本地数据(因为这份数据要么是多余的,要么是过时的)。 然后整个集群重新进行平衡,因为集群的大小已经从 5 变成了 10。

在整个过程中,你的节点会消耗磁盘和网络带宽,来回移动数据,因为没有更好的办法。对于有 TB 数据的大集群, 这种无用的数据传输需要 很长时间 。如果等待所有的节点重启好了,整个集群再上线,所有的本地的数据都不需要移动。

本地网关

本地网关模块在整个集群重新启动时存储集群状态和分片数据。

以下参数是配置 尝试恢复集群状态和集群数据 的触发点,必须在每个主节点上都做做如下配置。

  • gateway.expected_nodes

    预期在集群中的(数据或主)节点数。只要预期的节点数已加入集群,就会启动本地分片的恢复。默认为0

  • gateway.expected_master_nodes

    预期在集群中的主节点数。一旦预期的主节点数加入集群,就会开始恢复本地分片。默认为0

  • gateway.expected_data_nodes

    预期在集群中的数据节点数。一旦预期数量的节点已加入集群,就会启动本地分片的恢复。默认为0

  • gateway.recover_after_time

    如果未达到预期的节点数,则恢复过程将等待配置的时间量,然后再尝试恢复。如果只要配置了expected_nodes,则默认这个参数值为5m

一旦recover_after_time持续时间超时,只要满足以下条件,恢复就会开始:

  • gateway.recover_after_nodes

    只要此许多数据或主节点已加入集群,即可恢复。

  • gateway.recover_after_master_nodes

    只要这么多主节点已加入集群,就可以恢复。

  • gateway.recover_after_data_nodes

    只要这么多数据节点已加入集群,就可以恢复。

上述描述来自官方文档Local Gateway的描述,看完之后有点绕,还是不能完全理解。

stack overflow 上的解释

stack overflow 上的描述相对好理解很多:Difference between expected_nodes and recover_after_nodes parameters。这里做一下搬运工,给出结论。

满足 gateway.recover_* 条件之后会触发记时器,有两种情况

  1. recovery_after_time 为用完,满足 gateway.excepted_* 条件则立即执行数据同步
  2. recovery_after_time 时间用完,那么也会开始执行数据同步

举个栗子

gateway:
    recover_after_nodes: 3
    expected_nodes: 5

虽然上面没有配置 recovery_after_time 属性,但是因为配置了 expected_nodes 所以会有默认值 5m,就是5分钟。

假设集群中有5个node,其中3个node已经恢复正常使用,也就是达到了 recover_after_nodes: 3 的条件。那么如果5分钟之内一共有5个node恢复正常使用,那么会立即进行集群的数据恢复,要不然就是过了5分钟node数量打不到5个,也会触发数据恢复。

欢迎转载,但请注明本文链接,谢谢你。

2018.7.7 17:31

原文地址:https://www.cnblogs.com/xiaoheike/p/9277884.html

时间: 2024-08-04 06:44:30

elasticsearch(es) 集群恢复触发配置(Local Gateway参数)的相关文章

ELasticSearch(五)ES集群原理与搭建

一.ES集群原理 查看集群健康状况:URL+ /GET _cat/health (1).ES基本概念名词 Cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的. Shards 代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大

ELK介绍及搭建 Elasticsearch 分布式集群

笔记内容:ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装es 27.4 配置es 27.5 curl查看es集群情况 ELK介绍 需求背景: 业务发展越来越庞大,服务器越来越多 各种访问日志.应用日志.错误日志量越来越多,导致运维人员无法很好的去管理日志 开发人员排查问题,需要到服务器上查日志,不方便 运营人员需要一些数据,需要我们运维到服务器上分析日志 为什么要用到ELK: 一般我们需要

ELK简介 es集群部署 es插件应用

Top NSD ARCHITECTURE DAY03 案例1:ES集群安装 案例2:ES集群安装配置 案例3:练习curl命令 案例4:练习插件 案例5:插入,增加,删除查询数据 案例6:安装Kibana 1 案例1:ES集群安装 1.1 问题 本案例要求: 准备1台虚拟机 部署elasticsearch第一个节点 访问9200端口查看是否安装成功 1.2 方案 1)ELK是日志分析平台,不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,ELK分别代表: Elasticsearch:

部署带有验证的es集群及创建快照

1?? 环境准备① 关闭防火墙.selinuxsed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configsetenforce 0systemctl stop firewalldsystemctl disable firewalld ② 修改系统最大打开文件数和进程数cat <<EOF >> /etc/security/limits.conf* soft nofile 65536* hard nofile 6

Kafka 0.9+Zookeeper3.4.6集群搭建、配置,新Client API的使用要点,高可用性测试,以及各种坑 (转载)

Kafka 0.9版本对java client的api做出了较大调整,本文主要总结了Kafka 0.9在集群搭建.高可用性.新API方面的相关过程和细节,以及本人在安装调试过程中踩出的各种坑. 关于Kafka的结构.功能.特点.适用场景等,网上到处都是,我就不再赘述了,直接进入正文 Kafka 0.9集群安装配置 操作系统:CentOS 6.5 1. 安装Java环境 Zookeeper和Kafka的运行都需要Java环境,所以先安装JRE,Kafka默认使用G1垃圾回收器,如果不更改垃圾回收器

Kafka 0.9+Zookeeper3.4.6集群搭建、配置,新版Java Client的使用要点,高可用性测试,以及各种坑(二)

上一节中(点此传送),我们完成了Kafka集群的搭建,本节中我们将介绍0.9版本中的新API,以及Kafka集群高可用性的测试 1. 使用Kafka的Producer API来完成消息的推送 1) Kafka 0.9.0.1的java client依赖: <dependency>     <groupId>org.apache.kafka</groupId>     <artifactId>kafka-clients</artifactId>  

RHCS集群套件之用Luci/Ricci实现Web集群的详细配置

RHCS集群介绍请看http://11107124.blog.51cto.com/11097124/1884048 在RHCS集群中每个集群都必须有一个唯一的集群名称,至少有一个fence设备(实在不行可以使用手动fence_manual),且至少要有三个节点,两个节点必须有仲裁磁盘 准备环境 node1:192.168.139.2 node2:192.168.139.4 node4:192.168.139.8 VIP:192.168.139.10 在node1装luci创建集群,并进行集群管理

记一次TokuMX数据库集群恢复

中午在昏睡中接到电话,服务器扩容后数据库启动不了了,于是不假思索的想到了TokuMX需要关闭对透明大页的使用才可以正常启动,而这点恰巧大家都不是很清楚,在这里写下关闭的shell:  echo never > /sys/kernel/mm/transparent_hugepage/enabled  一般情况下将其写入开机启动脚本,否则数据库不能正常启动. 然而当我远程查看了服务器后彻底懵逼了,数据库不见了,印象中服务安装在dev挂载点下,于是我翻遍了dev,全盘grep,find和tokumx相

ES集群修改index副本数报错 :index read-only / allow delete

ES集群修改index副本数,报错 :index read-only / allow delete (api) 原因: es集群数据量增速过快,导致个别es node节点磁盘使用率在%80以上,接近%90 ,由于ES新节点的数据目录data存储空间不足,导致从master主节点接收同步数据的时候失败,此时ES集群为了保护数据,会自动把索引分片index置为只读read-only. 故障处理办法: 1:集群加节点,简单粗暴: 2:降低集群index副本数量: 3:其它:增加磁盘.删除历史数据等: