Compose サービスの運用

安全な停止手順

UCIDM は Docker Compose を使い、複数のアプリケーションやミドルウェアのコンテナを起動して、それぞれのサービスが協調してシステムを構成しています。

オンプレミス版 UCIDM は冗長構成をサポートしない ため、原則としてメンテナンスなどで Compose サービスを停止するときは LDAP サーバーに対して更新を行わない、また ID 連携処理の途中段階で停止しないように運用してください。

次の手順で Compose サービスを停止してください。

  1. LDAP サーバーに更新を行わないようアクセスを遮断する
  2. 「ジョブ進捗概要」や「実行中ジョブ」画面で処理中のエントリーが大量にないかを確認する
  3. compose サービスを停止する
$ docker compose stop

作業にあわせて各種ドキュメントを確認してください。

LDAP サーバーから ID 連携の処理が途中の状態で Compose サービスを停止するとエラーが発生します。エラーが発生しても、なるべく起動後に再処理するように振る舞います。どのような状況であっても完全に再処理できることは保証できませんが、多くのケースで自動的に再処理されます。起動後に少し待って履歴をご確認ください。

もし履歴から再処理できていなければ ID 情報の再同期 を行ってください。

LDAP サーバー -> Agent モジュール -> UCIDM API の処理

  • ユーザー/グループエントリーの追加・更新
    • 停止時にエラーは発生するが、エラーが発生したところから再処理する
  • グループメンバーの追加/削除
    • 同じグループへのメンバー追加/削除の順序は入れ替わるが、再処理する
  • ユーザー/グループエントリーの削除

UCIDM API -> 外部連携モジュールの処理

  • エントリーの追加・更新・削除
    • 正常にメッセージキューサービスを停止できていれば未処理のメッセージは永続化される
    • 起動後に永続化されているメッセージを再処理する

Compose サービスのコンテナや環境の再作成

Compose サービスのコンテナや環境をクリーンに再作成する (永続化されているデータは消えません) ときは前節で安全に停止させた後に削除します。

$ docker compose down

down を実行したときにもしネットワークを削除できない状態になる場合があります。

✘ Network ucidm_default  Error

そのときは docker サービスを再起動してから down を実行してください。

$ systemctl --user restart docker
$ docker compose down

次のようなエラーが発生するときは DBUS_SESSION_BUS_ADDRESS の環境変数が適切に設定されているかを確認してください。

$ echo $DBUS_SESSION_BUS_ADDRESS
Failed to connect to bus: No medium found

適切に設定されていない場合は次のようにユーザー情報にあわせて設定します。

$ export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"

環境変数の設定変更

デフォルトでは .env ファイルに Compose サービスが参照する環境変数を設定します。サービス稼働後に環境変数を変更したい場合は .env ファイルを更新した後にコンテナを再作成する必要があります。

たとえば、次の手順で api サービスの環境変数を変更します。

$ vi .env
# 環境変数の値を変更して保存する
$ docker compose stop api
$ docker compose rm api
$ docker compose up -d api

複数サービスの環境変数を変更するときは Compose サービスを停止 させた後に Compose サービスの環境を再作成 すると確実に反映できます。

Compose サービスの起動

次の手順で Compose サービスを起動してください。

$ docker compose up -d