はじめに
OpenSearch をローカルで試してみたくて、公式の Get Start ページを見つけたのですが、
Have a nice coffee while everything is downloading and starting up
こんなこと書いてあるわりにはつまずく部分があったので、手順を残しておきます。
検証環境
- 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]
おわりに
お金の心配をせずに試せるのはうれしいですね!