前提
OS:ubuntu 22.04
dockerコマンド・docker composeコマンドは利用可能な状態
導入手順とトラブル対応
概ね以下のガイドをそのまま実行。バージョンは8.17.0
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-compose-file
発生したトラブルと対応履歴は以下の通り。
トラブル内容
-
概要:Elasticsearch ノードの起動失敗
-
es01
ノードが初期設定のままでは起動できない -
es01
ノードの起動成功後、es02
とes03
のノードが起動失敗
-
事象1:es01
ノードの起動失敗
- 事象:
以下の通りes01
ノードの起動に失敗。合わせてes02
,es03
も起動失敗しているが、まずは最初のノードについての対応を試みる
$ docker compose up -d
WARN[0000] /mnt/NVMe01TB01/elasticsearch/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 26/26
✔ setup Pulled 41.9s
✔ es02 Pulled 41.9s
✔ e7894aa63b6b Pull complete 3.0s
✔ d8ebfd0673f3 Pull complete 3.3s
✔ b844b5486b14 Pull complete 3.4s
✔ 4ca545ee6d5d Pull complete 42.0s
✔ e32dac13ab73 Pull complete 35.6s
✔ dd86513089d5 Pull complete 35.6s
✔ 0fa5101f1738 Pull complete 35.7s
✔ 6552e993d0fe Pull complete 35.7s
✔ 8140cc9eb823 Pull complete 35.7s
✔ 27354fdb6987 Pull complete 35.7s
✔ es01 Pulled 41.9s
✔ es03 Pulled 41.9s
✔ kibana Pulled 48.2s
✔ e6e9b664c8c6 Pull complete 4.8s
✔ ecc21f6b622a Pull complete 40.6s
✔ f2b27481e8b1 Pull complete 40.7s
✔ adfa6d0c6437 Pull complete 40.8s
✔ ed2ac883e03f Pull complete 40.9s
✔ 910aa07d8c20 Pull complete 40.9s
✔ 491c26394402 Pull complete 41.0s
✔ 8bb0ec9614e7 Pull complete 41.0s
✔ 69cbf59608d0 Pull complete 41.0s
✔ abab7bfb2278 Pull complete 41.0s
✔ bd1bf47182e1 Pull complete 41.1s
[+] Running 11/11
✔ Network elasticsearch_default Created 0.1s
✔ Volume "elasticsearch_certs" Created 0.0s
✔ Volume "elasticsearch_esdata03" Created 0.0s
✔ Volume "elasticsearch_kibanadata" Created 0.0s
✔ Volume "elasticsearch_esdata01" Created 0.0s
✔ Volume "elasticsearch_esdata02" Created 0.0s
✔ Container elasticsearch-setup-1 Healthy 4.8s
✘ Container elasticsearch-es01-1 Error 29.8s
✘ Container elasticsearch-es02-1 Error 30.2s
✘ Container elasticsearch-es03-1 Error 31.2s
✔ Container elasticsearch-kibana-1 Created 0.0s
dependency failed to start: container elasticsearch-es01-1 exited (78)
- 原因:
Elasticsearch の推奨設定であるvm.max_map_count=262144
が未設定で、初期値65530
のままだった。
vm.max_map_count = 65530
- 対処:とりあえず以下で対応
(設定を永続化するか、elasticsearchクラスタ起動の都度設定するか、は別途考える)
$ sudo sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
事象2:es02
と es03
ノードの起動失敗
- 事象:
以下の通り、es-01
コンテナが起動するも、後続のes02
,es03
が引き続き起動しない。
ただしエラーコードはes01
の頃と変わって78(構成エラーや設定ミス などで起動に失敗)ではなく137(Out of Memory: OOM)となっている。
$ docker compose up -d
WARN[0000] /mnt/NVMe01TB01/elasticsearch/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 6/6
✔ Network elasticsearch_default Created 0.1s
✔ Container elasticsearch-setup-1 Healthy 2.4s
✔ Container elasticsearch-es01-1 Healthy 33.6s
✘ Container elasticsearch-es02-1 Error 25.1s
✘ Container elasticsearch-es03-1 Error 25.1s
✔ Container elasticsearch-kibana-1 Created 0.0s
dependency failed to start: container elasticsearch-es02-1 exited (137)
-
原因:
Docker のmem_limit
が 1GB(1073741824バイト)に設定されており、Elasticsearch の推奨要件である 2GB 以上に満たなかったため、es02
とes03
が起動に失敗。
具体的にはガイドの中で「これを使え」と指定されている.envの中で、環境変数として指定されているMEM_LIMITの値が1GB(1073741824バイト)に設定されていた。どういうことなの… -
対応
-
.env
ファイル内のMEM_LIMIT
を 1GB(1073741824)から 2GB(2147483648) に増加:
-
# Increase or decrease based on the available host memory (in bytes)
# MEM_LIMIT=1073741824
MEM_LIMIT=2147483648
対処完了後の起動
- 修正後の設定を適用するため、Docker Compose を再起動
docker compose down docker compose up -d
-
全ノードの正常起動確認
- すべての Elasticsearch ノード(
es01
,es02
,es03
)および Kibana が正常に起動。
- すべての Elasticsearch ノード(
$ docker compose down
WARN[0000] /mnt/NVMe01TB01/elasticsearch/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 6/6
✔ Container elasticsearch-kibana-1 Removed 0.0s
✔ Container elasticsearch-es03-1 Removed 0.0s
✔ Container elasticsearch-es02-1 Removed 0.0s
✔ Container elasticsearch-es01-1 Removed 10.4s
✔ Container elasticsearch-setup-1 Removed 0.4s
✔ Network elasticsearch_default Removed 0.2s
$ docker compose up -d
WARN[0000] /mnt/NVMe01TB01/elasticsearch/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 6/6
✔ Network elasticsearch_default Created 0.1s
✔ Container elasticsearch-setup-1 Healthy 2.4s
✔ Container elasticsearch-es01-1 Healthy 33.7s
✔ Container elasticsearch-es02-1 Healthy 34.2s
✔ Container elasticsearch-es03-1 Healthy 35.2s
✔ Container elasticsearch-kibana-1 Started
初期ログイン
http://localhost:5601
にアクセスしてみる。
.env
ファイルの中で、elasticユーザのパスワードを「elastic」として設定したので、そのように入力してみる。
ログインできた。とりあえず管理画面を見せてほしいので「Explore on my own」を選択。
ここからデータを放り込んでみたりベクトルストア化してみたり、色々やってみようと思う。
以上。