文档章节

Elastic Search升级方法论

shawnplaying
 shawnplaying
发布于 2016/12/07 15:27
字数 1350
阅读 40
收藏 0
点赞 0
评论 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
粉丝 14
博文 128
码字总数 70642
作品 0
海淀
系统管理员
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......

会说话的鱼
07/04
0
0
Elastic Search学习笔记1——安装elasticsearch2.4.6

Elastic Search 简介 1.基于Apache Lucene的开源搜索引擎 2.采用Java编写 RESTful API风格 3.较容易的横向扩展 应用场景 1.海量数据分析引擎 2.数据搜索引擎 3.数据仓库 官网 https://www.el...

晨猫
03/09
0
0
linux上Elasticsearch 安装配置、网页访问

一、ElasticSearch简述 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条...

yanfengwang
06/26
0
0
centos7上elastic search安装填坑记

注: 本文首发于 My 公众号 CodeSheep ,可 长按 或 扫描 下面的 小心心 来订阅 ↓ ↓ ↓ 下载elastic search 5.3.0 启动ES 按照道理应该就可以了,然而接下来各种坑一一出现,分别阐述 错误...

CodeSheep
01/08
0
0
当ES赶超Redis,这份ES进修攻略不容错过!

从4月DB-Engines最新发布的全球数据库排名中,我们赫然发现ElasticSearch逆袭超越了Redis,从原先的第9名上升至第8名,而Redis则落后一名,排在了其后。 事实上,这场逆袭并不算太让人意外。...

DBAplus社群
04/15
0
0
基于Docker部署ELK (Elasticsearch, Logstash, Kibana)集中日志处理平台,及在Spring Boot应用

当我们还是单体部署我们的Spring Boot项目的时候,日志通常都是放在我们的Linux服务器目录,使用简单的Spring Boot已经包含的Logback框架即可实现。当我们基于Docker部署我们的分布式或者集群...

ImWiki
05/27
0
0
The Future of Compass & ElasticSearch

Posted by: Shay Banon on 07/07/2010 Its been a long time since I blogged about Compass, and I guess its about time to discuss Compass, ElasticSearch, and how they relate to one ......

杨尚川
2015/04/08
0
0
初探 ELK - 每天5分钟玩转 Docker 容器技术(89)

在开源的日志管理方案中,最出名的莫过于 ELK 了。ELK 是三个软件的合称:Elasticsearch、Logstash、Kibana。 Elasticsearch 一个近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是...

CloudMAN
2017/11/03
0
0
Elasticsearch 集群版本升级步骤及注意事项

1、升级前的准备工作 从Elasticsearch 的官方网站 https://www.elastic.co/downloads/elasticsearch 下载最新版本的Elasticsearch,为了线上方便对数据包的管理,一版选择 .gz.tar 格式或者 ...

Galen_Z
2015/05/29
0
2
Docker 部署ELK 日志分析

Docker 部署ELK 日志分析 elk集成镜像包 名字是 sebp/elk 安装 docke、启动 yum install docke service docker start Docker至少得分配3GB的内存;不然得加参数 -e ESMINMEM=128m -e ESMAXM...

yikayi
06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql 主从复制中遇到的错误!

。。。。。

万建宁
10分钟前
0
0
DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
20分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
23分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
24分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
29分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
32分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
34分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
34分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
37分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部