OpenSearch · 7 min read · Sep 12, 2025

Ubuntu 22.04でDocker経由でOpenSearchをインストールする方法

OpenSearchは、Amazonによるコミュニティ主導のプロジェクトで、ElasticsearchとKibanaのフォークです。これは、豊富な機能と革新的な機能を備えた完全なオープンソースの検索エンジンおよび分析スイートです。OpenSearchプロジェクトの主要コンポーネントは、OpenSearch(Elasticsearchのフォーク)とOpenSearch Dashboards(Kibanaのフォーク)です。両方のコンポーネントは、エンタープライズセキュリティ、アラート、機械学習、SQL、インデックス状態管理などの機能を提供します。

OpenSearchは100%オープンソースで、Apache 2.0ライセンスの下でライセンスされています。これにより、ログ分析、アプリケーション検索、エンタープライズ検索などのさまざまなユースケースのために、データを簡単に取り込み、安全にし、検索、集約、表示、分析することができます。

このチュートリアルでは、Ubuntu 22.04サーバー上でDockerを介してOpenSearch(オープンソースの検索エンジンおよび分析スイート)とOpenSearch Dashboards(オープンソースの視覚化ツール)をインストールおよび設定します。DockerおよびDocker Composeを使用して、複数のコンテナと単一のOpenSearch Dashboardを持つOpenSearchクラスターを展開します。また、カスタムTLS証明書と認証および承認を有効にして、デプロイメントを保護します。

このガイドでは、新しい一般的なUbuntuサーバーを使用しているため、このチュートリアルには、Ubuntu 22.04システムにDockerエンジンとDocker Composeをインストールする手順が含まれています。

前提条件

このガイドを完了するには、以下の要件が必要です:

  • 最小RAM 4-8GBのUbuntu 22.04サーバー - この例では、ホスト名’’とIPアドレス’’のUbuntuサーバーを使用します。
  • sudo/root管理者権限を持つ非rootユーザー。

これらの要件が整ったら、OpenSearchのインストールを開始できます。

システムの設定

最初のステップでは、OpenSearchのデプロイメントのためにUbuntuシステムを準備します。SWAPとページングを無効にし、次に‘/etc/sysctl.conf ‘ファイルを介して最大メモリマップを増やす必要があります。

以下のコマンドを実行して、システムのスワップを無効にします。ここでの’sed’コマンドは、‘/etc/fstab ‘ファイルを介してスワップを永続的に無効にし、スワップ設定の行の先頭にコメント’ # ‘を追加します。’swapoff ‘コマンドは、現在のセッションでスワップを無効にします。

sudo sed -i '/ swap / s/^\(.*\)$/#
1/g' /etc/fstab  
sudo swapoff -a

次に、以下のコマンドを介してスワップの状態を確認します。無効になっている場合、スワップセクションに’ 0 ‘という出力が表示されるはずです。

free -m

出力:

disable swap

最後に、Ubuntuシステムの最大メモリマップを増やすために、’ /etc/sysctl.conf’ファイルに設定を追加します。

以下のコマンドを実行して、’ vm.max_map_count=262144 ‘パラメータを’ /etc/sysctl.conf’ファイルの行の最後に追加します。次に、’ sysctl -p ‘コマンドを介して変更を適用します。

sudo echo "vm.max_map_count=262144" >> /etc/sysctl.conf  
sudo sysctl -p

次に、以下のコマンドを実行して最大メモリマップを確認します。成功した場合、最大メモリマップは’ 262144 ‘であるはずです。

cat /proc/sys/vm/max_map_count

出力:

setup sysctl

スワップが無効になり、最大メモリマップが’262144’に増加したので、次にDockerエンジンとDocker Composeのインストールを開始します。

Docker CEとDocker Composeのインストール

OpenSearchを展開およびインストールする方法はいくつかあります。仮想マシンに従来の方法でOpenSearchをインストールするか、コンテナ環境にインストールできます。

従来の仮想マシンへのインストールを好む場合は、Tarballを介して手動でOpenSearchをインストールするか、パッケージマネージャーを介してインストールできます(RHELベースのディストリビューションの場合)。コンテナ展開の場合は、DockerおよびKubernetesを使用してOpenSearchをインストールできます。

この例では、DockerエンジンとDocker Composeを介してコンテナ化された環境にOpenSearchをインストールします。したがって、公式のDockerリポジトリからDockerパッケージをインストールします。

まず、以下のaptコマンドを実行して基本的な依存関係をインストールします。プロンプトが表示されたらyを入力し、ENTERを押して続行します。

sudo apt install ca-certificates curl gnupg lsb-release

出力:

install basic dependencies

次に、以下のコマンドを実行してDockerパッケージのGPGキーとリポジトリを追加します。

sudo mkdir -p /etc/apt/keyrings  
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \  
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \  
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

出力:

その後、以下のaptコマンドを介してUbuntuパッケージインデックスを更新およびリフレッシュします。

sudo apt update

出力:

update repo

Dockerリポジトリが追加されたので、以下のaptコマンドを使用してDockerエンジンとDocker Composeプラグインをインストールできます。プロンプトが表示されたらyを入力し、ENTERを押して続行します。

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

出力:

install docker and docker compose

Dockerサービスは自動的に開始され、有効になります。以下のsystemctlコマンドユーティリティを介してDockerサービスを確認できます。

sudo systemctl is-enabled docker  
sudo systemctl status docker

Dockerサービスが有効であり、ブート時に自動的に実行されることが出力されるはずです。また、Dockerサービスの状態は実行中です。

最後に、非rootユーザーがDockerコンテナを実行できるようにするには、ユーザーを’ docker ‘グループに追加する必要があります。以下のusermodコマンドを実行して、ユーザーを’ docker ‘グループに追加します。また、ユーザー名を自分のユーザーに変更してください。

sudo usermod -aG docker alice

ユーザーとしてログインし、以下のコマンドを介してDockerコンテナを実行できます。

su - alice  
docker run hello-world

成功した場合、以下のスクリーンショットのように、Dockerコンテナからhello-worldメッセージが表示されるはずです。

verify docker

OpenSearch Dockerイメージのダウンロード

このステップでは、DockerHubからOpenSearchおよびOpenSearch Dashboardsのイメージをダウンロードします。次に、テスト目的で新しいOpenSearchコンテナを実行します。

以下のコマンドを実行して、OpenSearchおよびOpenSearch Dashboardsのイメージをダウンロードします。

docker pull opensearchproject/opensearch:latest  
docker pull opensearchproject/opensearch-dashboards:latest

出力:

download opensearch image

download opensearch dashboards

ダウンロードが完了したら、以下のコマンドを実行してシステム上のDockerイメージのリストを確認します。OpenSearchおよびOpenSearch Dashboardsのイメージがシステム上に利用可能であることがわかります。

docker images

出力:

次に、以下のコマンドを使用してDocker経由でOpenSearchを直接実行できます。これにより、シングルモードでOpenSearchコンテナが作成および実行され、ホストマシン上のデフォルトのTCPポート9200および9600が公開されます。

docker run -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" opensearchproject/opensearch:latest

以下の’docker ps’コマンドを介して実行中のコンテナのリストを確認します。

docker ps

以下のような出力が得られるはずです - OpenSearchコンテナが作成され、実行中です。コンテナとDockerホストの両方で公開されたTCPポートは9200および9600です。

以下のcurlコマンドを介してOpenSearchコンテナにアクセスできます。OpenSearchコンテナのデフォルトのユーザー名とパスワードは’ admin ‘です。

curl https://localhost:9200 -ku 'admin:admin'

成功した場合、以下のような出力が得られます - OpenSearchコンテナが実行中で、Dockerホストマシンを介してアクセス可能です。

verify opensearch container

次に、以下の’docker’コマンドを実行してOpenSearchコンテナを停止および削除します。次のステップでは、Docker Composeを介してOpenSearchクラスターを作成します。以下のコマンドでコンテナ名を変更してください。

docker stop container-name or container-id  
docker rm container-name or container-id

OpenSearchコンテナが削除されたことを確認するには、‘docker ps’コマンドを追加オプション’ -a ‘で実行します。これにより、実行中と終了した両方の状態の利用可能なコンテナが表示されます。

docker ps -a

出力:

remove container

プロジェクトディレクトリの設定

以下のコマンドを使用してユーザーとしてログインします。この例ではユーザー’alice’を使用しているため、以下のコマンドでユーザー名を変更してください。

su - alice

次に、プロジェクトのメインルートディレクトリとして使用される新しいプロジェクトディレクトリ’ opensearch-project ‘と、カスタムTLS証明書を保存するために使用される’ certs ‘ディレクトリを作成します。

mkdir -p ~/opensearch-project/certs; cd ~/opensearch-project

opensearch-project’ディレクトリ内で、OpenSearchコンテナとOpenSearch Dashboardsを作成するために使用される新しいファイルを作成するために以下のコマンドを実行します。

touch docker-compose.yml opensearch.yml opensearch_dashboards.yml internal_users.yml

ファイルのリスト:

  • docker-compose.yml - OpenSearchプロジェクトのDocker Composeの主要設定。
  • opensearch.yml - OpenSearchコンテナのカスタム設定。
  • opensearch_dashbaords.yml - OpenSearch Dashboardsコンテナのカスタム設定。
  • internal_users.yml - OpenSearchおよびOpenSearch Dashboardsのカスタムユーザー認証と承認。

SSL/TLS証明書の生成

このステップでは、OpenSearchのデプロイメントを保護するために使用される複数のTLS証明書を生成します。生成する証明書は以下の通りです:

  • ルートCA証明書:これらの証明書は他の証明書に署名するために使用されます。
  • 管理者証明書:これらの証明書は、セキュリティプラグインに関連するすべてのタスクを実行するための管理権限を取得するために使用されます。
  • OpenSearch Dashboards証明書:これらの証明書はOpenSearch Dashboardsを保護するために使用され、HTTPS接続を介してOpenSearch Dashboardsにアクセスできるようにします。
  • ノードおよびクライアント証明書:これらの証明書はOpenSearchクラスター内のノードおよびクライアントによって使用されます。

まず、以下のコマンドを実行してTLS証明書を保存するために使用される新しいディレクトリを作成します。

mkdir -p certs/{ca,os-dashboards}

新しいTLS証明書を作成するために使用される環境変数’MYDN’を作成します。自分の情報で詳細を変更してください。

export MYDN="/C=CA/ST=ONTARIO/L=TORONTO/O=HWDOMAIN"

これで、OpenSearchのデプロイメント用のTLS証明書を生成する準備が整いました。

setup certs

CA証明書の生成

以下を使用してルートCA証明書のプライベートキーを生成します。

openssl genrsa -out certs/ca/ca.key 2048

次に、以下のコマンドを介して自己署名のルートCA証明書を生成します。’- subj’パラメータの値は、現在のセッションで作成した環境変数’ MYDN ‘を使用しています。

openssl req -new -x509 -sha256 -days 1095 -subj "$MYDN/CN=CA" -key certs/ca/ca.key -out certs/ca/ca.pem

これにより、ルートCAプライベートキー’ ca.key ‘とルートCA証明書’ ca.pem ‘が得られます。生成したCA証明書を以下のコマンドで確認できます。

ls certs/ca/

出力 - CAプライベートキー’ ca.key ‘とCA証明書’ ca.pem ‘ファイルが表示されるはずです。

管理者証明書の生成

新しい管理者証明書プライベートキー’ admin-temp.key ‘を生成し、生成された証明書をPKCS#12互換アルゴリズム(3DES)に変換します。これにより、管理者プライベートキーは’ admin.key ‘になります。

openssl genrsa -out certs/ca/admin-temp.key 2048  
openssl pkcs8 -inform PEM -outform PEM -in certs/ca/admin-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/ca/admin.key

次に、以下のコマンドを実行して、’ admin.key ‘プライベートキーから管理者CSR(証明書署名要求)を生成します。生成されたCSRは’ admin.csr ‘ファイルになります。

openssl req -new -subj "$MYDN/CN=ADMIN" -key certs/ca/admin.key -out certs/ca/admin.csr

次に、以下のコマンドを実行して、ルートCA証明書およびプライベートキーで管理者CSRに署名します。管理者証明書の出力は’ admin.pem ‘ファイルです。

openssl x509 -req -in certs/ca/admin.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/ca/admin.pem

最後に、以下のコマンドで証明書のリストを確認します。

ls certs/ca/

出力 - 管理者証明書ファイル’ admin.pem ‘とプライベートキー’ admin.key ‘が表示されるはずです。

OpenSearch Dashboards証明書の生成

OpenSearch Dashboardsに使用される新しい証明書を生成します。

以下のコマンドを実行してプライベートキー’os-dashboards-temp.key’を生成し、生成された証明書をPKCS#12互換アルゴリズム(3DES)に変換します。これにより、管理者プライベートキーは’ os-dashboards.key ‘になります。

openssl genrsa -out certs/os-dashboards/os-dashboards-temp.key 2048  
openssl pkcs8 -inform PEM -outform PEM -in certs/os-dashboards/os-dashboards-temp.key -topk8 -nocrypt -v1 PBE-SHA1-3DES -out certs/os-dashboards/os-dashboards.key

次に、以下のコマンドを実行してOpenSearch DashboardsのCSR(証明書署名要求)を生成します。生成されたCSRは’ os-dashboards.csr ‘ファイルになります。

openssl req -new -subj "$MYDN/CN=os-dashboards" -key certs/os-dashboards/os-dashboards.key -out certs/os-dashboards/os-dashboards.csr

次に、以下のコマンドを実行して、ルートCA証明書およびプライベートキーでOpenSearch Dashboards CSRに署名します。管理者証明書の出力は’ os-dashboards.pem’ ファイルです。

openssl x509 -req -in certs/os-dashboards/os-dashboards.csr -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out certs/os-dashboards/os-dashboards.pem

最後に、以下のコマンドを実行してOpenSearch Dashboards CSRファイルを削除し、OpenSearch Dashboardsの証明書のリストを確認します。

rm certs/os-dashboards/os-dashboards-temp.key certs/os-dashboards/os-dashboards.csr  
ls certs/os-dashboards/

出力 - OpenSearch Dashboards証明書ファイル’ os-dashboards.pem’ とプライベートキー’ os-dashboards.key ‘が表示されるはずです。

OpenSearchノードの証明書の生成

以下のコマンドを実行してノード証明書を生成します。これにより、’certs’ディレクトリの下に複数のディレクトリが作成され、複数のホスト用のTLS証明書が生成されます。

for NODE_NAME in "os01" "os02" "os03"  
do  
    mkdir "certs/${NODE_NAME}"  
    openssl genrsa -out "certs/$NODE_NAME/$NODE_NAME-temp.key" 2048  
    openssl pkcs8 -inform PEM -outform PEM -in "certs/$NODE_NAME/$NODE_NAME-temp.key" -topk8 -nocrypt -v1 PBE-SHA1-3DES -out "certs/$NODE_NAME/$NODE_NAME.key"  
    openssl req -new -subj "$MYDN/CN=$NODE_NAME" -key "certs/$NODE_NAME/$NODE_NAME.key" -out "certs/$NODE_NAME/$NODE_NAME.csr"  
    openssl x509 -req -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:$NODE_NAME") -in "certs/$NODE_NAME/$NODE_NAME.csr" -CA certs/ca/ca.pem -CAkey certs/ca/ca.key -CAcreateserial -sha256 -out "certs/$NODE_NAME/$NODE_NAME.pem"  
    rm "certs/$NODE_NAME/$NODE_NAME-temp.key" "certs/$NODE_NAME/$NODE_NAME.csr"  
done

‘certs’ディレクトリのディレクトリリストを確認します。

ls certs/

出力 - 新しいディレクトリ’ os01, os02, および os03 ‘が表示されるはずです。

generate node certificates

最後に、以下のコマンドを実行して’ certs ‘ディレクトリの所有権を’ 1000 ‘に変更する必要があります。これにより、Dockerコンテナが’ certs ‘ディレクトリにアクセスできるようになります。

sudo chown -R 1000:1000 certs/

TLS証明書が生成されたので、次にハッシュ化されたパスワードを生成し、OpenSearchユーザーを定義します。

ユーザーの設定

このステップでは、OpenSearchおよびOpenSearch Dashboardsによって使用されるパスワードハッシュを生成します。2人の異なるユーザーのために2つのパスワードハッシュを生成し、’internal_users.yml’ファイルを修正してOpenSearchユーザーを設定します。

以下のdockerコマンドを実行して新しいパスワードハッシュを生成します。これにより、一時的なOpenSearchコンテナが実行され、パスワードハッシュを生成するためにスクリプト’ hash.sh ‘が実行されます。

docker run -it --rm opensearchproject/opensearch sh -c "/usr/share/opensearch/plugins/opensearch-security/tools/hash.sh"

パスワードを入力すると、ターミナルにハッシュ化されたパスワードが表示されます。生成されたハッシュパスワードをコピーし、再度コマンドを実行して別のハッシュパスワードを生成します。

出力 - OpenSearchユーザー用に生成されたハッシュ化されたパスワード。

generate password hash

次に、以下のnanoエディタコマンドを使用して’ internal_users.yml ‘ファイルを開きます。

nano internal_users.yml

ファイルに以下の行を追加し、生成されたハッシュパスワードを変更してください。これにより、OpenSearchデプロイメントのために2人のユーザーを定義します。ユーザー’ admin ‘はOpenSearchの管理者として、ユーザー’ kibanaserver ‘はOpenSearch Dashboardsに接続するために使用されます。

---  
# これは内部ユーザーデータベースです  
# ハッシュ値はbcryptハッシュで、plugin/tools/hash.shで生成できます  
  
_meta:  
  type: "internalusers"  
  config_version: 2  
  
# ここに内部ユーザーを定義します  
  
admin:  
  hash: "$2y$12$y8UzXWoZKQc8GTgGsRz4g.CarjlC6sMPYN8XOD/NPQysRi2oq.Ws6"  
  reserved: true  
  backend_roles:  
  - "admin"  
  description: "Admin User"  
  
kibanaserver:  
  hash: "$2y$12$AKpGe4tM5nIWYFoM56yRue22pQh0jFfx59MUgUKnBu8qnyGeAm2Ze"  
  reserved: true  
  description: "OpenSearch Dashboards user"

ファイルを保存し、編集が完了したらエディタを終了します。

internal_users.yml

docker-compose.ymlスクリプトの設定

このステップでは、OpenSearchおよびOpenSearch Dashboardsを展開するための新しいDocker Composeスクリプトを作成します。OpenSearchクラスターを設定するために複数のOpenSearchコンテナを作成し、OpenSearchクラスターに接続されるOpenSearch Dashboardsコンテナを設定します。

以下のnanoエディタコマンドを使用して’ docker-compose.yml ‘ファイルを開きます。

nano docker-compose.yml

ファイルに以下の行を追加します。

version: '3.7'  
  
services:  
  
  os01:  
    restart: always  
    image: opensearchproject/opensearch:latest  
    environment:  
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # 最小および最大Javaヒープサイズ、システムRAMの50%に設定することを推奨  
      node.name: os01  
      discovery.seed_hosts: os01,os02,os03  
      cluster.initial_master_nodes: os01,os02,os03  
      plugins.security.ssl.transport.pemkey_filepath: certificates/os01/os01.key # 相対パス  
      plugins.security.ssl.transport.pemcert_filepath: certificates/os01/os01.pem  
      plugins.security.ssl.http.pemkey_filepath: certificates/os01/os01.key  
      plugins.security.ssl.http.pemcert_filepath: certificates/os01/os01.pem  
      DISABLE_INSTALL_DEMO_CONFIG: "true"  
      JAVA_HOME: /usr/share/opensearch/jdk  
      bootstrap.memory_lock: "true" # 以下のメモリロック設定と共に、スワッピングを無効にします  
      network.host: "0.0.0.0"  
    ulimits:   
      memlock:  
        soft: -1  
        hard: -1  
    volumes:  
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"  
      - "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"  
      - "os-data1:/usr/share/opensearch/data"  
      - "./certs:/usr/share/opensearch/config/certificates:ro"  
    ports:  
      - 9200:9200  
      - 9600:9600 # パフォーマンスアナライザーに必要  
  
  os02:  
    restart: always  
    image: opensearchproject/opensearch:latest  
    environment:  
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # 最小および最大Javaヒープサイズ、システムRAMの50%に設定することを推奨  
      node.name: os02  
      discovery.seed_hosts: os01,os02,os03  
      cluster.initial_master_nodes: os01,os02,os03  
      plugins.security.ssl.transport.pemkey_filepath: certificates/os02/os02.key # 相対パス  
      plugins.security.ssl.transport.pemcert_filepath: certificates/os02/os02.pem  
      plugins.security.ssl.http.pemkey_filepath: certificates/os02/os02.key  
      plugins.security.ssl.http.pemcert_filepath: certificates/os02/os02.pem  
      DISABLE_INSTALL_DEMO_CONFIG: "true"  
      JAVA_HOME: /usr/share/opensearch/jdk  
      bootstrap.memory_lock: "true" # 以下のメモリロック設定と共に、スワッピングを無効にします  
      network.host: "0.0.0.0"  
    ulimits:   
      memlock:  
        soft: -1  
        hard: -1  
    volumes:  
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"  
      - "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"  
      - "os-data2:/usr/share/opensearch/data"  
      - "./certs:/usr/share/opensearch/config/certificates:ro"  
  
  os03:  
    restart: always  
    image: opensearchproject/opensearch:latest  
    environment:  
      OPENSEARCH_JAVA_OPTS: "-Xms1024m -Xmx1024m" # 最小および最大Javaヒープサイズ、システムRAMの50%に設定することを推奨  
      node.name: os03  
      discovery.seed_hosts: os01,os02,os03  
      cluster.initial_master_nodes: os01,os02,os03  
      plugins.security.ssl.transport.pemkey_filepath: certificates/os03/os03.key # 相対パス  
      plugins.security.ssl.transport.pemcert_filepath: certificates/os03/os03.pem  
      plugins.security.ssl.http.pemkey_filepath: certificates/os03/os03.key  
      plugins.security.ssl.http.pemcert_filepath: certificates/os03/os03.pem  
      DISABLE_INSTALL_DEMO_CONFIG: "true"  
      JAVA_HOME: /usr/share/opensearch/jdk  
      bootstrap.memory_lock: "true" # 以下のメモリロック設定と共に、スワッピングを無効にします  
      network.host: "0.0.0.0"  
    ulimits:   
      memlock:  
        soft: -1  
        hard: -1  
    volumes:  
      - "./opensearch.yml:/usr/share/opensearch/config/opensearch.yml"  
      - "./internal_users.yml:/usr/share/opensearch/config/opensearch-security/internal_users.yml"  
      - "os-data3:/usr/share/opensearch/data"  
      - "./certs:/usr/share/opensearch/config/certificates:ro"  
  
  osdashboards:  
    restart: always  
    image: opensearchproject/opensearch-dashboards:latest  
    ports:  
      - 5601:5601  
    volumes:  
      - "./certs:/usr/share/opensearch-dashboards/config/certificates:ro"  
      - "./opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml"  
    environment:  
      OPENSEARCH_HOSTS: '["https://os01:9200","https://os02:9200","https://os03:9200"]' # 環境変数として指定する場合は、スペースのない文字列でなければなりません  
      DISABLE_INSTALL_DEMO_CONFIG: "true"  
  
volumes:  
  os-data1:  
  os-data2:  
  os-data3:

編集が完了したら、’ docker-compose.yml ‘ファイルを保存して終了します。

これにより、OpenSearchデプロイメントのために4つのコンテナ/サービスが作成されます。以下は各コンテナの詳細情報です。

  • 3つのOpenSearchコンテナ os01, os02, os03 - これはOpenSearchクラスターを作成するために使用されます。これらのコンテナは’image’ opensearchproject/opensearch:latest ‘に基づいており、同じ設定’ opensearch.yml ‘および’ internal_users.yml ‘を使用しています。
  • OpenSearch Dashboardsコンテナ’osdashboards’は、’ opensearchproject/opensearch-dashboards:latest ‘イメージに基づいており、OpenSearchの3つのホスト os01, os02, os03 に接続されています。また、OpenSearch Dashboardsコンテナでデモ設定を無効にします。
  • すべてのOpenSearchおよびOpenSearch Dashboardsコンテナは、’ certs ‘ディレクトリにあるカスタムTLS証明書を介して保護されます。
  • OpenSearchコンテナは2つのポート 9200 および 9600 を公開し、OpenSearch Dashboardsコンテナはポート 5601 を公開します。

OpenSearchおよびOpenSearch Dashboardsの設定

このステップでは、OpenSearch ‘opensearch.yml’ とOpenSearch Dashboards ‘opensearch_dashbaords.yml’ の新しい設定を作成します。最終的に、すべての必要な設定と証明書がOpenSearchプロジェクトディレクトリにあることを確認する必要があります。

以下のnanoエディタコマンドを使用してOpenSearch設定ファイル’ opensearch.yml ‘を開きます。

sudo nano opensearch.yml

ファイルに以下の行を追加します。CA証明書と管理者およびノード証明書のDNのパスを変更してください。これにより、’ os-cluster ‘という名前のOpenSearchクラスターが設定されます。

cluster.name: os-cluster  
network.host: 0.0.0.0  
  
bootstrap.memory_lock: "true" # 以下のメモリロック設定と共に、スワッピングを無効にします  
  
plugins.security.allow_unsafe_democertificates: true  
plugins.security.ssl.http.enabled: true  
plugins.security.ssl.http.pemtrustedcas_filepath: certificates/ca/ca.pem  
plugins.security.ssl.transport.enabled: true  
plugins.security.ssl.transport.pemtrustedcas_filepath: certificates/ca/ca.pem  
plugins.security.ssl.transport.enforce_hostname_verification: false  
  
plugins.security.authcz.admin_dn:  
  - 'CN=ADMIN,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
plugins.security.nodes_dn:  
  - 'CN=os00,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  - 'CN=os01,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  - 'CN=os02,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  - 'CN=os03,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  - 'CN=os04,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  - 'CN=os05,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  - 'CN=os06,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  - 'CN=os07,O=HWDOMAIN,L=TORONTO,ST=ONTARIO,C=CA'  
  
plugins.security.audit.type: internal_opensearch  
plugins.security.enable_snapshot_restore_privilege: true  
plugins.security.check_snapshot_restore_write_privileges: true  
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]  
cluster.routing.allocation.disk.threshold_enabled: false  
opendistro_security.audit.config.disabled_rest_categories: NONE  
opendistro_security.audit.config.disabled_transport_categories: NONE

opensearch.yml ‘ファイルを保存し、編集が完了したらエディタを終了します。

opensearch.yml

次に、以下のnanoエディタコマンドを使用してOpenSearch Dashboards設定ファイル’ opensearch_dashboards.yml ‘を開きます。

nano opensearch_dashboards.yml

ファイルに以下の行を追加します。OpenSearch Dashboardsのユーザー名とパスワードを’ internal_users.yml ‘ファイルの’ kibanaserver ‘の詳細に変更してください。

server.name: os_dashboards  
server.host: "0.0.0.0"  
  
opensearch.username: kibanaserver  
opensearch.password: password  
opensearch.requestHeadersWhitelist: [authorization, securitytenant]  
  
opensearch_security.multitenancy.enabled: true  
opensearch_security.multitenancy.tenants.preferred: [Private, Global]  
opensearch_security.readonly_mode.roles: [kibana_read_only]  
# HTTPSなしでopensearch-dashboardsを実行している場合はこの設定を使用してください  
opensearch_security.cookie.secure: false  
  
# ブラウザとOpenSearch-Dashboards間のトラフィックを暗号化  
server.ssl.enabled: true  
server.ssl.certificate: "/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.pem"  
server.ssl.key: "/usr/share/opensearch-dashboards/config/certificates/os-dashboards/os-dashboards.key"  
  
# OpenSearch-DashboardsとOpenSearch間のトラフィックを暗号化  
opensearch.ssl.certificateAuthorities: ["/usr/share/opensearch-dashboards/config/certificates/ca/ca.pem"]  
opensearch.ssl.verificationMode: full

編集が完了したら、ファイルを保存して終了します。

opensearch dashboard config

最後に、以下のaptコマンドを実行してtreeパッケージをインストールし、OpenSearchデプロイメントのファイルとディレクトリのリストを確認します。

sudo apt install tree  
tree .

出力は以下のようになります。

list files and directories

これで、Docker経由でOpenSearchを展開するためのすべての準備が整いました。DockerおよびDocker Composeを介してOpenSearchを展開する準備が整いました。

OpenSearchクラスターとOpenSearch Dashboardsの展開

開始する前に、OpenSearchプロジェクトディレクトリ’ opensearch-project ‘にいることを確認してください。次に、以下の’ docker compose ‘コマンドを実行してOpenSearchデプロイメントを作成および開始します。

docker compose up -d

以下のような出力が得られるはずです - 3つのOpenSearchコンテナ os01, os02, os03 が作成され、開始されました。また、OpenSearch Dashboardsコンテナ’ osdashboards ‘が作成され、開始されました。

start opensearch cluster and opensearch dashboards

以下のコマンドを介してOpenSearchプロジェクトの実行中のサービス/コンテナのリストを確認します。

docker compose ps

STATUS ‘が’ Up ‘であれば、コンテナ/サービスは実行中です。’ PORTS ‘セクションには、コンテナからホストマシンへの公開ポートが表示されるはずです。

OpenSearchクラスターが実行中であるため、次に’ internal_users.yml ‘ファイルを介して作成した新しいユーザー設定を適用する必要があります。このコマンドを実行する前に、OpenSearchクラスターが実行されていることを確認するために、約30-60秒待つことをお勧めします。

以下のコマンドは、’ os01 ‘コンテナ/サービスでbashスクリプト’ securityadmin.sh ‘を実行し、OpenSearchクラスターに新しいユーザーを適用します。

docker compose exec os01 bash -c "chmod +x plugins/opensearch-security/tools/securityadmin.sh && bash plugins/opensearch-security/tools/securityadmin.sh -cd config/opensearch-security -icl -nhnv -cacert config/certificates/ca/ca.pem -cert config/certificates/ca/admin.pem -key config/certificates/ca/admin.key -h localhost"

出力:

apply new users

次に、以下のコマンドを実行してコンテナが実行中であることを確認します。次に、以下のssコマンドを介してDockerホストのオープンポートのリストを確認できます。

docker compose ps  
ss -tulpn

出力 - ポート 9200 および 9600 がOpenSearchクラスターによって使用され、ポート 5601 がOpenSearch Dashboardsによって使用されています。

list open ports

最後に、’internal_users.yml’ファイルで作成したユーザー名とパスワードを使用してOpenSearchクラスターに認証できることを確認できます。

管理者ユーザーとしてOpenSearchクラスターに認証します。

curl https://192.168.5.100:9200 -u admin:password -k

出力 - 認証が成功し、クラスターで現在使用しているOpenSearchソフトウェアの詳細が表示されるはずです。

verify curl admin user

kibanaserverユーザーとしてOpenSearchクラスターに認証します。

curl https://192.168.5.100:9200 -u kibanaserver:password -k

出力 - 認証が成功し、クラスターで現在使用しているOpenSearchソフトウェアの詳細が表示されるはずです。

verify curl kibanaserver

これで、DockerおよびDocker Composeを介してOpenSearchクラスターとOpenSearch Dashboardsを展開しました。次のステップでは、OpenSearch Dashboardsデプロイメントにアクセスし、OpenSearch DashboardsとOpenSearchクラスター間の接続を確認します。

さらに、OpenSearchデプロイメントにエラーが発生した場合は、以下の’ docker compose ‘コマンドを介して各コンテナのログを確認できます。

基本的な使用法’ docker compose ‘でログを確認します。

docker compose logs  
docker compose logs SERVICE

特定のコンテナ/サービスのログを確認するには、以下の’ docker compose ‘コマンドを使用します。

docker compose logs osdashboards  
docker compose logs os01  
docker compose logs os02  
docker compose logs os03

OpenSearch Dashboardsへのアクセス

ウェブブラウザを開き、サーバーのIPアドレスの後にOpenSearch Dashboardsポート’ 5601 ‘を追加してアクセスします(例: https://192.168.5.100:5601/)。OpenSearch Dashboardsのログインページが表示されるはずです。

ユーザー’kibanaserver’とパスワードを入力し、’ ログイン ‘をクリックします。

opensearch login

成功した場合、以下のページが表示されます。’ 自分で探求する ‘をクリックすると、OpenSearch Dashboardのホームページが表示されます。

opensearch dashboards

これで、OpenSearch Dashboardsが実行中であり、認証が有効になっています。また、OpenSearch Dashboardsは、生成したSSL/TLS証明書を介して安全なHTTPS接続で実行されています。

次に、OpenSearch DashboardsとOpenSearchクラスター間の接続をOpenSearch APIを介して確認します。

左側のメニューで管理セクションに移動し、’ Dev Tools ‘をクリックします。

コンソールにクエリ’ GET / ‘を入力し、再生ボタンをクリックします。成功した場合、右側にOpenSearchサーバーの詳細情報が表示されます。また、右上にHTTPコード’ 200 - OK ‘が表示され、クエリがエラーなく実行されたことを確認できます。

get status opensearch

別のクエリ’ GET _cat/nodes?format=json&filter_path=ip,name ‘を入力して、OpenSearchクラスターに利用可能なOpenSearchノードを確認します。OpenSearchクラスターには、IPアドレス 172.23.0.5os01、IPアドレス’ 172.23.0.3 ‘の os02、およびIPアドレス’ 172.23.0.2 ‘の os3 が表示されるはずです。

list nodes

これにより、OpenSearch DashboardsがOpenSearchクラスターに接続されていることが確認されます。

結論

このチュートリアルでは、Ubuntu 22.04サーバー上でDockerおよびDocker Composeを介してOpenSearchをインストールしました。Docker上で3つの異なるコンテナを持つOpenSearchクラスターを作成しました。また、TLS証明書でOpenSearchを保護し、認証と承認を有効にし、OpenSearchでユーザーを設定しました。さらに、OpenSearchを展開するためにUbuntu Linuxサーバーを設定および最適化しました。

DockerおよびDocker Composeを介してOpenSearch Dashboardsもインストールしました。その後、OpenSearch DashboardsコンテナをOpenSearchクラスターに接続しました。

この設定により、OpenSearchについてさらに探求し、OpenSearchに統合を追加し、追加の認証を設定することができます。OpenSearchに関する詳細は、OpenSearchの公式ドキュメントから学ぶことができます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。