Elasticsearach のインストール
CentOS7 へのインストール
タイムゾーンを JST に変更する必要がある場合は以下を実行しておく。
sudo timedatectl set-timezone Asia/Tokyo
JDK のインストール
sudo yum -y install wget
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm
sudo yum localinstall -y jdk-8u144-linux-x64.rpm
Elasticsearch の yum リポジトリを追加
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo vi /etc/yum.repos.d/elasticsearch.repo
以下の内容を 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 install -y elasticsearch
以下のディレクトリ構成でインストールされる
- /etc/elasticsearch/
- elasticsearch.yml
- jvm.options
- log4j2.properties
- /usr/elasticsearch/
- bin/
- elasticsearch
- elasticsearch-plugin
- elasticsearch-translog
- elasticsearch-keystore
- elasticsearch-systemd-pre-exec
- elasticsearch.in.sh
- lib/
- modules/
- plugins/
- bin/
- /var/
- log/elasticsearch/
- lib/elasticsearch/
CentOS7 の設定を変更
CentOS7 のデフォルト値では問題が発生する部分があるので変更しておく。
elasticsearch ユーザでオープンできるファイル数の上限を変更する。現在の設定値を以下のコマンドで確認。
sudo su -
sudo -u elasticsearch bash -c "ulimit -n"
1024
デフォルト値は 1024 なので、公式ページの推奨値である 65536 に変更する。
再起動しても設定値が戻らないように limits.conf に以下を追記する。
(設定値を変更するだけでは反映されないので、最後に再起動する)
sudo vi /etc/security/limits.conf
elasticsearch - nofile 65536
次に、 bootstrap.memory_lock
を true
に設定できるように elasticsearch.conf を作成して以下を追記する。
sudo mkdir /etc/systemd/system/elasticsearch.service.d
sudo vi /etc/systemd/system/elasticsearch.service.d/elasticsearch.conf
[Service]
LimitMEMLOCK=infinity
スレッド数の上限を確認する。
sudo su -
sudo -u elasticsearch bash -c "ulimit -u"
4096
公式ページによると Elasticsearch が使用するスレッド数は最低 2048 とのことなので特に変更しない。
上記の設定を有効にするために一度サーバを再起動する。
設定が反映されたかどうかを確認する。
sudo su -
sudo -u elasticsearch bash -c "ulimit -n"
65536
Elasticsearch 起動後に以下を確認する。
curl 'localhost:9200/_nodes/stats/process?filter_path=**.max_file_descriptors&pretty'
{
"nodes" : {
"MCD3WQBrS6CzrOSS-YjOCg" : {
"process" : {
"max_file_descriptors" : 65536 ← ここが 65536 になっていることを確認する
}
}
}
}
curl 'localhost:9200/_nodes/process?pretty'
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "hoge-search",
"nodes" : {
"MCD3WQBrS6CzrOSS-YjOCg" : {
"name" : "hoge-search-001",
"transport_address" : "10.0.0.8:9300",
"host" : "10.0.0.8",
"ip" : "10.0.0.8",
"version" : "5.5.1",
"build_hash" : "19c13d0",
"roles" : [
"master",
"data",
"ingest"
],
"process" : {
"refresh_interval_in_millis" : 1000,
"id" : 832,
"mlockall" : true ← ここが true になっていることを確認する
}
}
}
}
Elasticsearch の設定を変更
elasticsearch.yml を以下のように変更する。
cluster.name: hoge-search
node.name: node-001 # 名前は適宜変更
bootstrap.memory_lock: true # CentOS7 はデフォルトではロックに失敗する
network.host:
- _local_
- _site_
http.port: 9200
discovery.zen.ping.unicast.hosts:
- node-001 # 自分が 001 の場合は記載しない
- node-002 # 自分が 002 の場合は記載しない
http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/.+(:[0-9]+)?/
jvm.options を以下のように変更する。
-Xms4g
-Xmx4g
Elasticsearch へのプラグインのインストール
Elasticsearch の bin ディレクトリに移動し以下を実行する。
ICU Analysis プラグインをインストール
sudo ./elasticsearch-plugin install analysis-icu
Kuromoji プラグインをインストール
sudo ./elasticsearch-plugin install analysis-kuromoji
Elasticsearch を起動
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
起動を確認
sudo journalctl --unit elasticsearch
Kibana のインストール
CentOS7 へのインストール
Kibana をインストール
sudo yum install -y kibana
以下のディレクトリ構成でインストールされる
- /etc/kibana/
- /usr/share/kibana/
- bin/
- optimize/
- plugins/
- /var/lib/kibana/
Kibana の設定を変更
kibana.yml を以下のように変更。
# ↓ サーバのローカル IP アドレスを指定する
server.host: 10.0.0.8
Kibana を起動
sudo systemctl enable kibana.service
sudo systemctl start kibana.service