Docker (Rancher Desktop) で OpenSearch 2.12.0 を試してみた

ローカルで OpenSearch と kibana をさわってみよう
2024.03.08

はじめに

OpenSearch をローカルで試してみたくて、公式の Get Start ページを見つけたのですが、

Have a nice coffee while everything is downloading and starting up

こんなこと書いてあるわりにはつまずく部分があったので、手順を残しておきます。 ちなみに下記の記事は2021年のものですが、当時とは少し手順が変わっています。

検証環境

  • MacBook Pro (M1)
  • macOS Ventura 13.6.4
  • opensearchproject/opensearch:2.12.0
  • Rancher Desktop Version: 1.7.0 --- dockerd(moby)
  • Docker Compose version v2.14.0

実行方法

適当なディレクトリに公式サンプルの docker-compose.yml を置きます。

$ ls -la
total 8
drwxr-xr-x  3 hoge  staff  96    3  7 16:40 .
drwxr-xr-x  7 hoge  staff  224   3  6 18:14 ..
-rw-r--r--  1 hoge  staff  2304  3  7 16:36 docker-compose.yml

環境変数にパスワードを設定します。後ほどブラウザ接続してログインするのに使います。 デモのため超適当なパスワードを指定しています。

$ export OPENSEARCH_INITIAL_ADMIN_PASSWORD=90@A1qwe#Pa_q

lima の シェルで vm.max_map_count に推奨値(下限) 262144 を設定します。

$ rdctl shell
lima-rancher-desktop:/Users/hoge/opensearch$ sysctl -a | grep 'vm.max_map_count'
vm.max_map_count = 65530
lima-rancher-desktop:/Users/hoge/opensearch$ sudo sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
lima-rancher-desktop:/Users/hoge/opensearch$ sysctl -a | grep 'vm.max_map_count'
vm.max_map_count = 262144
lima-rancher-desktop:/Users/hoge/opensearch$ exit

コンテナを起動します。

$ docker-compose up -d
$ docker-compose ps
NAME                    COMMAND                  SERVICE                 STATUS              PORTS
opensearch-dashboards   "./opensearch-dashbo…"   opensearch-dashboards   running             0.0.0.0:5601->5601/tcp, :::5601->5601/tcp
opensearch-node1        "./opensearch-docker…"   opensearch-node1        running             0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp, 0.0.0.0:9600->9600/tcp, :::9600->9600/tcp, 9650/tcp
opensearch-node2        "./opensearch-docker…"   opensearch-node2        running             9200/tcp, 9300/tcp, 9600/tcp, 9650/tcp

ブラウザで http://localhost:5601/ を開くとログイン画面になります。

ユーザー admin と 先ほど 環境変数 OPENSEARCH_INITIAL_ADMIN_PASSWORD に設定したパスワード でログインできます。

はまりどころ3つ

ここではまりどころを3つご紹介します。いずれのパターンも以下の挙動です。対処法はコンテナのログで分かるようになっています。

  • ブラウザでアクセスすると OpenSearch Dashboards server is not ready yet が表示される
  • コンテナ opensearch-node1 opensearch-node2 の起動が失敗する

その1: 環境変数を設定せずにコンテナ起動した

$ docker-compose up -d
$ docker-compose ps
WARN[0000] The "OPENSEARCH_INITIAL_ADMIN_PASSWORD" variable is not set. Defaulting to a blank string. 
WARN[0000] The "OPENSEARCH_INITIAL_ADMIN_PASSWORD" variable is not set. Defaulting to a blank string. 
NAME                    COMMAND                  SERVICE                 STATUS              PORTS
opensearch-dashboards   "./opensearch-dashbo…"   opensearch-dashboards   running             0.0.0.0:5601->5601/tcp, :::5601->5601/tcp
opensearch-node1        "./opensearch-docker…"   opensearch-node1        exited (1)          
opensearch-node2        "./opensearch-docker…"   opensearch-node2        exited (1)
$ docker logs opensearch-node1 
No custom admin password found. Please provide a password via the environment variable OPENSEARCH_INITIAL_ADMIN_PASSWORD.

その2: 環境変数のパスワード強度が弱い

$ export OPENSEARCH_INITIAL_ADMIN_PASSWORD=hoge
$ docker-compose up -d
$ docker-compose ps
NAME                    COMMAND                  SERVICE                 STATUS              PORTS
opensearch-dashboards   "./opensearch-dashbo…"   opensearch-dashboards   running             0.0.0.0:5601->5601/tcp, :::5601->5601/tcp
opensearch-node1        "./opensearch-docker…"   opensearch-node1        exited (1)          
opensearch-node2        "./opensearch-docker…"   opensearch-node2        exited (1)
$ docker logs opensearch-node1
Password hoge is weak. Please re-try with a stronger password.

その3: vm.max_map_count の値が小さい

$ docker-compose ps
NAME                    COMMAND                  SERVICE                 STATUS              PORTS
opensearch-dashboards   "./opensearch-dashbo…"   opensearch-dashboards   running             0.0.0.0:5601->5601/tcp, :::5601->5601/tcp
opensearch-node1        "./opensearch-docker…"   opensearch-node1        exited (78)         
opensearch-node2        "./opensearch-docker…"   opensearch-node2        exited (78)
$ docker logs opensearch-node1
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

おわりに

お金の心配をせずに試せるのはうれしいですね!