0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ElasticSearchを、Docker Compose でマルチノード クラスターとして起動する

Last updated at Posted at 2024-12-22

前提

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 ノードの起動成功後、es02es03 のノードが起動失敗

事象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 のままだった。
$ sysctl vm.max_map_count
vm.max_map_count = 65530
  • 対処:とりあえず以下で対応
    (設定を永続化するか、elasticsearchクラスタ起動の都度設定するか、は別途考える)
$ sudo sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

事象2:es02es03 ノードの起動失敗
  • 事象:
    以下の通り、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 以上に満たなかったため、es02es03 が起動に失敗。
    具体的にはガイドの中で「これを使え」と指定されている.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 が正常に起動。
$ 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」として設定したので、そのように入力してみる。
image.png

ログインできた。とりあえず管理画面を見せてほしいので「Explore on my own」を選択。
image.png

なるほどこんな感じのトップ画面になるのね。
image.png

ここからデータを放り込んでみたりベクトルストア化してみたり、色々やってみようと思う。
以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?