文档章节

Elasticsearch 2.3.0 老版本升级指南

赛克蓝德
 赛克蓝德
发布于 2016/05/10 12:34
字数 1717
阅读 1293
收藏 17

    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公众号进行关注。

© 著作权归作者所有

共有 人打赏支持
赛克蓝德
粉丝 292
博文 118
码字总数 146834
作品 2
南京
高级程序员
私信 提问
渣渣菜鸡为什么要看 ElasticSearch 源码?

前提 人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需,大型企业早已淹没在系统生成的浩瀚数据流当中。大数据技术业已集中在如何存储和处理这些海量的数据...

Java小铺
08/10
0
0
Elasticsearch 6.0.0 正式发布,带来大量新特性

在 Elasticsearch 5.0.0 发布之后,Elasticsearch 在333个 commite、2236 个合并请求下,发布了基于 Lucene 7.0.1 的 Elasticsearch 6.0.0 正式版。 Elasticsearch 6.0.0 下载地址 Elastics...

王练
2017/11/15
6.5K
21
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
GitLab 11.5 将支持 Elasticsearch 6,放弃支持 5.5 及更低版本

近日,GitLab 发表的一篇博客表示,在 Gitlab 11.5(将于2018年11月22日发布)中,GitLab 集成的 Elasticsearch 将支持 Elasticsearch 6,并且将不再支持 5.5 或更低版本。请在升级到 GitLab...

局长
11/19
2.3K
14
Elasticsearch 集群版本升级步骤及注意事项

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

Galen_Z
2015/05/29
0
2

没有更多内容

加载失败,请刷新页面

加载更多

微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
2
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0
大数据教程(9.5)用MR实现sql中的jion逻辑

上一篇博客讲解了使用jar -jar的方式来运行提交MR程序,以及通过修改YarnRunner的源码来实现MR的windows开发环境提交到集群的方式。本篇博主将分享sql中常见的join操作。 一、需求 订单数据表...

em_aaron
今天
3
0
十万个为什么之什么是resultful规范

起源 越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点...

尾生
今天
3
0
Terraform配置文件(Terraform configuration)

Terraform配置文件 翻译自Terraform Configuration Terraform用文本文件来描述设备、设置变量。这些文件被称为Terraform配置文件,以.tf结尾。这一部分将讲述Terraform配置文件的加载与格式。...

buddie
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部