AWS(Amazon Linux)にElasticsearch 5.6をインストール

皆さん、AWSというものをご存じでしょうか。
Amazonがやっている、クラウド基盤提供サービスです。
クラウドとは何かというともう幅が広すぎて説明できませんが、Amazonはそのクラウドで全方位的に幅広くサービスを提供しています。
ECサイトよりAWSの方が儲かっているらしいです。

この記事は、すでに立ち上がりつつあるサービスの貧弱なインフラをAWSに切り替えるまでの足跡です。
AWSのインスタンスを立ち上げ、Elasticseachやその他ミドルウェアをインストール/設定していきます。

Elasticsearchとは

公式サイトによると、

Elasticsearchは、様々なユースケースを解決する、分散型RESTful検索/分析エンジンです。予期した結果や、そうでないものまで検索できるようにデータを格納するElastic Stackの中核です。

というものだということですが、我々が構築しようとしているWebサービスでは検索エンジンとして利用しています。
従来のRDBという種類のデータベースとは異なり、全文検索などの利用シーンで非常に高速に動作します。

既存環境

ざっと以下のような構成です。
OS:CentOS 7
Elasticsearch 5.5
nginx 1.10.2
php-fpm
MariaDb 10.2.6

最大のボトルネックはメモリが1GBしかないということです。

そのためElasticsearchのメモリ設定を512MBに抑えていますが仮想メモリを3GBも使うという、SWAPが忙しすぎます。
遅いだけならまだしも、ElasticsearchのbulkAPIを使った、ドキュメントを登録するためのJavaバッチでElasticsearchが落ちてしまいます。
これは話になりません。

Elasticsearchを動かすだけでも話にならない容量なのに、そこにMariaDbも動かしてしまっています。
こちらも仮想メモリを1.6GB使っていて、よくOSが落ちないものです。

今のところほとんどアクセスがないので、nginxについては特に問題がありません。
php-fpmについては起動プロセスを最小限に抑えて、爪の先に明かりを灯すかのようにメモリを節約しています。
全然足りませんが。

また今回、ストレージもHDDなので、SSDに変更してパフォーマンス向上を狙っています。

Elasticsearchのインストール

まずサービスに必要なElasticsearchをインストールしました。
また、今回はkuromojiもインストールしています。

以下の公式ブログページの記事を参考にしました。

Amazon EC2 を使用して Elasticsearch クラスタをセットアップする

そのままのタイトルです。
ありがたい。

インスタンスを立ち上げるまでの操作は様々なドキュメントや記事などがありますので割愛します。

ダウンロードとインストール

Javaの確認

まず、Javaが入っていないと話になりません。

ちゃんと入っています。
入っていますが、1.7ではダメなことが後で発覚します。

ElasticsearchのパッケージURLの確認

Elasticsearchのダウンロードサイトで最新のインストールパッケージを確認します。

私の既存環境では5.5を使っていますが、現在の最新版は5.6です。
ドキュメントについては移行しないので、バージョンアップのリスクはないものと思います。
ただ、5.5のライブラリでプログラミングしているJavaバッチが実行できるかどうか、というリスクはあります。
マイナーバージョンの違いなので、さほど心配はしていませんが。

Elasticsearchのインストール

最新版rpmファイルのURLを確認したらインストール

しかし、何かワーニングが出ています。
普段rpmを使わないので意味が分かりませんでしたが、調べてみたところrpmパッケージに署名がありませんよ、ということのようです。
無視することにします。

Elasticsearchが自動起動するように設定します。
systemctlかと思いきや、chkconfig

kuromojiのインストール

引き続いて、kuromojiをインストールします。
先の記事ではbin/plugin installを使うように記載がありますが、binの中にはpluginというファイルはなく、elasticsearch-pluginというシェルスクリプトがあるので、こちらを使うのでしょう。

Javaらしく派手に怒られました。
どうやらJava8ではないとダメなようです。

Javaのバージョンアップ

一旦、インストール済みのJava7をアンインストールし、Java8を入れます。

依存関係にaws-apitoolsなどと出てきましたが、やってはいけないことをやってしまったんでしょうか・・・
今のところこのインスタンスからAWSのAPIを叩くつもりはないので、無視することにします。

Java8をインストールします。

Elasticsearchを起動します。

kuromojiのインストール リトライ

さて、先ほど失敗したkuromojiをインストールします。

インストールが完了しました。

関連記事AWSにnginxをインストール

楽天市場

Amazon.co.jpアソシエイト

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)