Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


3.6.18 マネージドデータベースサービスがフェイルオーバーした場合のDB Connectorの動作

マネージドデータベースサービスで運用されているデータベースで障害などが発生してフェイルオーバーした場合,DB Connectorは「3.6.14 Amazon RDS for Oracleに接続する場合の条件と設定」または「3.6.16 HiRDB Cloud Serviceに接続する場合の条件と設定」で設定した内容に従い,自動的にフェイルオーバー先のデータベースに接続します。DB Connectorの動作の詳細は,「3.14 パフォーマンスチューニングのための機能」および「3.15 フォールトトレランスのための機能」を参照してください。

ここでは,マネージドデータベースサービスでフェイルオーバーが発生した時,コネクションプール内に未使用コネクションが存在する状態で,ユーザアプリケーションプログラムがコネクションの取得要求をした場合の動作例を示します。

  1. ユーザアプリケーションプログラムがコネクションの取得を要求します。

  2. コネクション障害検知機能が,コネクションプール内の引き渡し予定のコネクションに障害が発生していないかどうかをチェックします。マネージドデータベースサービスでフェイルオーバーが発生したため,これまで接続していたデータベースとの通信ができないので,コネクションに障害が発生していると判断します。このチェックには,コネクション障害検知のタイムアウト時間に設定した時間が掛かる場合があります。

  3. チェックしたコネクションを破棄し,新たなコネクションの生成を試みます。

  4. マネージドデータベースサービスのフェイルオーバーの状態に応じて次のように動作します。

    • フェイルオーバーが完了していない場合

      フェイルオーバー先のデータベースに接続できないため,新たなコネクションの取得に失敗します。そのあとの動作は,コネクションの取得リトライ機能の設定に応じて次のようになります。

      ・コネクションの取得リトライ機能が有効な場合

      コネクションの取得リトライ機能の設定に従い,コネクションの取得をリトライします。リトライしてもコネクションが取得できない場合は,ユーザアプリケーションプログラムに例外を通知します。

      ・コネクションの取得リトライ機能が無効の場合

      ユーザアプリケーションプログラムに例外を通知します。

    • フェイルオーバーが完了している場合

      フェイルオーバー先のデータベースとのコネクションを取得し,ユーザアプリケーションプログラムに返します。

上記で示した例のとおり,自動的にフェイルオーバー先のデータベースに接続する過程では,DB Connectorはコネクション取得要求の延長でコネクションごとに障害を検知し,コネクションを破棄します。コネクション取得要求を契機としたコネクションごとの破棄ではなく,一度にコネクションプール内のすべてのコネクションを破棄したい場合は,cjclearpoolコマンドを使用してください。cjclearpoolコマンドの詳細は,「3.15.5 コネクションプールのクリア」を参照してください。