Elasticsearch 升级记录

2016-08-13  本文已影响1273人  killin

前言

本文记录的是 ES 1.5.0 升级到 ES 2.3.3 的过程。包括升级要考虑的要点以及升级过程中遇到的问题。

升级要点

  1. 数据兼容性检查
  2. 客户端升级
  3. 服务端升级
  4. ES 插件升级

准备工作


数据兼容性检查

ES 升级涉及到索引的迁移,有些版本之间差异较大,有可能出现索引不兼容的情况。ES 官方提供了一个插件工具,用于检查索引是否兼容。插件 Elasticsearch Migration Helper

客户端升级

ES 2.3.3的 Java API 相比 ES 1.5.0 有较大的变化,所以项目的 ES 客户端代码需要引入 ES 2.3.3 的 jar 包,修改相应的代码。(升级 jar 包,需要更改的代码会有报错提示,按照这个改就行了)。API 的更新内容可查看:Java API changes

服务端升级

Elasticsearch 2.3.3 提供压缩包和软件包两种安装方式。压缩包只需解压,然后进入 bin 目录运行 Elasticsearch 脚本。软件包安装需要用上 Linux 的包安装工具(如:rpm),与压缩包安装方式相比,软件包安装为后面作为 service 运行提供了方便的配置。1.5.0 版本要以 service 方式运行,需要拷贝一个 service 项目elasticsearch-servicewrapper, 2.3.3则不需要,以软件包的方式安装好就可以通过 service 启动。下面我会介绍两种安装方式的具体过程。

软件包安装

  1. 下载软件包 elasticsearch-2.3.3.rpm,
  2. 安装 rpm -i elasticsearch-2.3.3.rpm安装过程必须有 root 权限)

完成以上两个步骤,运行 service elasticsearch start发现还启动不了。一般是 Java 环境的配置问题。
注意service elasticsearch start必须用 root 运行,因为在启动过程中会使用到只有 root 用户才有权限的命令(runuser)。

在配置 Java 环境之前,先了解一下 ES 安装后的目录结构
Directory Layout
。软件包安装完以后有两个非常重要的文件,一个是 /etc/init.d/elasticsearch,这是 service 运行 elasticsearch 的启动脚本;另一个是/etc/sysconfig/elasticsearch,这是 service 运行 elasticsearch 的启动配置文件。启动配置文件的配置项可参考Configuration File

配置 Java 环境: 2.3.3 要求 Java 1.8,这次升级用的是jdk1.8.0_91。配置 jdk 有两种方式:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
java -version

用上面这种方式安装好以后不需要再配置 Java 环境,安装过程就已经配置好了,接下来 service elasticsearch start 启动就行了。
但我们生产环境部署 Java 程序,一般习惯于使用非安装版的 jdk 环境,在启动时配置 JAVA_HOME,CLASSPTH,PATH 等环境变量。2.3 版本的 ES 通过 service 脚本启动,在脚本中会重置JAVA_HOME,PATH 环境变量,所以在执行 service elasticsearch start 命令前设置环境变量是无效的。
原因如下:
/etc/init.d/elasticsearch


/etc/init.d/functions

解决办法很简单。在 /etc/sysconfig/elasticsearch 加入如下配置


启动以后,2.3 默认是不允许外部机器访问的,也不会自动加入集群。要允许外部访问和加入集群,需要在 elasticsearch.yml 配置

discovery.zen.ping.unicast.hosts: 10.173.227.228:9300,10.173.225.74:9300
network.bind_host: 0.0.0.0
network.publish_host: 10.173.227.228

ES 插件升级

目前常用的几个插件如 head、kopf、ik anaylysis 都做了相应的更新。其中 ik analysis 的变化较大。还有一点就是 bigdesk 插件在 2.3.3 版本用不了了,作者貌似也没有更新的意愿。

上一篇 下一篇

猜你喜欢

热点阅读