先日社内LT大会で「藤岡弘、」愛を、 思う存分プレゼンしたhamanokamiです(☝ ՞ਊ ՞)☝
さて弊社クイックでは、社内システムの検索機能に、 Elasticsearchを使用しています。
ただ去年の9月まではバージョンが1.3!!!という、 恐竜時代のElasticsearchを使用していました。
約2年も前から「バージョンアップしたい×2」と思っていたので、 バージョンアップができたときはひとりで感動していました。
もちろんひとりで打ち上げにも行きました。(ブログ書いているときに、「打ち上げには呼べよ!!」とつっこまれました)
ということで、ここからはElasticsearchのバージョンを、 1.3から5.5にアップグレードした話をしていきます。
バージョンアップ以前の環境情報
- Elasticsearch: 1.3(yumでインストール)
Elasticsearch本体をアップグレードする手順
まず1系から5系のアップグレードはできないため、 一旦2系にアップグレードしてから、5系にアップグレードするという、 大きく分けて2段階のステップが必要です。
1系から2系にアップグレード
作業するサーバーは、もちろんElasticsearchがインストールされているサーバーです。
まずシャード割り当てを無効にします。
curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{ "persistent": { "cluster.routing.allocation.enable": "none" } }'
リスタート高速化のために、synced flushの手動実行します。
curl -XPUT 'http://localhost:9200/_flush/synced'
Elasticsearchを停止させます。
sudo /etc/init.d/elasticsearch stop
2系用のElasticsearchのレポジトリをインポートします。
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
インポートしたレポジトリの設定を書き換えます。
sudo vi /etc/yum.repos.d/elasticsearch.repo [elasticsearch-2.x] name=Elasticsearch repository for 2.x packages baseurl=https://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
Elasticsearchをアップグレードします。
sudo yum update elasticsearch
Elasticsearch設定ファイルを修正します。
sudo vi /etc/sysconfig/elasticsearch
# CONF_FILE=/etc/elasticsearch/elasticsearch.yml // コメントアウト
インデックスが残っている場合は、インデックスを削除します。
sudo rm -R /var/lib/elasticsearch/【クラスタ名】/nodes/0/indices
Elasticsearchが無事起動できるか確認します。
sudo /etc/init.d/elasticsearch start curl -XGET 'http://localhost:9200/_cat/nodes'
無事起動していることが確認できたら、次のステップへ。
2系から5系にアップグレード
さきほど起動させたばかりのElasticsearchを停止させます。
sudo /etc/init.d/elasticsearch stop
5系用のElasticsearchのレポジトリをインポートします。
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
インポートしたレポジトリの設定を書き換えます。
sudo vi /etc/yum.repos.d/elasticsearch.repo [elasticsearch-5.x] name=Elasticsearch repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Elasticsearchをアップグレードします。
sudo yum update elasticsearch
Elasticsearch関連の設定ファイルを修正します。 /etc/sysconfig/elasticsearchは今回新しく作成されたファイルを使用します。
sudo vi /etc/sysconfig/elasticsearch.rpmnew ES_HOME=/usr/share/elasticsearch JAVA_HOME=【任意のPath】 CONF_DIR=/etc/elasticsearch DATA_DIR=/var/lib/elasticsearch LOG_DIR=/var/log/elasticsearch ES_USER=elasticsearch MAX_LOCKED_MEMORY=unlimited
sudo mv /etc/sysconfig/elasticsearch /etc/sysconfig/bk_elasticsearch sudo mv /etc/sysconfig/elasticsearch.rpmnew /etc/sysconfig/elasticsearch
/etc/elasticsearch/elasticsearch.ymlも同様です。
sudo vi /etc/elasticsearch/elasticsearch.yml.rpmnew cluster.name: 【任意】 node.name: 【任意】 bootstrap.memory_lock: true network.host: 【任意】 http.port: 9200 bootstrap.system_call_filter: false xpack.security.enabled: false
sudo mv /etc/sysconfig/elasticsearch /etc/sysconfig/bk_elasticsearch sudo mv /etc/sysconfig/elasticsearch.rpmnew /etc/sysconfig/elasticsearch
Javaのヒープサイズを修正します。
sudo vi /etc/elasticsearch/jvm.options
-Xms8g
-Xmx8g
ES_HEAP_SIZE=10g
デフォルトのユーザプロセス数の上限を修正します。
sudo vi /etc/security/limits.conf
elasticsearch - nproc 2048
ファイルディスクリプタの上限を修正します。
sudo vi /usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK=infinity
必要なプラグインをインストールします。
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
Elasticsearchが無事起動できるか確認します。
sudo /etc/init.d/elasticsearch start curl -XGET 'http://localhost:9200/_cat/nodes'
無事起動できたら、シャード割り当てを有効にします。
curl -XPUT 'http://localhost:9200/_cluster/settings' -d '{ "persistent": { "cluster.routing.allocation.enable": "all" } }'
これでアップグレードは完了です。 もしJavaのアップグレードも必要な場合は、 下記手順でインストールしてください。
cd /usr/local/src sudo wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jre-8u144-linux-x64.tar.gz" sudo mkdir /usr/java_8/ sudo tar zxvf jre-8u144-linux-x64.tar.gz -C /usr/java_8/ sudo mv /usr/java/ /usr/java_7/ sudo mv /usr/java_8/ /usr/java/
参考
終わりに
アップグレードは完了したけど、既存のインデックス構成では動きません。 エンジニアならご存知のとおり、メジャーバージョンが変わると使えないものがでてきたりします。 そこらへんの話はまた今度します。 ほな!
\\『明日のはたらくを創る』仲間を募集中!! // 919.jp