セットアップ手順
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_URL | RabbitMQ 接続 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 ファイルを、目的に合わせてカスタマイズしてください。