Amazon Linux にElasticsearch5.4をインストール

Amazon LinuxにElasticsearchのインストールをする手順を記載する。

Java1.8.0のインストール

Elasticsearchの起動にはJava(OpenJDK 1.8.0_73以上)が必要なので、インストールする

Javaのインストール

# バージョンの確認
$ java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (amzn-2.6.9.0.71.amzn1-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
$

# OpenJDK 1.8.0のインストール
$ sudo yum install java-1.8.0-openjdk-devel
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                                                                                            | 2.1 kB  00:00:00     
amzn-updates                                                                                                                                                         | 2.3 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.131-2.b11.30.amzn1 will be installed
--> Processing Dependency: java-1.8.0-openjdk = 1:1.8.0.131-2.b11.30.amzn1 for package: 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64
--> Processing Dependency: libawt_xawt.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64
--> Processing Dependency: libawt_xawt.so()(64bit) for package: 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.131-2.b11.30.amzn1 will be installed
--> Processing Dependency: java-1.8.0-openjdk-headless = 1:1.8.0.131-2.b11.30.amzn1 for package: 1:java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64
--> Running transaction check
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.131-2.b11.30.amzn1 will be installed
amzn-main/latest/filelists_db                                                                                                                                        | 5.1 MB  00:00:00     
amzn-updates/latest/filelists_db                                                                                                                                     | 1.0 MB  00:00:00     
--> Processing Dependency: copy-jdk-configs >= 1.1-3 for package: 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64
--> Processing Dependency: lksctp-tools(x86-64) for package: 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64
--> Running transaction check
---> Package copy-jdk-configs.noarch 0:1.2-1.2.amzn1 will be installed
---> Package lksctp-tools.x86_64 0:1.0.10-7.7.amzn1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================
 Package                                               Arch                             Version                                                Repository                              Size
============================================================================================================================================================================================
Installing:
 java-1.8.0-openjdk-devel                              x86_64                           1:1.8.0.131-2.b11.30.amzn1                             amzn-updates                            12 M
Installing for dependencies:
 copy-jdk-configs                                      noarch                           1.2-1.2.amzn1                                          amzn-main                               13 k
 java-1.8.0-openjdk                                    x86_64                           1:1.8.0.131-2.b11.30.amzn1                             amzn-updates                           236 k
 java-1.8.0-openjdk-headless                           x86_64                           1:1.8.0.131-2.b11.30.amzn1                             amzn-updates                            39 M
 lksctp-tools                                          x86_64                           1.0.10-7.7.amzn1                                       amzn-main                               89 k

Transaction Summary
============================================================================================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 51 M
Installed size: 143 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): copy-jdk-configs-1.2-1.2.amzn1.noarch.rpm                                                                                                                     |  13 kB  00:00:00     
(2/5): java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64.rpm                                                                                                        | 236 kB  00:00:00     
(3/5): lksctp-tools-1.0.10-7.7.amzn1.x86_64.rpm                                                                                                                      |  89 kB  00:00:00     
(4/5): java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64.rpm                                                                                                  |  12 MB  00:00:01     
(5/5): java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64.rpm                                                                                               |  39 MB  00:00:02     
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                        16 MB/s |  51 MB  00:00:03     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : copy-jdk-configs-1.2-1.2.amzn1.noarch                                                                                                                                    1/5
  Installing : lksctp-tools-1.0.10-7.7.amzn1.x86_64                                                                                                                                     2/5
  Installing : 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                            3/5
  Installing : 1:java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                                     4/5
  Installing : 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                               5/5
  Verifying  : lksctp-tools-1.0.10-7.7.amzn1.x86_64                                                                                                                                     1/5
  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                            2/5
  Verifying  : 1:java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                                     3/5
  Verifying  : 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                               4/5
  Verifying  : copy-jdk-configs-1.2-1.2.amzn1.noarch                                                                                                                                    5/5

Installed:
  java-1.8.0-openjdk-devel.x86_64 1:1.8.0.131-2.b11.30.amzn1                                                                                                                                

Dependency Installed:
  copy-jdk-configs.noarch 0:1.2-1.2.amzn1           java-1.8.0-openjdk.x86_64 1:1.8.0.131-2.b11.30.amzn1           java-1.8.0-openjdk-headless.x86_64 1:1.8.0.131-2.b11.30.amzn1          
  lksctp-tools.x86_64 0:1.0.10-7.7.amzn1           

Complete!
$

バージョンの変更

デフォルトからJavaがインストールされていた場合、明示的に使用するJavaのバージョンを変更する必要がある。alternativesコマンドを使用してJavaのバージョンを指定する。

# Javaのバージョンを変更する
$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2
# 再度バージョンを確認
$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
$


# PATHが通っているか確認
$ echo $JAVA_HOME
/usr/lib/jvm/jre

rpmパッケージからインストール

CentOS5ではパッケージからのインストールはできないが、Amazon LinuxはCentOS6系のため、パッケージからのインストールが可能となる。

PGP鍵の登録

Elasticsearchのパッケージは暗号化されているため、PGP鍵の登録が必要となる。

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
$
$ sudo touch /etc/yum.repos.d/elasticsearch.repo

elasticsearch.repoの追記

yumコマンドでインストールするため、リポジトリ登録をする。/etc/repos.d配下にelasticsearch.repoを作成し、こちらに記載されているリポジトリ内容を登録する。

$ vim 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

$ sudo cat /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のインストール

yumコマンドを使ってインストールする。バージョン指定しない場合、最新版が落ちてくる。多分バージョン指定もできるはず。

$ sudo yum install elasticsearch
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                                                                                            | 2.1 kB  00:00:00     
amzn-updates                                                                                                                                                         | 2.3 kB  00:00:00     
elasticsearch-5.x                                                                                                                                                    | 1.3 kB  00:00:00     
elasticsearch-5.x/primary                                                                                                                                            |  54 kB  00:00:00     
elasticsearch-5.x                                                                                                                                                                   134/134
14 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package elasticsearch.noarch 0:5.4.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================
 Package                                        Arch                                    Version                                    Repository                                          Size
============================================================================================================================================================================================
Installing:
 elasticsearch                                  noarch                                  5.4.0-1                                    elasticsearch-5.x                                   32 M

Transaction Summary
============================================================================================================================================================================================
Install  1 Package

Total download size: 32 M
Installed size: 35 M
Is this ok [y/d/N]: y
Downloading packages:
elasticsearch-5.4.0.rpm                                                                                                                                              |  32 MB  00:00:08     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Creating elasticsearch group... OK
Creating elasticsearch user... OK
  Installing : elasticsearch-5.4.0-1.noarch                                                                                                                                             1/1
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig
 sudo chkconfig --add elasticsearch
### You can start elasticsearch service by executing
 sudo service elasticsearch start
  Verifying  : elasticsearch-5.4.0-1.noarch                                                                                                                                             1/1

Installed:
  elasticsearch.noarch 0:5.4.0-1                                                                                                                                                            

Complete!
$

Elasticsearchの起動

起動コマンドの確認

ps -p 1でどの起動用コマンドを使うべきか確認する。 CMD欄にinitと表示されていればserviceコマンド、systemctlと表示されていればsystemctlコマンドを使用する。

ちなみにこのコマンドで調べる理由としては、PID1はLinux起動後、1番最初に起動するプロセスであり、他プロセスは全てPID1(initプログラムなど)から起動されるためである。つまり、他のプロセスの起動・停止方法はPID1のプログラムと同じ起動・停止方法になるので、サービス起動のコマンドを確認する手段として利用することができる。1

$ ps -p 1
  PID TTY          TIME CMD
    1 ?        00:00:00 init

この場合はserviceコマンドで起動することになる。ちなみにOSのバージョンによって起動コマンドはほぼ固定なので、そちらから確認しても良い。(でもコマンドで確認した方が早いと思う)

起動・停止

$ sudo service elasticsearch status
elasticsearch is stopped
$
$ sudo service elasticsearch start
elasticsearch is started

エラーなくサービス起動できれば、インストールは完了している。 問題がある場合、コマンドプロンプトにエラー出力される。

サービス登録

サービス登録はchkconfigコマンドを利用してできる。

$ sudo chkconfig --add elasticsearch
$ sudo chkconfig --list |grep elasticsearch
elasticsearch   0:off   1:off   2:on    3:on    4:on    5:on    6:off