17 マルチデータ・センターの理解
Access Managerマルチデータ・センターのトポロジは、水平方向に拡大縮小します(複数ノードをクラスタ化することによって1つのデータ・センター内に収めたり、複数のデータ・センターにわたって構成することもできます)。このモデルによって、ロード・バランシングが実現するとともに、ノードまたはデータ・センターの1つが停止した場合のフェイルオーバーも可能になります。この章では、概要の詳細について説明します。
17.1 マルチデータ・センターの概要
Access Managerを使用する大規模な組織は一般的に、そのアプリケーションをマルチデータ・センター(MDC)全体にデプロイして、負荷を分散し、障害時リカバリに対応します。Access Managerをマルチデータ・センターにデプロイすると、データ・センター間のシングル・サインオン(SSO)の構成後に、ユーザー・セッションの詳細を透過的に転送できます。
データ・センターのスコープに含まれるものとしては、保護されたアプリケーション、Webゲート・エージェント、Access Managerサーバーおよびその他のインフラストラクチャ・エンティティ(アイデンティティ・ストアやデータベースなど)があります。
ノート:
Access Managerでは、アプリケーションを2つ以上のデータ・センターに分散するというシナリオもサポートされます。
Access Managerでサポートされるマルチデータ・センター・アプローチは、マスター/クローン型のデプロイメントであり、最初のデータ・センターがマスターとして指定され、1つ以上のクローン・データ・センターがそれをミラーリングします。(マスター・データ・センターとクローン・データ・センターは、それぞれサプライヤ・データ・センターとコンシューマ・データ・センターと呼ぶこともできます)。マルチデータ・センターの設定中に、セッション・アダプション・ポリシーが構成され、マスター・データ・センターの停止時のリクエストの送信先が決定されます。設定後、マスターからクローンへのデータのレプリケーション方法が指定されます。これは、自動ポリシー同期(APS)レプリケーション・サービスを使用するか、手動によって実行できます。
データ・センターには、アプリケーション、データ・ストア、ロード・バランサなどが含まれます。各データ・センターに、Access Managerのフル・インストールが含まれます。Access ManagerのインスタンスがインストールされているWebLogic Serverドメインが複数のデータ・センターにまたがることはありません。さらに、データ・センターは、ユーザー対データ・センターのアフィニティを保持します。図17-1に、マルチデータ・センターのシステム・アーキテクチャを示します。
ノート:
グローバル・ロード・バランサは、HTTPトラフィックを地理的に最も近いデータ・センターにルーティングするように構成されます。Oracle Accessプロトコルのトラフィックの管理には、ロード・バランサは使用されません。
すべてのアプリケーションは、それぞれのローカル・データ・センターでAccess Managerクラスタに対して構成されるWebゲート・エージェントによって保護されます。どのWebゲートにも、プライマリ・サーバー1つと1つ以上のセカンダリ・サーバーがあります。各データ・センターのWebゲート・エージェントには、プライマリ・リストに同じデータ・センターからのAccess Managerサーバー・ノードがあり、セカンダリ・リストに他のデータ・センターからのノードがあります。
したがって、次の条件に該当するときは、ユーザー・リクエストを別のデータ・センターにルーティングすることも可能です。
-
ローカル・データ・センターが停止した
-
負荷が一時的に増大し、トラフィックの再分散が発生した
-
特定のアプリケーションが1つのデータ・センターのみにデプロイされている
-
負荷分散は1つのデータ・センター内で行うが、フェイルオーバーはデータ・センター間で行うようにWebゲートが構成されている
この節では、以下のトピックについて説明します。
17.1.1 マルチデータ・センターのためのCookieの理解
SSO Cookie (OAM_ID、OAMAuthnおよびOAM_GITO)は、マルチデータ・センターによって拡張および使用されます。
この節では、以下のトピックについて説明します。
17.1.1.1 OAM_ID Cookie
OAM_ID Cookieは、Access ManagerのためのSSO Cookieであり、全データ・センターにわたってMDC動作を有効にするのに必要な属性を保持します。
同じSSOセッションでユーザーからの後続のリクエストが、MDCトポロジ内の別のデータ・センターにルーティングされる場合は、構成済のセッション・アダプション・ポリシーによりセッションの採用がトリガーされます。セッション・アダプションとは、そのトポロジ内の別のデータ・センターにユーザーのセッションが存在することを示す有効な認証Cookie (OAM_ID)の提示に基づいて、データ・センターがそのユーザーのローカル・セッションを作成する動作のことです。(これは、そのユーザーの再認証を伴うことも、そうでないこともあります。)
ユーザー・セッションがデータ・センターで作成されると、OAM_ID Cookieに次のものが付加され、更新されます。
- データ・センターの
clusterid
sessionid
latest_visited_clusterid
MDCのデプロイメントにおいて、OAM_IDはホスト・スコープのCookieとなります。そのドメイン・パラメータは、データ・センター全体でシングルトンである仮想ホスト名に設定され、ロード・バランサ・レベルのユーザー・トラフィック・ルーティング・ルール(地理的アフィニティなど)に基づいて、グローバル・ロード・バランサによってAccess Managerデータ・センター内のAccess Managerサーバーにマップされます。OAM_ID Cookieには、Access Managerサーバー以外のアプリケーションからはアクセスできません。
17.1.1.2 OAMAuthn WebゲートCookie
OAMAuthnは11gおよび12cのWebゲートCookieです。認証と認可に成功すると、保護されたリソースへのアクセス権がユーザーに付与されます。その時点で、ブラウザは、認証を行うデータ・センターのclusterid:sessionid
を持つ有効なWebゲートCookieを取得します。
認可が後に続く認証が複数のデータ・センターにわたっている場合は、ユーザー・リクエストを認可するデータ・センターが、WebゲートCookieからそのセッションの作成元であるclusterid
を取得することで、セッション・アダプションをトリガーします。(WebゲートCookieのホスト・スコープのため、Webゲートの各データ・センターのホスト名は同じである必要があります。)セッション・アダプションの後に、新しいセッションが現在のデータ・センター内に作成され、セッションの詳細が同期されます。
ノート:
WebゲートCookieを認可時に更新することはできないため、新規作成されたsessionidを将来の認可参照用に永続化することはできません。この場合は、リモートのsessionidとローカルのsessionidがセッション索引付けを通してリンクされます。データ・センターに対するそれ以降の認可コールのときに、新しいセッションが作成されるのは次の場合です。
-
MDCが有効化されている
-
WebゲートCookie内のsessionidに一致するセッションがローカルのデータ・センター内に存在しない
-
WebゲートCookie内のsessionidに一致するセッション索引を持つセッションが存在しない
-
有効なセッションが(MDCセッション同期ポリシーに基づく)リモートのデータ・センターに存在する
これらの場合は、新しいセッションが、WebゲートCookie内のsessionidを参照するセッション索引とともに、ローカルのデータ・センター内で作成されます。
17.1.1.3 OAM_GITO (Global Inactivity Time Out) Cookie
OAM_GITOは、認可レスポンスとして設定されるドメインCookieです。
認証プロセスのセッション詳細がOAM_ID Cookieに記録されます。認可が別のデータ・センターにホップする場合は、認可リクエストを処理するデータ・センター内で新しいセッションを作成し、新しいセッションのセッション索引を受信sessionid
として設定することにより、セッション・アダプションが発生します。それ以降の認証リクエストでは、OAM_ID Cookie内のclusterid:sessionidマッピングのみが認識されているため、認可のためにセッションが別のデータ・センターにホップしても、そのことは認証リクエストの際に認識されません。このギャップに対処するために、OAM_GITO Cookie (複数のWebゲート・エージェントを対象とするタイムアウト追跡にも利用されます)が導入されています。
認可時に、OAM_GITO CookieがドメインCookieとして設定されます。それ以降の認証リクエストに対しては、OAM_GITO Cookieの内容が読み取られて、最新のセッション情報および非アクティブまたはアイドル・タイムアウトの値が特定されます。OAM_GITO Cookieに格納されているのは、次のデータです。
-
データ・センター識別子
-
セッション識別子
-
ユーザー識別子
-
最終アクセス時間
-
トークン作成時間
ノート:
OAM_GITO Cookieでは、すべてのWebゲートおよびAccess Managerサーバーが共通ドメイン階層を共有することが必要です。たとえば、サーバー・ドメインが.us.example.com
の場合は、すべてのWebゲートが(少なくとも) .example.com
を共通ドメイン階層として持つ必要があります。これでOAM_GITO Cookieを.example.com
ドメインで設定できるようになります。
17.1.2 認可時のセッション・アダプション
マルチデータ・センターのセッション・アダプションは、認可フローの中でサポートされます。認証に成功した後、OAMAuthn Cookieには、認証が行われたデータ・センターのクラスタID詳細が付加されます。
認可時に、リクエストが別のデータ・センターにルーティングされる場合、Access Managerランタイムは、有効なリモート・セッションであるかどうかをチェックして、これがマルチデータ・センターのシナリオに該当するかどうかを判断します。有効なリモート・セッションが特定されると、セッション・アダプション・ポリシーごとにマルチデータ・センターのセッション・アダプション・プロセスがトリガーされます。
クローンのAccess ManagerクラスタがOracle Accessプロトコル(OAP)を使用してマスターのAccess Managerクラスタに対してセッションの詳細のバックエンド・リクエストを行うように、セッション・アダプション・ポリシーを構成することもできます。前のセッションを無効にして、ユーザーが一度に1つのデータ・センターのみでセッションを持つようにセッション・アダプション・ポリシーを構成することもできます。セッション・アダプション・プロセスの後に、認可リクエストを処理するデータ・センターに新しいセッションが作成されます。
ノート:
認可時のOAMAuthn Cookieの更新はサポートされていないため、新規作成されたセッションのセッション索引は、受信セッションIDのものに設定されます。
関連項目:
17.1.3 セッション索引付け
セッション索引とは、OAMAuth Cookieのセッション識別子を示します。
データ・センターへの認可コール中に、セッション索引を持つ新しいセッションが、ローカル・データ・センターに作成されます。これは、次の条件が満たされると発生します。
-
OAMAuth Cookie内のセッションIDに一致するセッションがローカルのデータ・センターに存在しない。
-
MDCが有効化されている。
-
OAMAuth Cookie内のセッションIDに一致するセッション索引を持つセッションが存在しない。
-
有効なセッションがMDCセッション同期ポリシーに基づくリモートのデータ・センターに存在する。
17.1.4 サポートされるマルチデータ・センターのトポロジ
Access Managerでは、3つのマルチデータ・センター・トポロジ(アクティブ/アクティブ、アクティブ/パッシブおよびアクティブ/スタンバイの各モード)がサポートされます。
次の各項では、これらのモードの詳細を説明します。
17.1.4.1 MDCアクティブ/アクティブ・モード
アクティブ/アクティブ・トポロジ。この場合、マスターとクローンのデータ・センターが正確なレプリカであり、同時にアクティブとなります。
これらは、地理的位置などの定義済の基準に基づいて、様々なユーザーのセットに対応します。ロード・バランサによってトラフィックが適切なデータ・センターにルーティングされます。図17-2に、通常稼働時にアクティブ/アクティブ・モードに設定されているマルチデータ・センターを示します。
図17-2では、ニューヨークのデータ・センターがマスターとして指定され、ポリシーおよび構成の変更はすべてこのデータ・センターのみで行われます。ロンドンのデータ・センターはクローンとして指定されており、REST APIを使用して定期的にデータをニューヨークのデータ・センターと同期させます。地理的に異なる場所(米国およびヨーロッパ)のユーザーを、(アクセスされるアプリケーションの近さではなく)データ・センターへの地理的な近さに基づいて、適切なデータ・センター(ニューヨークまたはロンドン)にルーティングするようにグローバル・ロード・バランサが構成されています。たとえば、米国にいるユーザー1からのリクエストはすべてニューヨークのデータ・センター(NYDC)にルーティングされ、ヨーロッパにいるユーザー2からのリクエストはすべてロンドンのデータ・センター(LDC)にルーティングされます。
ノート:
図17-2のAccess Managerクラスタは互いに独立しており、同一のOracle WebLogicドメインに属してはいません。WebLogicドメインが複数のデータ・センターにまたがることはお薦めしません。
この例では、仮にNYDCがリクエストで過負荷になった場合、グローバル・ロード・バランサはユーザー1のリクエストを、LDCにあるクローンのAccess Managerクラスタにルーティングするようになります。クローンのAccess Managerクラスタは、ユーザーのOAM_ID Cookieを使用して、マスター・クラスタの有効なセッションであるかどうかをチェックします。マスター・クラスタに有効なセッションがある場合、認証または再認証の要求なしで新しいセッションが作成されます。
さらに、クローンのAccess ManagerクラスタがOracle Accessプロトコル(OAP)を使用してマスターのAccess Managerに対してセッションの詳細のバックエンド・リクエストを行うように、セッション・アダプション・ポリシーを構成することもできます。リモート・セッション(NYDCのセッション)を無効にして、ユーザーが一度に1つのデータ・センターのみでセッションを持つようにセッション・アダプション・ポリシーを構成することもできます。
図17-3は、マスター・クラスタが過負荷のとき、または停止したときにユーザーがどのように再ルーティングされるかを示しています。マスターのAccess Managerクラスタが完全に停止すると、クローンのAccess Managerクラスタは、ユーザー1のセッションの詳細を取得するよう試みます。マスターのAccess Managerクラスタは完全にアクセス不能であるため、ユーザー1は、強制的に再認証され、クローンのAccess Managerクラスタで新しいセッションを確立します。この場合は、前のセッションで保存されていた情報はすべて失われます。
ノート:
エージェント・フェイルオーバーのあるアクティブ/アクティブ・トポロジでは、エージェントのAccess Managerサーバーが一方のデータ・センターではプライマリとして構成され、他方のデータ・センターではセカンダリとして構成され、これによってフェイルオーバーのシナリオが支援されます。
17.1.4.2 MDCアクティブ/パッシブ・モード
アクティブ/パッシブ・トポロジは、プライマリのデータ・センターが稼働可能であり、クローンのデータ・センターはそうでない場合です。このトポロジでは、プライマリのデータ・センターに障害が発生した場合に、合理的な時間内でクローンの稼働を開始させることができます。したがって、アクティブ/パッシブ・モードは、データ・センターの1つがパッシブで、サービスが開始されていません。
この場合、データ・センターはすぐに稼働可能になる必要はありませんが、プライマリのデータ・センターが停止した場合には合理的な時間内に稼働を開始させる必要があります。ポリシー・データは常に同期されますが、MDC設定を行う必要はありません。
17.1.4.3 MDCアクティブ/ホット・スタンバイ・モード
アクティブ/ホット・スタンバイ。この場合、データ・センターの1つがホット・スタンバイ・モードです。この場合、アクティブ・データ・センターが停止していないかぎり、トラフィックはホット・スタンバイ・データ・センターにルーティングされません。
この場合、トラフィックに対応する追加のデータ・センターは毎日は必要ありませんが、1つは常に用意しておきます。アクティブ/ホット・スタンバイ・モードでのデプロイは、アクティブ/アクティブ・モードのステップに従いますが、ホット・スタンバイとして定義されているセンターにトラフィックをルーティングしません。ホット・スタンバイ・センターは引き続きデータを同期しますが、ロード・バランサまたは管理者によってトラフィックをそのセンターに転送したときにのみ使用されます。
17.2 マルチデータ・センター・デプロイメント
マルチデータ・センター・デプロイメントでは、各データ・センターにAccess Managerのフル・インストールが含まれ、WebLogic Serverドメインが複数のデータ・センターにまたがることはありません。
グローバル・ロード・バランサによってユーザーからデータ・センターへのアフィニティが維持されますが、次の場合にユーザー・リクエストが別のデータ・センターにルーティングされることもあります。
-
データ・センターがダウンした。
-
負荷が一時的に増大し、トラフィックの再分散が発生した。
-
各データ・センターが他のミラーではない。(たとえば、アプリケーションの中には1つのデータ・センターにしかデプロイできないものがあります)
-
Webゲートが、データ・センター内でロード・バランシングを行い、複数データ・センターにまたがるフェイルオーバーを行うように構成されている。
図17-4に、基本的なマルチデータ・センター・デプロイメントを示します。
次の各項で、様々なデプロイメント・シナリオを説明します。
ノート:
バック・チャネル通信に使用されるOAP接続では、ロード・バランシングやフェイルオーバーはサポートされないので、ロード・バランサを使用する必要があります。
17.2.1 セッション・アダプション: 再認証、セッション無効化、セッション・データ取得なし
次のシナリオは、再認証、リモート・セッションの無効化およびリモート・セッション・データの取得なしにセッション・アダプション・ポリシーが構成されている場合のフローを示しています。
ユーザーにはDC1とのアフィニティがあることを前提としています。
-
ユーザーがDC1によって認証されます。
認証に成功すると、OAM_ID Cookieは、DC1を参照する一意のデータ・センター識別子が付加され、ユーザーはDC1内のAccess Managerで保護されたアプリケーションにアクセスできるようになります。
-
DC2内にデプロイされたアプリケーションにアクセスすると、ユーザーはグローバル・ロード・バランサによってDC2にルーティングされます。
-
DC2内のAccess Managerに対して、DC1で発行された付加情報付きOAM_ID Cookieが提示されます。
検証に成功すると、DC2のAccess ManagerはこのユーザーがリモートのDC1からルーティングされたことを認識します。
-
DC2のAccess Managerはセッション・アダプション・ポリシーを調べます。
このセッション・アダプション・ポリシーは、再認証、リモート・セッション無効化およびリモート・セッション・データ取得を行わないように構成されています。
-
DC2のAccess Managerは、DC1のOAM_ID Cookieで提示された情報(存続期間、ユーザー)を使用してローカル・ユーザー・セッションを作成し、静的セッション情報($userレスポンス)を再初期化します。
-
DC2のAccess Managerは、OAM_ID Cookieを自身のデータ・センター識別子で更新します。
データ・センター・チェーンもOAM_ID Cookieに記録されます。
-
次に、ユーザーはDC1内のAccess Managerで保護されているアプリケーションにアクセスし、グローバル・ロード・バランサによって再びDC1にルーティングされます。
-
DC1のAccess Managerに対して、DC1が発行してDC2で更新されたOAM_ID Cookieが提示されます。
検証に成功すると、DC1のAccess ManagerはこのユーザーのセッションがDC1とDC2の両方にあることを認識します。
-
DC1のAccess Managerは、OAM_ID Cookieで参照されているセッションの特定を試みます。
-
見つかった場合は、DC1のセッションが更新されます。
-
見つからない場合、DC1のAccess Managerは、再認証、リモート・セッション無効化およびリモート・セッション・データ取得なしで構成されているセッション・アダプション・ポリシーを調べます。
-
-
DC1のAccess Managerは、自身のデータ・センター識別子でOAM_ID Cookieを更新し、データ・センター・チェーンをDC2と同様に記録します。
17.2.2 セッション・アダプション: 再認証なし、セッション無効化およびセッション・データ取得あり
次のシナリオは、再認証がなく、リモート・セッションの無効化とリモート・セッション・データの取得でセッション・アダプション・ポリシーが構成されている場合のフローを示しています。
ユーザーにはDC1とのアフィニティがあることを前提としています。
-
ユーザーがDC1によって認証されます。
認証に成功すると、OAM_ID Cookieに、DC1を参照する一意のデータ・センター識別子が付加されます。
-
DC2内にデプロイされたアプリケーションにアクセスすると、ユーザーはグローバル・ロード・バランサによってDC2にルーティングされます。
-
DC2内のAccess Managerに対して、DC1で発行された付加情報付きOAM_ID Cookieが提示されます。
検証に成功すると、DC2のAccess ManagerはこのユーザーがリモートのDC1からルーティングされたことを認識します。
-
DC2のAccess Managerはセッション・アダプション・ポリシーを調べます。
このセッション・アダプション・ポリシーは、再認証は行わないが、リモート・セッション無効化およびリモート・セッション・データ取得を行うように構成されています。
-
DC2のAccess Managerは、DC1のAccess Managerへのバックチャネル(OAP)コール(セッション識別子が含まれる)を行い、セッション・データを取得します。
DC1のセッションは、データ取得の後に終了となります。このステップが不正なセッション参照のために失敗すると、ローカル・セッションが作成されます。「セッション・アダプション: 再認証、セッション無効化、セッション・データ取得なし」を参照してください。
-
DC2のAccess Managerは、OAM_ID Cookieで提示された情報(存続期間、ユーザー)を使用してローカル・ユーザー・セッションを作成し、静的セッション情報($userレスポンス)を再初期化します。
-
DC2のAccess Managerは、OAM_ID Cookieを自身のデータ・センター識別子で書き換えます。
-
次に、ユーザーはDC1のAccess Managerで保護されているアプリケーションにアクセスし、グローバル・ロード・バランサによってDC1にルーティングされます。
-
DC1のAccess Managerに対して、DC2で発行されたOAM_ID Cookieが提示されます。
検証に成功すると、DC1のAccess ManagerはこのユーザーのセッションがDC2にあることを認識します。
-
DC1のAccess Managerは、DC2のAccess Managerへのバックチャネル(OAP)コール(セッション識別子が含まれる)を行い、セッション・データを取得します。
セッションが見つかった場合は、取得したデータを使用してセッションが作成されます。見つからない場合は、DC1のOAMサーバーによって新しいセッションが作成されます。DC2のセッションは、データ取得の後に終了となります。
17.2.3 セッション・アダプション: 再認証およびセッション無効化なし、オンデマンドのセッション・データ取得あり
マルチデータ・センターでは、非ローカル・セッションが終了されず、ローカル・セッションがリモートDCから取得されたセッション・データを使用して作成されることを除き、再認証なしのセッション・アダプションをサポートします。
OAM_ID Cookieが更新され、現在どのデータ・センターにアクセスしているかを示す属性が含まれることに注意してください。
17.2.4 異なるデータ・センターで処理される認証および認可リクエスト
認証リクエストの処理はニューヨークのデータ・センター(NYDC)で行われるが、ユーザー・アフィニティが理由で認可リクエストはロンドンのデータ・センター(LDC)に提示されるシナリオについて考えます。
リモート・セッション終了が有効化されている場合は、マルチデータ・センターをシームレスに操作するためにOAM_ID Cookie、OamAuthn/ObSSO認可CookieおよびGITO Cookieの組合せが必要になります。このフロー(およびその後の図17-5)で、これを示します。ユーザーとNYDCとの間にアフィニティがあることを前提とします。
-
APP1にアクセスすると、ユーザーはNYDCによる認証を受けます。
認証に成功すると、OAM_ID Cookieに、NYDCを参照する一意のデータ・センター識別子が付加されます。これに続く認可コールは、アクセスされるリソースのプライマリ・サーバー、つまりNYDCによって処理されます。認可が行われると、NYDCの識別子(クラスタID)を保持する認可Cookieが生成され、ユーザーにはAPP1へのアクセス権が付与されます。
-
ユーザーは、LDCにあるAPP2へのアクセスを試みます。
-
APP2のWebゲートは、LDCに有効なセッションが見つからず、認証を開始します。
ユーザー・アフィニティが理由で、認証リクエストはNYDCにルーティングされ、ここでシームレスに認証が行われます。OamAuthn Cookieの内容が生成され、APP2のWebゲートと共有されます。
-
APP2のWebゲートは、APP2のプライマリ・サーバー、LDCに後続の認可リクエストと生成された認可Cookieを転送します。
認可時に、LDCはこれがマルチデータ・センターのシナリオであり、有効なセッションがNYDCに存在すると判断します。この場合の認可は、構成済のセッション・アダプション・ポリシーによりリモート・セッションを同期させることによって行われます。
-
認可時にLDCで新しいセッションが作成され、受け取ったセッションIDが新しいセッションの索引として設定されます。
これ以降の認可コールは、索引によるセッション検索でLDC内の有効なセッションが返されるかぎり、受け入れられます。認可のたびに、GITO CookieがクラスタID、セッションIDおよびアクセス日時で更新されます。GITO Cookieは認可レスポンスとして毎回書き換えられます。
同じユーザーからのそれ以降の認証リクエストをNYDCが受け取った場合は、OAM_ID CookieとGITO Cookieの情報を使用して、どのデータ・センターにそのユーザーの最新のセッションがあるかが特定されます。構成済のセッション・アダプション・ポリシーに基づいて、マルチデータ・センターのフローがシームレスにトリガーされます。
17.2.5 ログアウトとセッション無効化
マルチデータ・センターのシナリオでは、ログアウトによって確実にすべてのデータ・センターのすべてのサーバー側セッションとすべての認証Cookieがクリアされます。セッション無効化の場合は、バックチャネルを介してセッション・アーティファクトを終了させても、Webゲートで保持されているセッションCookieおよび状態情報が削除されることはありません。
ただし、サーバー・セッションがないため認可に失敗し、その結果として再認証が行われます。セッション無効化を行わない場合は、ログアウトによって、現在のSSOセッションに属するすべてのサーバー側セッションがすべてのデータ・センターからクリアされます。このフロー(およびその後の図17-6)で、ログアウトを示します。ユーザーとNYDCとの間にアフィニティがあることを前提とします。
-
NYDCとのアフィニティを持つユーザーが、NYDCでの認証成功後にAPP1へのアクセス権を獲得します。
-
ユーザーは、APP2へのアクセスを試みます。
この時点で、ユーザー・セッションがSSOの一部としてNYDCおよびLDCに存在します。
-
ユーザーは、APP1からログアウトします。
アフィニティが理由で、このログアウト・リクエストはNYDCに到達します。
-
NYDCのサーバーは、ユーザーのSSOセッションを終了させ、すべてのSSOパートナからログアウトします。
-
NYDCのサーバーはOAPセッション終了リクエストを、SSOセッションに関連付けられているすべての関連データ・センターに送信します。これには、LDCも含まれます。
この結果として、SSOに関連付けられているすべてのユーザー・セッションがすべてのデータ・センターからクリアされます。
17.2.6 ストレッチ・クラスタ・デプロイメント
地理的に非常に近接し、保証された待ち時間が5ミリ秒未満のデータ・センターでは、ストレッチ・クラスタ・デプロイメントを選択できます。
この場合、前項で説明した従来のマルチデータ・センターのデプロイメントとは異なり、1つのOAMクラスタが複数のデータ・センターにわたって拡張され、1つのデータ・センターに一部のOAMノードがあり、別のデータ・センターに残りのノードがあります。デプロイメントは2つのデータ・センターに分散していますが、Access Managerはこれを単一のクラスタとして扱います。ポリシー・データベースは、データ・センターのいずれかに存在することになります。ストレッチ・クラスタ・デプロイメントには、次の制限が適用されます。
-
Access Managerは、ノードの同期を維持するために、基礎となるWebLogicおよびコヒーレンス層に依存します。データ・センター間の待ち時間は、常に5ミリ秒未満である必要があります。待ち時間のスパイクは、不安定および予期しない動作を引き起こす可能性があります。
-
ストレッチ・クラスタ・デプロイメントでは、実行時のデータ・センター間の傍受通信が、従来のマルチデータ・センター・デプロイメントの場合よりも比較的多くなります。後者の場合、データ・センター間のランタイム通信は、データ・センター間でセッションの採用が必要となるユースケースに制限されています。
-
データ・センター全体にわたって単一のクラスタであるので、従来のマルチデータ・センター・デプロイメントと同じレベルの信頼性と可用性を提供しません。ポリシー・データベースが単一点障害となる可能性があります。従来のマルチデータ・センター・デプロイメントでは、各データ・センターが自立し、他のデータ・センターから独立して動作することで、より高い信頼性を提供します。
図17-7はストレッチ・クラスタ・デプロイメントを示し、その次の図17-8は、従来のMDCデプロイメントを示しています。ストレッチ・クラスタ・デプロイメントよりも従来のマルチ・データ・センター・デプロイメントをお薦めします。
17.3 アクティブ/アクティブ・マルチデータ・センター・トポロジ・デプロイメント
アクティブ/アクティブ・トポロジでは、マスターとクローンのデータ・センターは互いの正確なレプリカです(アプリケーション、データ・ストアなど)。
これらは同時にアクティブであり、定義済の基準(たとえば地理的位置)に基づいて、それぞれ異なるユーザー・セットに対応します。ロード・バランサによってトラフィックが適切なデータ・センターにルーティングされます。同一のAccess Managerクラスタが両方のロケールにデプロイされ、ニューヨークがマスター、ロンドンがクローンとして指定されます。
ノート:
エージェント・フェイルオーバーのあるアクティブ/アクティブ・トポロジでは、エージェントのAccess Managerサーバーが一方のデータ・センターではプライマリとして構成され、他方のデータ・センターではセカンダリとして構成され、これによってフェイルオーバーのシナリオが支援されます。
図17-9に、アクティブ/アクティブ・モードのマルチデータ・センター・デプロイメントのトポロジを示します。ニューヨークのデータ・センターがマスターとして指定され、ポリシーおよび構成の変更はすべてこのデータ・センターのみで行われます。ロンドンのデータ・センターはクローンとして指定されており、MDC admin REST APIを使用して定期的にデータをニューヨークのデータ・センターと同期させます。地理的に異なる場所(米国およびヨーロッパ)のユーザーを、(アクセスされるアプリケーションの近さではなく)データ・センターへの地理的な近さに基づいて、適切なデータ・センター(ニューヨークまたはヨーロッパ)にルーティングするようにグローバル・ロード・バランサが構成されています。たとえば、米国にいるユーザー1からのリクエストはすべてニューヨークのデータ・センター(NYDC)にルーティングされ、ヨーロッパにいるユーザー2からのリクエストはすべてロンドンのデータ・センター(LDC)にルーティングされます。
グローバル・ロード・バランサはセッションの固定性を維持するように構成されているので、ユーザーが特定のデータ・センターに割り当てられた後は、そのユーザーからのリクエストはすべて同じデータ・センターにルーティングされます。この例では、ユーザー1は常にニューヨークのデータ・センターにルーティングされ、ユーザー2はロンドンのデータ・センターにルーティングされます。
各データ・センターでのユーザー・リクエストは、アクセスされるアプリケーションに応じて異なるWebゲートによって捕捉されます。各Webゲートには、プライマリ・サーバーとして構成された同じデータ・センター内のAccess Managerクラスタの様々なノードがあります。この場合、Webゲートはローカル・データ・センターのロード・バランシングとフェイルオーバーを行います。
ノート:
管理者は、負荷の特性に応じて様々な順序で柔軟に各Webゲートのプライマリ・サーバーを構成できます。各データ・センターでモニタリング・スクリプトを実行すると、Access Managerコンポーネント(Webゲートやサーバー)が応答しなくなったことが検出されるので、管理者はロード・バランサを再構成してユーザー・トラフィックを別のデータ・センターに転送できます。
負荷を全世界に分散するために、任意の数のクローン・データ・センターを構成できます。唯一の条件は、MDC admin REST APIを使用してすべてのクローン・データ・センターが単一のマスターと同期されていることです。次の図17-10には、5つのデータ・センターにまたがるアクティブ/アクティブのマルチデータ・センター・デプロイメントを示します。
17.4 Access Managementコンポーネント間のロード・バランシング
たとえば、NYDCの各Webゲートでプライマリ・サーバーをssonode1.ny.acme.com、ssonode2.ny.acme.comなどと構成するかわりに、すべてが同じ仮想ホスト名(たとえばsso.ny.acme.com)を指し、ロード・バランサがDNSを解決してクラスタ内の各ノードに転送することもできます。ただし、Access Managerコンポーネント間にロード・バランサを導入するときは、次の制約事項に注意してください。
-
OAP接続は永続的であり、アイドル状態になっている場合でも、構成可能な期間の間はそれらの接続をオープンしておく必要があります。
-
ロード・バランサが接続を終了する前に、接続をリサイクルするようにWebゲートを構成する必要があります。ただし、ロード・バランサがTCPリセットをWebゲートとサーバーの両方に送信でき、確実に接続がクリーンアップされる場合は除きます。
-
ロード・バランサは、OAP接続を各WebゲートのアクティブなAccess Managerサーバー間で均等に分散する(OAP接続を接続元IPに従って分散する)必要があります。このようにしない場合は、負荷の偏りが発生する可能性があります。
図17-11に、ローカルのロード・バランサ(LBR 3およびLBR 4)が各データ・センターのクラスタのフロント・エンドとなっているデプロイメント・トポロジのバリエーションを示します。mod_wl_ohs
によって、これらのローカル・ロード・バランサとしてOracle HTTP Server (OHS)を使用できます。OAPトラフィックはデータ・センター内のWebゲートとAccess Managerクラスタとの間を流れますが、ロード・バランサがDNSルーティングを実行することによって、仮想ホスト名が使用できるようになります。
「Access Managerサーバーのヘルスのモニタリング」を参照してください。
図17-12に、デプロイメント・トポロジのもう1つのバリエーションを示します。このトポロジでは、グローバル・ロード・バランサ(GLBR2)が導入されており、ローカル・ロード・バランサ(LBR3およびLBR4)のフロント・エンドとなっています。この場合は、データ・センター内だけでなく、データ・センター間でのホスト名の仮想化が可能になります。各データ・センター内のWebゲートは、ロード・バランシングはローカルで行うが、フェイルオーバーはリモートで行うように構成されます。このトポロジの主な利点の1つは、スタックの全レイヤーで高可用性が保証されることです。データ・センターのAccess Managerクラスタ全体が停止した場合でも、そのデータ・センターのWebゲートは他のデータ・センターのAccess Managerクラスタにフェイルオーバーします。
17.5 タイムアウトおよびセッション同期の理解
次の各項で、マルチデータ・センターにおけるセッション・タイムアウトおよび同期の扱いについて説明します。
17.5.1 最大セッション制約
資格証明コレクタ・ユーザーのアフィニティによって、ユーザー当たりの最大セッション制約が確実に遵守されます。
ユーザー当たりの許容最大セッション数を検証するためのマルチデータ・センター・セッション・ストアはありません。
17.5.2 アイドル・タイムアウトに関するマルチデータ・センターのポリシー構成
OAM_IDおよびOAM_GITOのCookieを使用してアイドル(非アクティブ)タイムアウトが計算され、適用されます。ただし、OAM_GITO Cookieを設定できるのは、Webゲート間に共通のサブドメインがある場合のみです。したがって、マルチデータ・センターのポリシーは、OAM_GITO Cookieが設定されているかどうかに基づいて構成する必要があります。
表17-1は、ポリシー構成をまとめたものです。
表17-1 アイドル・タイムアウトに関するマルチデータ・センターのポリシー構成
OAM_GITO設定済 | マルチデータ・センターのポリシー |
---|---|
はい アイドル・タイムアウトは最新のOAM_GITO Cookieから計算されます |
SessionMustBeAnchoredToDataCenterServicingUser=<true/false> SessionDataRetrievalOnDemand=true Reauthenticate=false SessionDataRetrievalOnDemandMax_retry_attempts=<number> SessionDataRetrievalOnDemandMax_conn_wait_time=<milliseconds> SessionContinuationOnSyncFailure=<true/false> MDCGitoCookieDomain=<sub domain> |
いいえ OAM_GITOが使用できないため、アイドル・タイムアウトはOAM_ID Cookieから計算されます |
SessionMustBeAnchoredToDataCenterServicingUser=false SessionDataRetrievalOnDemand=true Reauthenticate=false SessionDataRetrievalOnDemandMax_retry_attempts=<number> SessionDataRetrievalOnDemandMax_conn_wait_time=<milliseconds> SessionContinuationOnSyncFailure=<true/false> #MDCGitoCookieDomain= この設定はコメント化または削除する必要があります。 |
17.5.3 マルチデータ・センターのセッションの失効
セッション失効の管理は、ユーザーがアフィニティを持つデータ・センターによって行われます。
ユーザーと特定のデータ・センターとのアフィニティは、グローバル・トラフィック・マネージャまたはロード・バランサに基づきます。
17.5.4 セッション同期とマルチデータ・センターのフェイルオーバー
ユーザーのリクエストに対応する有効なセッションがリモート・データ・センターに存在する場合、MDCセッション同期化ポリシーに基づいて、リモート・セッションの属性は、現行リクエストを処理するデータ・センターに移行され同期されます。同期が失敗しても、データ・センター間のWebゲート・フェイルオーバーがMDCでサポートされているため、データ・センターは引き続きリクエストされたリソースにアクセスできます。
Access Managerサーバー側セッションは、シングル・サインオン(SSO)資格証明に基づいて作成および維持されます。セッションの中で保存される属性には(これに限定されるわけではありません)、ユーザー識別子、アイデンティティ・ストア参照、サブジェクト、カスタム属性、パートナ・データ、クライアントIPアドレスおよび認証レベルがあります。SSOが許可されるのは、サーバーがユーザーのリクエストに対応する有効なセッションを特定できる場合です。
マルチデータ・センターのシナリオでは、ユーザー・リクエストがデータ・センター間をホップするときに、そのリクエストを処理するデータ・センターが、正当なセッションかどうかの検証をローカルで、およびデータ・センター間で行う必要があります。特定のリクエストに対する有効なセッションがリモートのデータ・センターに存在する場合は、MDCセッション同期ポリシーに基づいてリモート・セッションを現在のデータ・センターに移行する必要があります。(「マルチデータ・センター・デプロイメント」を参照してください。)このセッション同期のときに、リモート・セッションからのすべてのセッション属性が、現在のリクエストを処理するデータ・センターで新規作成されたセッションに同期されます。
マルチデータ・センターでは、データ・センター間のWebゲートのフェイルオーバーもサポートされます。Webゲートが別のデータ・センターにフェイルオーバーするときは、最初のデータ・センターのサーバーが停止しているため、セッション・データの同期はできません。したがって、2つ目のデータ・センターがSessionContinuationOnSyncFailure
の設定に基づいて、セッション・アダプションを続行するかどうかを決定します。trueのときは、リモートのデータ・センターへのOAP通信が失敗しても、現在のリクエストを処理するデータ・センターはCookie内の必須属性に基づいてローカルに新規セッションを作成できます。これで、同期エラーがあってもリクエストされたリソースへのシームレスなアクセスが可能になります。表17-2は、セッション同期とフェイルオーバーの代表的なシナリオをまとめたものです。この表のパラメータの詳細は、表C-2を参照してください。
表17-2 セッション同期とフェイルオーバーのシナリオ
MDCデプロイメント | MDCポリシー | リモート・セッションの検証 | リモートDCからのユーザーを処理するDCでのセッション同期 | リモート・セッションの終了 | ユーザーに対するチャレンジ |
---|---|---|---|---|---|
アクティブ/アクティブ |
SessionMustBeAnchoredToDataCenterServicingUser=true SessionDataRetrievalOnDemand=true Reauthenticate=false SessionDataRetrievalOnDemandMax_retry_attempts=<number> SessionDataRetrievalOnDemandMax_conn_wait_time=<milliseconds> SessionContinuationOnSyncFailure= false MDCGitoCookieDomain=<sub domain> |
はい |
はい |
はい |
有効なセッションがリモート・データ・センターで見つからないとき |
アクティブ/アクティブ |
SessionMustBeAnchoredToDataCenterServicingUser=false SessionDataRetrievalOnDemand=true Reauthenticate=false SessionDataRetrievalOnDemandMax_retry_attempts=<number> SessionDataRetrievalOnDemandMax_conn_wait_time=<millisecon ds> SessionContinuationOnSyncFailure= false MDCGitoCookieDomain=<sub domain> |
はい |
はい |
いいえ |
有効なセッションがリモート・データ・センターで見つからないとき |
アクティブ/スタンバイ |
SessionMustBeAnchoredToDataCenterServicingUser=true SessionDataRetrievalOnDemand=true Reauthenticate=false SessionDataRetrievalOnDemandMax_retry_attempts=<number> SessionDataRetrievalOnDemandMax_conn_wait_time=<millisecon ds> SessionContinuationOnSyncFailure= false MDCGitoCookieDomain=<sub domain> |
検証できない(リモートDCが停止しているため) |
いいえ(リモートDCが停止しているため) |
終了できない(リモート・データ・センターが停止しているため) |
はい |
アクティブ/スタンバイ |
SessionMustBeAnchoredToDataCenterServicingUser=true SessionDataRetrievalOnDemand=true Reauthenticate=false SessionDataRetrievalOnDemandMax_retry_attempts=<number> SessionDataRetrievalOnDemandMax_conn_wait_time=<milliseconds> SessionContinuationOnSyncFailure= true MDCGitoCookieDomain=<sub domain> |
検証できない(リモート・データ・センターが停止しているため) |
いいえ(リモート・データ・センターが停止しているため) |
終了できない(リモート・データ・センターが停止しているため) |
いいえ 有効なCookie内の詳細情報を使用してローカル・セッションを作成することにより、シームレスなアクセスを提供 |
17.6 マルチデータ・センター環境のレプリケート
マルチデータ・センター環境のデータは、初期設定手順の一部としてマスター(サプライヤ)からクローン(コンシューマ)にレプリケートする必要があります。
この初期レプリケーションの後に、データ・センター全体で次のアーティファクトを定期的に同期する必要があります。
-
Webゲート・プロファイル: Webゲート・プロファイルがクローンにレプリケートされる間、プライマリ・サーバー・リストおよびログアウトURLの詳細がクローン・データ・センターの情報で更新されます。
-
認証モジュール
-
OAMプロキシ構成
-
セッション・マネージャ構成
-
ポリシーおよびパートナ・データ
17.6.1 WLSTを使用したデータのレプリケート
データの初期レプリケーション(マルチデータ・センターの設定時)は、WLSTを使用して手動で実行する必要があります。
この初期レプリケーションの後に、WLSTコマンドまたは自動ポリシー同期レプリケーション・サービスを使用して、すでに複製されたデータを同期できます。WLSTを使用する場合、パートナ・プロファイルおよびポリシーがマスター・データ・センターからエクスポートされ、クローン・データ・センターにインポートされます。マルチデータ・センター環境でのデータのレプリケーションは必要であり、WLSTをこの目的に使用することが、これを達成する最低限の方法です。
17.6.2 自動ポリシー同期を使用したデータの同期
自動ポリシー同期(APS、レプリケーション・サービスとも呼ばれる)は、マスター・データ・センターからクローン・データ・センターにデータを自動的にレプリケートするのに使用されるREST APIのセットです。
これは、Access Managerのデータを複数データ・センター間で同期させるように構成できます。APSを実行するには、データ・センター間の有効なレプリケーション承諾が存在する必要があります。「マルチデータ・センター同期の理解」を参照してください。
ノート:
APSは、データ・センターの同期を維持することのみを目的として設計されており、初めから完全なレプリケーションを実行する場合には使用されません。ベース・ラインを確立するには、最初にWLSTを使用してデータをレプリケートする必要があります。
17.7 マルチデータ・センターに関する推奨事項
この項では、マルチデータ・センター機能に関する推奨事項を示します。
17.7.1 共通ドメインの使用
Webゲートはドメイン・スコープ指定とし、すべてのWebゲートおよびOAM Server資格証明コレクタで1つの共通ドメインを推測できるようにすることをお薦めします。これで、Webゲートが、OAM Serverとの間で共有される暗号化GITO Cookieを設定できるようになります。
たとえば、Webゲートがapplications.abc.com
で構成され、OAM Server資格証明コレクタがserver.abc.com
で構成されている場合は、GITO Cookieの設定に使用される共通ドメインはabc.com
です。共通ドメインを推測できないシナリオの場合は、GITO Cookieを設定することは意味がありません。あるデータ・センターが他のデータ・センターの最新ユーザー・セッションを認識していないこともあるためです。この結果として、そのデータ・センターは古いセッション・データに基づいてセッション・アイドル・タイムアウトを計算し、他にアクティブなセッションがどこかに存在しているとしても、ユーザーの再認証が必要になる可能性があります。
ノート:
SessionContinuationOnSyncFailure
プロパティが設定されているときは、同様の問題がサーバー・フェイルオーバー時に発生します。期待される動作は、OAM_ID Cookieの内容からセッションを取り出すことです。実際の非アクティブ・タイムアウト値をGITO Cookieから取り出すことが不可能であるため、再認証が発生します。
WebゲートおよびOAMサーバーの共通Cookieドメインがないときは、アイドル・タイムアウトの問題に対処するために、構成を次のとおりに変更してください。
-
MDCGitoCookieDomainプロパティを入力プロパティ・ファイルから削除した後に、WLSTの
enableMultiDataCentreMode
コマンドを実行します。 -
認可中はWebゲートCookieをリフレッシュできないため、WebゲートCookieの有効期間の値をセッション・アイドル・タイムアウト・プロパティの値よりも低く設定します。セッション・アイドル・タイムアウトの値が30分で、WebゲートCookieの有効期間の値が15分とすると、認証を行うデータ・センターでは15分ごとにセッションがリフレッシュされます。
17.7.2 DCCおよびOAM_GITOに関する事項
OAM_GITO Cookieは、DCCを使用する場合は適用されません。
理由は次のとおりです。
-
#MDCGitoCookieDomain=設定をコメント・アウトする必要があります。
-
SessionMustBeAnchoredToDataCenterServicingUserパラメータを
false
に設定する必要があります。 -
WebゲートCookieの有効期限の間隔の詳細は、「共通ドメインの使用」を参照してください。
。
17.7.3 外部ロード・バランサの使用
ノート:
プライマリとセカンダリのOAMサーバー間のフェイルオーバーは、11g SDK APIの現行リリースでサポートされています。