前言
本文記錄的是 ES 1.5.0 升級到 ES 2.3.3 的過程真竖。包括升級要考慮的要點(diǎn)以及升級過程中遇到的問題局荚。
升級要點(diǎn)
- 數(shù)據(jù)兼容性檢查
- 客戶端升級
- 服務(wù)端升級
- ES 插件升級
準(zhǔn)備工作
- Java版本: jdk1.8.0_91
- 系統(tǒng)環(huán)境: CentOS,2.6.32-431.23.3.el6.x86_64
- Elasticsearch 2.3.3 的 tar 包和 rpm 軟件包
數(shù)據(jù)兼容性檢查
ES 升級涉及到索引的遷移瑟啃,有些版本之間差異較大,有可能出現(xiàn)索引不兼容的情況莫绣。ES 官方提供了一個(gè)插件工具材泄,用于檢查索引是否兼容。插件 Elasticsearch Migration Helper
客戶端升級
ES 2.3.3的 Java API 相比 ES 1.5.0 有較大的變化弓坞,所以項(xiàng)目的 ES 客戶端代碼需要引入 ES 2.3.3 的 jar 包割去,修改相應(yīng)的代碼。(升級 jar 包昼丑,需要更改的代碼會(huì)有報(bào)錯(cuò)提示,按照這個(gè)改就行了)夸赫。API 的更新內(nèi)容可查看:Java API changes
服務(wù)端升級
Elasticsearch 2.3.3 提供壓縮包和軟件包兩種安裝方式菩帝。壓縮包只需解壓,然后進(jìn)入 bin 目錄運(yùn)行 Elasticsearch 腳本茬腿。軟件包安裝需要用上 Linux 的包安裝工具(如:rpm)呼奢,與壓縮包安裝方式相比,軟件包安裝為后面作為 service 運(yùn)行提供了方便的配置切平。1.5.0 版本要以 service 方式運(yùn)行握础,需要拷貝一個(gè) service 項(xiàng)目elasticsearch-servicewrapper, 2.3.3則不需要,以軟件包的方式安裝好就可以通過 service 啟動(dòng)悴品。下面我會(huì)介紹兩種安裝方式的具體過程禀综。
軟件包安裝
- 下載軟件包 elasticsearch-2.3.3.rpm,
- 安裝
rpm -i elasticsearch-2.3.3.rpm
(安裝過程必須有 root 權(quán)限)
完成以上兩個(gè)步驟,運(yùn)行 service elasticsearch start
發(fā)現(xiàn)還啟動(dòng)不了苔严。一般是 Java 環(huán)境的配置問題定枷。
注意:service elasticsearch start
必須用 root 運(yùn)行,因?yàn)樵趩?dòng)過程中會(huì)使用到只有 root 用戶才有權(quán)限的命令(runuser)届氢。
在配置 Java 環(huán)境之前欠窒,先了解一下 ES 安裝后的目錄結(jié)構(gòu)
Directory Layout。軟件包安裝完以后有兩個(gè)非常重要的文件退子,一個(gè)是 /etc/init.d/elasticsearch
岖妄,這是 service 運(yùn)行 elasticsearch 的啟動(dòng)腳本型将;另一個(gè)是/etc/sysconfig/elasticsearch
,這是 service 運(yùn)行 elasticsearch 的啟動(dòng)配置文件荐虐。啟動(dòng)配置文件的配置項(xiàng)可參考Configuration File
配置 Java 環(huán)境: 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 環(huán)境,安裝過程就已經(jīng)配置好了缚俏,接下來 service elasticsearch start
啟動(dòng)就行了惊搏。
但我們生產(chǎn)環(huán)境部署 Java 程序,一般習(xí)慣于使用非安裝版的 jdk 環(huán)境忧换,在啟動(dòng)時(shí)配置 JAVA_HOME,CLASSPTH,PATH 等環(huán)境變量恬惯。2.3 版本的 ES 通過 service 腳本啟動(dòng),在腳本中會(huì)重置JAVA_HOME,PATH 環(huán)境變量亚茬,所以在執(zhí)行 service elasticsearch start
命令前設(shè)置環(huán)境變量是無效的酪耳。
原因如下:
/etc/init.d/elasticsearch
/etc/init.d/functions
解決辦法很簡單。在 /etc/sysconfig/elasticsearch 加入如下配置
啟動(dòng)以后刹缝,2.3 默認(rèn)是不允許外部機(jī)器訪問的碗暗,也不會(huì)自動(dòng)加入集群。要允許外部訪問和加入集群梢夯,需要在 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 插件升級
目前常用的幾個(gè)插件如 head言疗、kopf、ik anaylysis 都做了相應(yīng)的更新颂砸。其中 ik analysis 的變化較大噪奄。還有一點(diǎn)就是 bigdesk 插件在 2.3.3 版本用不了了,作者貌似也沒有更新的意愿人乓。