UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Elasticsearch】3台構成にしたローカルのES dockerコンテナが起動しない

ローカルのdockerで3台のElasticsearchのクラスターを構成したい

必要な設定をdocker-compose.ymlに書いて起動したところ2つのノードで以下のエラーが発生した

elasticsearch ERROR: Elasticsearch exited unexpectedly, with exit code 137

エラーコード137を調べてみると、OOMが発生しているとのこと

デフォルトでは、Elasticsearch はノードのロール(masterなど)と合計メモリに基づいて JVM ヒープのサイズを自動的に設定しているらしい

Important Elasticsearch configuration | Elasticsearch Guide [7.11] | Elastic

おそらくこれが大きすぎて3台構成にできないようだ

唯一立ち上げられたESコンテナに入ってメモリの使用量を見たところ以下であった

$ docker exec -it my-elasticsearch2-1  /bin/bash
elasticsearch@08957ea510f4:~$ free
              total        used        free      shared  buff/cache   available
Mem:        7112116     4440820     2142892      134488      528404     2225204
Swap:       1048572      404412      644160

7GB中1台で約4GB使っていて、ホスト上で利用可能な残りが2GBなので、あと2台立ち上げるのは確かに難しそう

ということで、JVM ヒープのサイズを手動で設定する

とりあえずdocker-compose.ymlにあるESの設定で、ES_JAVA_OPTSのXmsとXmxをそれぞれ500MBにしてみた

environment:
      ES_JAVA_OPTS: -Xms500m -Xmx500m

これで立ち上げてみると、うまく立ち上がった

メモリの使用量は3台立ち上げて以下のようになった

elasticsearch@a92672ae3251:~$ free
              total        used        free      shared  buff/cache   available
Mem:        7112116     3520796     2988720      134720      602600     3133796
Swap:       1048572      329916      718656

OOMにならず起動できたようだ

参考

https://qiita.com/tayu1605/items/8da408c75251b30a51da