セットアップ手順

Swarm クラスタ構成 (ke2/cluster/swarm) の基本的なセットアップ手順を説明します。

本ページの手順は Docker Swarm クラスタを構成するいずれかのマネージャノード上で実行してください。

デプロイの準備

クラスタ構成の KE2.0 を開始するための準備を行ないます。 ke2-docker パッケージの、Swarm クラスタ構成用のディレクトリに移動します。

[ke2-server1]$ cd ke2/cluster/swarm

コンテナイメージの取得

以下のコマンドを実行してコンテナイメージを取得してください。

[ke2-server1]$ docker compose pull

※ インターネットに接続できない環境の場合は「オフライン環境での構築」を参考にしてください。

SSL 証明書の生成

以下のコマンドを実行して自己署名 SSL 証明書を生成してください。

[ke2-server1]$ ../../../scripts/create-cert.sh

共有ディレクトリの作成

ネットワークファイルシステム上に共有ディレクトリ (SHARED_DIR) と以下に示すサブディレクトリを作成してください。

- ${SHARED_DIR}/
	- log/
	- var/
	- ssl/

SHARED_DIR を /mnt/gluster とする場合は、例えば以下のようにディレクトリを作成できます。

[ke2-server1]$ mkdir -p /mnt/gluster/{log,var,ssl}

注意: これらのサブディレクトリ (log / var / ssl) は、後述の setup_stack.sh を実行するユーザが書き込みできる必要があります。 setup_stack.sh は各ディレクトリの書き込み可否を確認し、ssl には SSL 証明書をコピーします。共有ファイルシステムのマウント先が root 所有になっているなどで一般ユーザが作成・書き込みできない場合は、sudo で作成したうえで実行ユーザが書き込めるよう所有者・パーミッションを調整してください(例: sudo chown "$USER" /mnt/gluster/{log,var,ssl})。

秘密鍵ファイルの準備

データベース上でのパスワード情報などの暗号化に用いる秘密鍵をファイル ${SHARED_DIR}/var/.secret_key に準備します。 Kompira 用データベースを新規に構築する場合は、たとえば以下のようにして空のファイルを用意してください。

[ke2-server1]$ touch /mnt/gluster/var/.secret_key

※ 外部データベースとして既に構築されている Kompira データベースを用いる場合は、そのデータベースにおける秘密鍵を ${SHARED_DIR}/var/.secret_key に書き込んでおいてください。

[ke2-server1]$ echo -n 'xxxxxxxxxxxxxxxx' > .secret_key

docker-swarm.yml の生成

docker-swarm.yml を生成するために、以下のコマンドを実行してください。 このとき少なくとも環境変数 SHARED_DIR で共有ディレクトリを指定するようにしてください。

[ke2-server1]$ SHARED_DIR=/mnt/gluster ./setup_stack.sh

Swarm クラスタの開始

エラーが無ければ docker-swarm.yml というファイルが生成されているはずです。 これでシステムを開始する準備ができました。以下のコマンドを実行して Kompira Enterprise 開始をします。

[ke2-server1]$ docker stack deploy -c docker-swarm.yml ke2

正常に動作しない場合は、以下のコマンドでクラスタを停止させて、設定を見直してみてください。

[ke2-server1]$ docker stack rm ke2

セットアップ後の動作確認

セットアップが完了したら、KE2.0 システムが正常に動作しているかを確認してください。 ブラウザで以下のアドレスにアクセスします。

https://<KOMPIRA_SERVER>/.login

ログイン画面が表示されるため、以下の通り入力してログインしてください。

  • ユーザ名:root
  • パスワード:root

ログインが確認できたら、動作確認は完了です。

カスタマイズ

環境変数によるカスタマイズ

setup_stack.sh を実行するときに環境変数を指定することで、簡易的なカスタマイズを行なうことができます。

[ke2-server1]$ 環境変数=値... ./setup_stack.sh
環境変数備考
SHARED_DIR共有ディレクトリ(各ノードからアクセスできる必要があります)
DATABASE_URL外部データベースの接続 URL(未指定の場合はホスト上に外部データベースがある想定の設定になります)
AMQP_USER内部 RabbitMQ コンテナのユーザ名(デフォルト: guest
AMQP_PASSWORD内部 RabbitMQ コンテナのパスワード(デフォルト: guest、本番運用前に変更を強く推奨)
AMQP_URLRabbitMQ 接続 URL を直接指定(指定した場合は AMQP_USER / AMQP_PASSWORD より優先。URL 安全でない文字を含む場合はパーセントエンコードして指定)
KOMPIRA_LOG_DIRログファイルの出力先ディレクトリ(未指定の場合は ${SHARED_DIR}/log に出力されます)

カスタマイズ例:

[ke2-server1]$ DATABASE_URL='pgsql://<DB_USER>:<DB_PASSWORD>@10.20.0.100:9999/<DB_NAME>' SHARED_DIR=/mnt/gluster ./setup_stack.sh

パスワードやユーザ名に URL 安全でない文字 (@ : / % 等) を含める場合の注意: 個別変数 AMQP_USER / AMQP_PASSWORD には RFC 3986 の unreserved set(英数字と -_.~)のみを使用してください。URL 安全でない文字が必要な場合は、パーセントエンコード済みの AMQP_URL / DATABASE_URL を直接指定します。詳細な規則・例、および AMQP でこれを行う場合に必要な KE2.0 コンテナイメージ v2.0.5.post2 以降 の要件は 資格情報管理 §5 を参照してください。

注意: AMQP_USER / AMQP_PASSWORD は内部 RabbitMQ コンテナの初期化時(データボリュームが空の初回起動時)にのみ反映されます。 これは RabbitMQ 公式イメージの仕様で、既存のボリュームが残ったまま値だけを変更しても RabbitMQ 内のユーザは更新されません。初回構築時に指定するか、変更する場合は 資格情報管理 §4.4 の手順で RabbitMQ 側のユーザも更新してください。

詳細なカスタマイズ

コンテナ構成などを詳細にカスタマイズしたい場合は、setup_stack.sh スクリプトで生成された docker-swarm.yml ファイルを、目的に合わせてカスタマイズしてください。