博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch如何安全重启
阅读量:5930 次
发布时间:2019-06-19

本文共 1809 字,大约阅读时间需要 6 分钟。

elasticsearch如何安全重启节点

问题:

elasticsearch集群,有时候可能需要修改配置,增加硬盘,扩展内存等操作,需要对节点进行维护升级。但是业务不能停,如果直接kill掉节 点,可能导致数据丢失。而且集群会认为该节点挂掉了,就开始转移数据,当重启之后,它又会恢复数据,如果你当前的数据量已经很大了,这是很耗费机器和网络 资源的。

stackoverflow的问题上说得更准确:

I have an ES cluster with 4 nodes:

number_of_replicas: 1search01 - master: false, data: falsesearch02 - master: true, data: truesearch03 - master: false, data: truesearch04 - master: false, data: true

I had to restart search03, and when it came back, it rejoined the cluster no problem, but left 7 unassigned shards laying about.

{  "cluster_name" : "tweedle",  "status" : "yellow",  "timed_out" : false,  "number_of_nodes" : 4,  "number_of_data_nodes" : 3,  "active_primary_shards" : 15,  "active_shards" : 23,  "relocating_shards" : 0,  "initializing_shards" : 0,  "unassigned_shards" : 7}

说的就是说shard 表现出来的征兆是出现unassigned,然后开始初始化,rebalance数据,然后就是大量的等待。

解决方案就是:rolling restart

本文转载官方提供的安全重启集群节点的方法:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_rolling_restarts.html

滚动重启

总有一天你会需要做一次集群的滚动重启——保持集群在线和可操作,但是逐一把节点下线。

常见的原因:Elasticsearch 版本升级,或者服务器自身的一些维护操作(比如操作系统升级或者硬件相关)。不管哪种情况,都要有一种特别的方法来完成一次滚动重启。

正常情况下,Elasticsearch 希望你的数据被完全的复制和均衡的分布。如果你手动关闭了一个节点,集群会立刻发现节点的丢失并开始再平衡。如果节点的维护是短期工作的话,这一点就很烦人了,因为大型分片的再平衡需要花费相当的时间(想想尝试复制 1TB 的数据——即便在高速网络上也是不一般的事情了)。

我们需要的是,告诉 Elasticsearch 推迟再平衡,因为对外部因子影响下的集群状态,我们自己更了解。操作流程如下:

  1. 可能的话,停止索引新的数据。虽然不是每次都能真的做到,但是这一步可以帮助提高恢复速度。
  2. 禁止分片分配。这一步阻止 Elasticsearch 再平衡缺失的分片,直到你告诉它可以进行了。如果你知道维护窗口会很短,这个主意棒极了。你可以像下面这样禁止分配:

    PUT /_cluster/settings{    "transient" : {        "cluster.routing.allocation.enable" : "none"    }}
  3. 关闭单个节点。
  4. 执行维护/升级。
  5. 重启节点,然后确认它加入到集群了。
  6. 用如下命令重启分片分配:

    PUT /_cluster/settings{    "transient" : {        "cluster.routing.allocation.enable" : "all"    }}

    分片再平衡会花一些时间。一直等到集群变成 绿色 状态后再继续。

  7. 重复第 2 到 6 步操作剩余节点。
  8. 到这步你可以安全的恢复索引了(如果你之前停止了的话),不过等待集群完全均衡后再恢复索引,也会有助于提高处理速度。
你可能感兴趣的文章
pymongo的安装和使用
查看>>
Spring EL Lists, Maps example
查看>>
宇宙信息交互与信息安全
查看>>
使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库
查看>>
简单的js特效,背景圆球滚动,类似电脑屏幕锁屏气球
查看>>
float与double的范围和精度
查看>>
《转》C语言可变参函数的实现
查看>>
android分析之智能指针
查看>>
MFC+Android模拟器 实现 自动玩“天天爱消除”
查看>>
Linux系统调用过程
查看>>
7-2求最大值及其下标
查看>>
ListUtil集合操作常用方法类
查看>>
CSS hack:区分IE6,IE7,firefox
查看>>
简单的记录一次简单的优化
查看>>
添加遮罩弹窗
查看>>
Web开发者必备的20款超赞jQuery插件
查看>>
linux:shell脚本格式
查看>>
Win32编程原理 - 剪切板小程序
查看>>
洛谷P4009 汽车加油行驶问题(分层最短路)
查看>>
js滚轮事件
查看>>