当前位置: 首页 > news >正文

Elasticsearch 2.3.0 老版本升级指南

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    Elasticsearch通常可以使用滚动升级过程,导致服务不中断。本文详细介绍如何执行滚动升级与集群的升级重启。Elasticsearch不是所有版本都可以直接升级。升级前请先查阅相关文档,然后进行数据备份,最好在测试环境下模拟做一遍。升级可以参照以下内容。

从0.90.x到2.x需要全集群重启。

从1.x到2.x需要全集群重启。

从2.x到2.y可以不用全部重启,使用滚动升级完成(y>x)。

插件问题,在升级的时候,同时要考虑到插件问题,最好插件的版本和Elasticsearch版本一致。

在每个节点上升级和重启的过程为:
1、关闭Elasticsearch
2、升级Elasticsearch
3、升级插件
4、启动Elasticsearch

集群重启步骤:

1、关闭分片分配。

当我们视图关闭一个节点的时候,Elasticsearch会立即试图复制这个节点的数据到集群中的其他节点上。这将导致大量的IO请求。在关闭该节点的时候可以通过设置一下参数来避免此问题的发生。

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

2、执行一个同步刷新

当停止一个索引的时候,分片的恢复会很快,所以要进行同步刷新请求。

POST /_flush/synced

同步刷新请求是非常有效的一种操作,当任何索引操作失败的时候,可以执行同步刷新请求,必要的时候可以执行多次。

3、关闭和升级所有节点
停止在群集中的所有节点上的服务。每一个节点都要进行单独升级。这个主要就是文件替换操作,注意保留日志目录。

4、启动集群

如果你有专门的主节点(node.master 节点设置为true和node.data设置为false),则先启动主节点。等待它们形成一个集群,然后选择一个主数据节点进行启动。你可以通过查看日志来检查启动情况。通过下面命令可以监控集群的启动情况,检查所有节点是否已成功加入群集。

GET _cat/health

GET _cat/nodes

5、等待黄色集群状态

当节点加入集群后,它首先恢复存储在本地的主分片数据。最初的时候,通过 _cat/health请求发现集群的状态是红色,意味着不是所有的主分片都已分配。当每个节点都恢复完成后,集群的状态将会变成黄色,这意味着所有主分片已经被找到,但是并不是所有的复本分片都恢复。

6、重新分配

延迟的副本的分配直到所有节点都加入集群,在群集的所有节点,可以重新启用碎片分配:

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

这个时候集群将开始复制所有副本到数据节点上,这样可以安全的恢复索引和搜索,如果你能延迟索引和搜索直到所有的碎片已经恢复,这样可以加快集群的恢复。可以通过下面API监控恢复的进度和健康情况:

GET _cat/health

GET _cat/recovery

最后当集群的状态出现为绿色的时候,表示本次集群升级全部完成。

赛克蓝德 secisland  

滚动升级

滚动升级允许Elasticsearch集群升级一个节点,同时又不影响系统的使用。在同一个集群中的所有节点的版本最好保持一致,否则可能会产生不可预知的后果。滚动升级的步骤如下:

1、关闭分片分配。

当我们视图关闭一个节点的时候,Elasticsearch会立即试图复制这个节点的数据到集群中的其他节点上。这将导致大量的IO请求。在关闭该节点的时候可以通过设置一下参数来避免此问题的发生。

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

2、停止不必要的索引和执行同步刷新(可选)

您可以在升级过程中继续索引。然而,如果你暂时停止不必要的索引碎片,但它恢复要快得多。所以可以执行同步刷新操作。

POST /_flush/synced

同步刷新请求是非常有效的一种操作,当任何索引操作失败的时候,可以执行同步刷新请求,必要的时候可以执行多次。

3、停止和升级一个节点

在启动升级前,将节点中的一个节点关闭。可以通过绿色解压安装或者通过rpm等安装包安装。

不管是解压安装还是压缩包安装都要保留之前的数据文件不能被破坏。可以在新的目录中安装,把path.conf和path.data的位置指向之前的数据。

4、启动升级节点

启动“升级”节点,并通过接口检查是否正确:

GET _cat/nodes

5、启用共享配置
一旦节点加入群集,在节点重新启用碎片分配:

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

6、等待节点恢复
你应该等待集群升级的下一个节点之前完成碎片分配。可以通过以下接口进行检查:

GET _cat/health

等待的状态栏从黄到绿色。现态绿色意味着所有主分片和副本分片已经完成分配。

重要:在滚动升级期间,主碎片被分配到一个更高版本节点不会有副本分配到一个较低的版本节点,,因为新版本的数据结构可能旧版本不能识别。

一旦另一个节点升级,副本将被分配,群集的健康状态将达到绿色。

没有同步刷新碎片可能需要一些时间来恢复。恢复的状态和每个节点的监控可以用以下接口。

GET _cat/recovery

如果你停止了索引,那么恢复索引的恢复是安全的。

7、重复其他节点

当集群是稳定的,节点已经恢复,重复上述步骤,把所有剩余的节点进行升级。

赛克蓝德(secisland)后续会逐步对Elasticsearch的最新版本的各项功能进行分析,近请期待。也欢迎加入secisland公众号进行关注。

转载于:https://my.oschina.net/secisland/blog/672715

相关文章:

  • java web
  • Office online server 部署
  • JRE与JDK简介
  • ConcurrentHashMap
  • Oracle语句异常
  • jmeter 302请求测试
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • Scrum4.0
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 打印出100到999的水仙花数
  • HDOJ/HDU 2568 前进(简单题)
  • java实现上传图片进行切割
  • XNA游戏开发之滚动背景
  • Java程序中添加播放MIDI音乐功能
  • string与char*的转换(转载)
  • CSS居中完全指南——构建CSS居中决策树
  • express如何解决request entity too large问题
  • Git初体验
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • TCP拥塞控制
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue 重置组件到初始状态
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 构建工具 - 收藏集 - 掘金
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 深度学习入门:10门免费线上课程推荐
  • 实现菜单下拉伸展折叠效果demo
  • 一天一个设计模式之JS实现——适配器模式
  • 带你开发类似Pokemon Go的AR游戏
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​iOS安全加固方法及实现
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Note)C++中的继承方式
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (黑马C++)L06 重载与继承
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • .bat批处理出现中文乱码的情况
  • .Mobi域名介绍
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core 中插件式开发实现
  • .NET MVC 验证码
  • .net开发引用程序集提示没有强名称的解决办法
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [1204 寻找子串位置] 解题报告
  • [BUG]vscode插件live server无法自动打开浏览器
  • [C#] 如何调用Python脚本程序
  • [Django 0-1] Core.Handlers 模块