カテゴリー
Linux

ダメだったがメモ。異なるアプリからログを送ったら Elasticsearch コンテナが落ちる問題に取り組む

複数の Docker コンテナからそれぞれ異なる index で "その 2" の Elasticsearch へとログを送ったのですけれども、 2 つ目の index を送った時点で Elasticsearch コンテナが Exit してしまいます。

exit code を調べる

最初、 docker inspect コマンドで調べましたけれども、 docker-compose ps でも表示されていました。

$ docker inspect es_elasticsearch_1 | grep ExitCode
            "ExitCode": 137,
$ docker-compose ps
       Name                     Command                State     Ports
----------------------------------------------------------------------
es_elasticsearch_1   /usr/local/bin/docker-entr ...   Exit 137
$

この内容を手がかりにすると、面白い内容がちらほらみられました。

特に有用だと感じたのは次です。

The application hit an OOM (out of memory) condition.

そうだろうなと思っていたところでした。メモリ不足が原因で異常終了していたのでしょう。

公式ドキュメントを読み直して試す

ホスト、つまり Docker をインストールした Mac のメモリを確認しました。

$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
linuxkit-025000000001:~# sysctl vm.max_map_count
vm.max_map_count = 262144
linuxkit-025000000001:~#

この結果を見る限り、設定値は必要最低値でした。これを上げる必要があるのかもしれません。

おわりに、行き詰まったので気分転換

"discovery.type=single-node" だと色々と限界があるのかもしれない、と思い、次のようにしてみました。

docker-compose.yml

#    environment:
#      discovery.type: "single-node"
    environment:
      - discovery.seed_hosts=elasticsearch
      #- discovery.seed_providers=file
      - cluster.initial_master_nodes=elasticsearch
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1

すると、次のようなエラーです><。

$ curl http://127.0.0.1:9200/_cat/health
{"error":{"root_cause":[{"type":"master_not_discovered_exception","reason":null}],"type":"master_not_discovered_exception","reason":null},"status":503}oki2a24@okitsuatsushinoMacBook-Pro:es$
$

調べて見つけた master_not_discovered_exception · Issue #26488 · elastic/elasticsearch を見てみると、 Elasticsearch の主となるコンテナが見つからないよ!というエラーでした。

Install Elasticsearch with Docker Production mode | Elasticsearch Reference [7.1] | Elastic を参考に書き換えた docker-compose でしたので、何か不足していたのでしょう。

ちょっと混乱してきました><。

ですので、一旦ここで区切って、次は Production mode を素直に動かし、それをカスタマイズしていく方針としたいと思います。

以上です。

コメントを残す