文档章节

Elastic Search升级方法论

shawnplaying
 shawnplaying
发布于 2016/12/07 15:27
字数 1350
阅读 49
收藏 0

Rolling upgrade

针对cluster,逐一升级每个节点,整个系统对用户可用。不支持大版本major version升级,只能在小版本升级时使用。

升级中新版本的节点是不能向旧版本的节点做shard replication,所以不能长时间运行一套包含不同版本节点的cluster环境。

参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html

1 禁止shard allocation。

当关闭一个节点是,allocation process将会等待一分钟,然后再做shard allocation操作。这个操作可以通过命令来避免。

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

2 停止non-essential indexing并且做synced flush操作。

如果想要indexing操作变快,可以停止non-essential indexing并且做synced flush操作。

POST _flush/synced

一个synced flush请求是一个best effort操作。如果有任何indexing操作,那么可以重复做sysnced flush操作,它对我们来说是安全的。

3 停止和升级单个节点。

首先停止集群中一个节点。然后升级它。

针对每个节点,有几种方式来升级。

比如使用rpm或者dpkg方式来安装新的包。注意config, data, logs, plugins这些目录安放的位置。

还可以从官网下载并解压zip或者tarball文件。

将旧的配置和数据文件挪到新的对应目录下,主要是config和data目录。注意修改ES中集群中目录的地址,比如config/elasticsearch.yml文件中的配置path.data,等等。

4 升级插件。

运行elasticsearch-plugin脚本来安装你需要的正确版本的插件。

5 启动新的节点。

启动新节点并确认它已经被加入cluster中。

GET _cat/nodes

6 重新配置shard allocation。

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

7 等待node恢复。

这是集群会等待shard allocation操作。node恢复后才可以开始升级下一个节点。检查方法:

GET _cat/health

查看status由黄色变为绿色。

注意:

rolling upgrade过程中,高版本节点上的primary shards不会向低版本节点上分配replicas。因为就版本可能认不出新版本的数据格式。

如果集群中只有一个高版本的节点,那么就意味着不会做replica shards的分配操作。那么这时cluster的健康状态是黄色yellow。这样的话,在继续之前查看init和relo这两个column,检查应该没有处于初始化initializing或者分配relocating的shard。

一旦另外的节点被升级,那么replica将会被分配,而cluster状态将会变绿色。

如果shard没有被sync-flushed,那么将会花些时间来恢复。我们可以使用下面请求来查看每个shard的恢复状态。

GET _cat/recovery

8 当集群稳定并且节点恢复后,开始操作其他未升级的节点。

 

Full cluster restart upgrade

参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/restart-upgrade.html

如果跨越大版本升级,那么必须做full cluster restart upgrade。

1 禁止shard allocation。

当关闭一个节点时,allocation process将会立即复制这个关闭节点的shards到其他节点。这有些I/O浪费,可以通过下面命令来禁止。

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "none"
  }
}

2 做synced flush操作。

如果做了synced flush操作,那么shard recovery会加速。

POST _flush/synced

synced flush操作是一种best effort操作,当有pending的indexing操作时,它会失败。但是可以多次尝试。

3 停止并升级所有节点。

停止ES集群服务。升级每个节点。每个节点的升级参考rolling upgrade中的方法。

4 升级所有插件plugin。

升级节点时,必须升级所有插件。使用elasticsearch-plugin脚本来安装正确的插件版本。

5 启动集群。

如果设置了专用的master节点(node.master=true && node.data=false),那么应该首先启动master节点。等待他们形成集群,在处理数据节点之前选中主节点。可以通过查看日志看到进度。

一旦最少的符合条件的主节点找到彼此,他们就形成了集群并选中master。这时开始可以用_cat/health和_cat/nodes查看集群中的节点加入状态。

GET _cat/health

GET _cat/nodes

6 等待黄色状态。

当每个节点都加入集群后,就开始恢复本地存储的primary shard。如果_cat/health报告状态为红色,那么表示不是所有的primary shard都被分配。

当每个节点都恢复了本地shard,状态即变为黄色,表示所有primary shard都被恢复,而不是副本shard被分配。分配操作还是被禁止状态。

7 重新开启分配操作。

在所有的节点都加入集群后才开始副本的分配allocation of replicas。这样主节点可以将副本分配到已经拥有本地shard复制的节点上。这是对于集群中的所有节点来说,可以安全的进行shard分配设置:

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

集群这时可以开始想所有数据节点进行副本shard的分配。这时就可以安全的进行indexing和searching操作。而如果你不做indexing和searching,那么恢复速度会更加快。

可以通过API来查看进程:

GET _cat/health

GET _cat/recovery

_cat/health中的状态栏变绿后,所有主和副本shard都被分配完成。

© 著作权归作者所有

共有 人打赏支持
shawnplaying
粉丝 15
博文 128
码字总数 70642
作品 0
海淀
系统管理员
私信 提问
Elasticsearch插件一——-head插件安装详解(Elasticsearch教程08)|MVP讲堂

作者:阿里云MVP 铭毅 往期内容: 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! Elasticsearch学习,请先看这一篇!(Elasticsearch教程01) Elasticsearch增、删、改、查操...

辰悠
2018/12/14
0
0
Elastic Search 上市了,市值翻倍,这群人财务自由了!

国庆长假,大部分人还深浸在风花雪月之中,而就在昨天(美国时间10月5号),我们 Java 程序员所熟知的大名鼎鼎的 Elastic Search 居然在美国纽约证券交易所上市了! 当说到搜索时,大部分人可...

Java技术栈
2018/10/07
0
0
Elasticsearch 1.7.0/1.6.1 发布,分布式搜索引擎

Elasticsearch 1.7.0 正式发布,基于 Lucene 4.10.4。同时还发布了 Elasticsearch 1.6.1 bug 修复版本。这两个版本都包括一个安全修复,建议所有用户升级最新版本! 下载: 最新稳定版: El...

淡漠悠然
2015/07/17
4.8K
10
centos 7 安装 elasticsearch-6.2.4

安装ES mkdir /data/software/ tar xvf elasticsearch-6.2.4.tar.gz -C /data/software/ cd /data/software/ ln -sv elasticsearch-6.2.4/ elasticsearch 或者 rpm -ivh elasticsearch-6.2.4......

会说话的鱼
2018/07/04
0
0
elasticsearch搜索建议Completion Suggester

目的:实现淘宝、京东搜索建议功能 准备环境:安装elasticsearch, 并安装拼音插件(https://github.com/medcl/elasticsearch-analysis-pinyin)。我安装的环境为当前最新版6.2.4。 参考官网教...

杰仪
2018/05/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

lucene 评分要素解析

基本规则:

Java搬砖工程师
26分钟前
0
0
ubutnu 14.04 安装JIRA

系统版本:Ubuntu 14.04 下载jira安装文件 sudo wget https://downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.1.9-x64.bin 修改文件权限 sudo chmod 777 atl......

Kampfer
36分钟前
0
0
软件开发模型优缺点及其适用范围

瀑布模型、快速原型模型、增量模型、螺旋模型 瀑布模型也称软件生存周期模型。 优点: (1)它在软件工程中占有重要地位,它提供了软件开发的基本框架,这比依靠“个人技艺”开发软件好得多。...

无极之岚
37分钟前
0
0
孩子们各显神通对付 iOS 12「屏幕使用时间」的限制

简评:2018 年秋季,苹果公司推出了 iOS 12,其中备受好评的一项改变是:增加了屏幕使用时间限制,以减轻沉迷手机的状况。三个月过去后,这项功能似乎并没有对孩子造成太多困扰,道高一尺魔高...

极光推送
42分钟前
2
1
springCloud Spring Boot mybatis分布式微服务云架构-docker-feign-hystrix-ribbon(七)

简介 在上一节中,我们讨论了feign+hystrix在项目开发中,除了考虑正常的调用之外,负载均衡和故障转移也是关注的重点,这也是feign + ribbon+hystrix的优势所在,本节我们就讨论一下在feign...

sccspuercode
42分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部