はじめに
こんにちは。StreetFighter大好きエンジニアの @mizai です。
(ちなみに、SF5では、バイソンでスーパープラチナリーグまで行きました。)
今、自分のチームでは、とあるクローラのリビルドを行っています。
クローラサーバもElasticsearchも
CentOS7
そこで起こった問題/解決方法を伝えていければなぁと思います。
今回のトラブル
Elasticsearch(以下、ES)をバージョンアップしようとしたら、できなくて焦った!!
経緯
ES6.1.2でシステムを作っていた。
ある日、6.2.0になっていることに気づいた。
「ESのバージョンアップ、早いなぁ!」と思いながらもバージョン上げたくなって、公式ドキュメントの手順通り作業実施。
(6.2.0にアップデートしたのは、ES新バージョンがでた当日ということは内緒ですw)
公式手順
https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html
「ふむふむ、まぁ yum updateして、入れているプラグイン消して、再インストールしたらいいのね」
ってことで yum update は無事終了。
そして、プラグインを消そうとしたとき!!!
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-icu
Exception in thread "main" java.lang.IllegalArgumentException: plugin [analysis-icu] is incompatible with version [6.2.0]; was designed for version [6.1.2]
at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:224)
at org.elasticsearch.plugins.PluginsService.getPluginBundles(PluginsService.java:329)
at org.elasticsearch.plugins.RemovePluginCommand.execute(RemovePluginCommand.java:89)
at org.elasticsearch.plugins.RemovePluginCommand.execute(RemovePluginCommand.java:67)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:75)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.plugins.PluginCli.main(PluginCli.java:48)
「えええええ!!なにこれ!!!」
と思って焦りました。
エラーのスタックトレースから、ソースコードを見てみたもののよくわからず、、、
「ES消して、再インストールしたら行けんじゃね?」と思って、
yum remove elasticsearch
「お!よし、消えた!」
yum install elasticsearch
「おおお!ちゃんと入った!」
プラグインインストール!!
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
おおお!ちゃんと入ったー!!
結論
ということで、ES消して、再インストールしたらちゃんと最新バージョンになりました。
補足
yum remove elasticsearch
をしたときに、必要な設定ファイルはバックアップ取ってくれてました。
こんな感じ
インストール容量: 31 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Stopping elasticsearch service... OK
削除中 : elasticsearch-6.2.0-1.noarch 1/1
警告: /etc/elasticsearch/jvm.options は /etc/elasticsearch/jvm.options.rpmsave として保存されました。
警告: /etc/elasticsearch/elasticsearch.yml は /etc/elasticsearch/elasticsearch.yml.rpmsave として保存されました。
Deleting log directory... OK
Deleting plugins directory... OK
検証中 : elasticsearch-6.2.0-1.noarch 1/1
削除しました:
elasticsearch.noarch 0:6.2.0-1
完了しました!
最後に
正しいやり方かどうかはわかりませんが、少しでも誰かの参考になれば。