`
kfcman
  • 浏览: 383760 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

elasticsearch之节点重启

 
阅读更多

 

Elasticsearch节点重启时背后发生的故事有哪些,应该注意哪些配置内容,本篇文章做一个简单的探讨。

节点离开

在elasticsearch集群中,假设NodeA因为种种原因退出集群,在NodeA上的Shard分片情况(ShardA是主分片,ShardB是某一分片副本)

  1. 在存活节点上找到ShardA的副本,将该副本升格为主分片
  2. 由于ShardB这一分片副本丢失,所以会重新创建相应的分片副本
  3. 在存活的节点中对于分片进行再平衡
    这样做的目的是保证每个分片都有足够的副本,可以避免数据丢失。需要注意的是,步骤二和步骤三牵涉到大量的网络I/O操作。

节点返回

如果离开的节点重新加入集群,elasticsearch为了对数据分片(shard)进行再平衡,会为重新加入的NodeA再次分配数据分片(Shard), 这会再次导致大量的网络I/O操作。

延迟副本的重新分配

如果NodeA在离开前上面存在副本ShardB,重新加入之后还是有副本ShardB,看起来一样,但其实中间已经进行了大量的网络I/O,那么 有没有办法延迟副本的重新分配呢,这样会冒丢失数据的可能(如果在NodeA重新加入之前,其它节点也挂了), 但是可以节省相应的网络开销。

延迟副本分配可以通过设置参数index.unassigned.node_left.delayed_timeout来实现,该参数动态可调,默认值是1分钟(1m)

PUT /_all/_settings
{
  "settings": {
    "index.unassigned.node_left.delayed_timeout": "5m"
  }
}

上述脚本将副本重新分配延迟到5分钟之后。

查看数据分片分布情况

使用elasticsearch中的marvel插件可以很清楚的看到数据分片的分布情况,选取marvel中右上角 DashBoard 中的 Shard Allocation , 可以看到类似于下图的分布情况

更多选项

如果日常维护elasticsearch集群,针对某一节点进行需要重启的更改,那么可以先禁止分片分配,待重启完成后,再打开

PUT _cluster/setting
{
    "cluster.routing.allocation.disable_allocation": true
}

避免节点重启导致的脑裂

如果elasticsearch集群中节点数比较多,而且负载也比较高,这个时候对某一个instance进行重启,很有可能会导致该instance无法找到master而将自己推举为master的情况出现,如何防止,需要调整 elasticsearch.yml 中的内容

discovery.zen.minimum_master_nodes: 2
discovery.zen.ping.timeout: 120s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["host1","host2"]

client.transport.ping_timeout:60s

加快recovery的进程

Elasticsearch在默认情况下将资源更多的分配给正常的traffic,这样给recovery的资源相对有限,会导致整个集群长时间处 于yellow状态,如果机器配置很强劲,那么更改如下配置,可以加快elasticsearch instance重启之后的恢复过程。

cluster.routing.allocation.node_initial_primaries_recoveries: 10
cluster.routing.allocation.node_concurrent_recoveries: 5
indices.recovery.max_bytes_per_sec: 100mb
indices.recovery.concurrent_streams: 5
分享到:
评论

相关推荐

    基于docker-compose一键离线elasticsearch2.0.0集群部署工具

    一键部署工具实现功能如下: 1、支持单节点部署 ...5、支持创建、启动、停止、重启、检测elasticsearch集群状态 说明:工具使用非常简单,只需要修改变量文件,一分钟就可以快速帮你部署elasticsearch集群。

    基于docker-compose一键离线elasticsearch7.6.2集群部署工具

    一键部署工具实现功能如下: 1、支持单节点部署 ...6、支持创建、启动、停止、重启、检测elasticsearch集群状态 说明:工具使用非常简单,只需要修改变量文件,一分钟就可以快速帮你部署elasticsearch集群。

    基于ansible一键离线部署elasticsearch7.6.2容器版分布式集群工具

    4、支持一键部署所有节点或单个elasticsearchr实例依次部署、启动、停止、重启、检查、移除等功能。 5、 支持数据目录、http端口、tcp端口、集群密码、集群名称、节点名称、jvm大小等参数的灵活配置。 6、 支持数据...

    word源码java-elasticsearch-analysis-ik-master:ik热分词库基于mysql修改

    (2)es是分布式的,可能有数百个节点,你不能每次都一个一个节点上面去修改 es不停机,直接我们在外部某个地方添加新的词语,es中立即热加载到这些新词语 热更新的方案 (1)修改ik分词器源码,然后手动支持从mysql...

    k8s二进制文件以及docker二进制文件

    其中 master , client , data 部署文件中 配置的 CLUSTER_NAME 指的是 elasticsearch集群名称 Java运行自行设置,最大值和最小值需要一致。 最小为-Xms256m 部署kibana 执行命令:kubectl create -f ...

    es6-node-starter:具有内置Rest API身份验证的ES67节点入门套件

    Nodemon自动重启开发服务器 生产环境配置 内置REST API身份验证 MongoDB配置 使用Airbnb eslint配置进行整理 预习 入门 克隆回购 git clone https://github.com/DimitriMikadze/es6-node-starter.git npm安装依赖项 ...

    centos7.5分布式平台搭建.docx

    ElasticSearch 6.5.1 Kibana 6.5.1 Logstash 6.5.1 Neo4j 3.4 esxi 6.5 MAVEN 3.6 ElasticSearch 6.5.1 Kibana 6.5.1 Logstash 6.5.1 目录: 1. ESXI6.5创建centos虚拟机 10 1.1. 准备工作 10 1.2. 创建新的虚拟机 ...

    node-developer-boilerplate:ES6 + Node.js和npm Developer的样板

    使用在应用程序更改时重启节点 使用代码 使用监视节点服务器性能 使用Javascript Javascript代码样式 通过Javascript样式 自动语义发布 代码基准测试与 通过漏洞扫描 通过与 , , 和进行ES6 +测试 通过从测试...

    ApiInsights:将请求日志通过NLog输送到Logstash

    ##日志配置: 1、执行WebApp下的db.sql创建mysql数据库,如果只测试Logstash可以不安装数据库 2、修改WebApp下的nlog.config文件type为Network的节点的Logstash接受地址 ...output { elasticsearch

    数据库项目组日常运维及应急故障处理手册.docx

    此时,立即重启监听,监听重启一般能在1分钟之内完成。 Lsnrctl restart 3、数据库挂起 立即重启数据库。 Startup 4、归档目录满 (1)在没有部署OGG数据同步的情况下,立即清理归档日志文件。 (2)如果...

    koa-mongo:Koa2 +猫鼬+ TypeScript游乐场

    Koa2需要节点v7.6.0或更高版本才能获得ES2015和异步功能支持。 开始使用 在启动应用程序之前,请确保MongoDB服务正在运行! $ npm i $ npm run tsc $ npm start 文件 请参考文件夹doc以获取更多信息。 依存关系 为...

    Typescript-VueJs-Electron-Bulma-Starter:Typescript-VueJs-Bulma-Starter

    编译的前端src用TypeScript和ES6编写的源server -Node.js服务器client -基于Vue.js的UI .editorconfig - 文件的格式设置代码.nvmrc包含所需.nvmrc版本(与一起) nodemon.json用于重启节点服务器的设置tsconfig.json...

    zno-courses:布局上的https布局

    OptimizedHTML 5 - 轻量级启动 HTML5 模板,带有Gulp 4 、 Sass/Scss/Less/Stylus 、 Browsersync 、 Autoprefixer 、 Uglify-ES 、 Clean-CSS 、 Rsync 、 CSS Reboot (引导重启)。 它使用响应式图像优化的最佳...

    springboot参考指南

    连接Elasticsearch ii. 29.5.2. Spring Data Elasticseach仓库 ix. 30. 消息 i. 30.1. JMS i. 30.1.1. HornetQ支持 ii. 30.1.2. ActiveQ支持 iii. 30.1.3. 使用JNDI ConnectionFactory iv. 30.1.4. 发送消息 v. ...

Global site tag (gtag.js) - Google Analytics