高可用性を実現するには、Apigee SSO の複数のインスタンスをインストールします。次の 2 つのシナリオがあります。
- データセンターが 1 つのみの環境。2 つの Apigee SSO インスタンスをインストールして、高可用性環境を構築します。1 つの Apigee SSO モジュールが停止しても、残りのシステムは処理を継続できます。
- データセンターが 2 つある環境。両方のデータセンターに Apigee SSO をインストールします。片方の Apigee SSO モジュールが停止しても、システムは処理を継続できます。
同じデータセンターに 2 つの Apigee SSO モジュールをインストールする
高可用性を実現するため、1 つのデータセンター内の異なるノードに 2 つの Apigee SSO インスタンスをデプロイします。このシナリオの場合:
- Apigee SSO の両方のインスタンスが同じ Postgres サーバーに接続している。Apigee では、Apigee SSO に専用の Postgres サーバーを使用し、Edge でインストールした Postgres サーバーを使用しないことをおすすめします。
- Apigee SSO の両方のインスタンスでは、構成ファイルの
SSO_JWT_SIGNINIG_KEY_FILEPATH
プロパティとSSO_JWT_VERIFICATION_KEY_FILEPATH
プロパティで指定されたものと同じ JWT キーと証明書を使用する必要がある。これらのプロパティの設定の詳細については、Apigee SSO のインストールと構成をご覧ください。 - Apigee SSO の 2 つのインスタンスの前面にロードバランサを配置する。
- ロードバランサは、アプリケーションで生成された Cookie 固定をサポートする必要があります。セッション Cookie の名前は
JSESSIONID
にする必要があります。 - Apigee SSO で TCP または HTTP のヘルスチェックを実行するようにロードバランサを構成します。TCP の場合は、Apigee SSO の URL を使用します。
http_or_https://edge_sso_IP_DNS:9099
Apigee SSO によって設定されたポートを指定します。デフォルトは 9099 です。
HTTP の場合、
/healthz
を含めます。http_or_https://edge_sso_IP_DNS:9099/healthz
- ロードバランサの一部の設定は、Apigee SSO で HTTPS が有効かどうかによって異なります。詳細については、以降のセクションをご覧ください。
- ロードバランサは、アプリケーションで生成された Cookie 固定をサポートする必要があります。セッション Cookie の名前は
HTTP 経由で Apigee SSO にアクセスする
HTTP 経由で Apigee SSO にアクセスするには、次のようにロードバランサを構成します。
- HTTP モードを使用して Apigee SSO に接続する。
Apigee SSO と同じポートでリッスンする。
デフォルトでは、Apigee SSO はポート 9099 で HTTP リクエストをリッスンします。必要に応じて、
SSO_TOMCAT_PORT
を使用して Apigee SSO ポートを設定できます。SSO_TOMCAT_PORT
を使用して Apigee SSO ポートをデフォルトから変更した場合は、ロードバランサがそのポートでリッスンすることを確認します。
たとえば、それぞれの Apigee SSO インスタンスで構成ファイルに次の行を追加し、ポートを 9033 に設定します。
SSO_TOMCAT_PORT=9033
次に、ポート 9033 でリッスンし、リクエストを Edge SSO インスタンスのポート 9033 に転送するようにロードバランサを構成します。このシナリオの Apigee SSO の公開 URL は次のとおりです。
http://LB_DNS_NAME:9033
HTTPS 経由で Apigee SSO にアクセスする
HTTPS を使用するように Apigee SSO インスタンスを構成できます。このシナリオでは、HTTPS アクセス用の Apigee SSO の構成の手順に従います。HTTPS を有効にするプロセスの一環として、次に示すように Apigee SSO 構成ファイルで SSO_TOMCAT_PROFILE
を設定します。
SSO_TOMCAT_PROFILE=SSL_TERMINATION
次の行を設定して、Apigee SSO が使用するポートを HTTPS アクセス用に設定することもできます。
SSO_TOMCAT_PORT=9443
次にロードバランサを構成します。
- HTTP モードではなく、TCP モードを使用して Apigee SSO に接続します。
SSO_TOMCAT_PORT
で定義したように、Apigee SSO と同じポートでリッスンします。
次に、リクエストを Apigee SSO インスタンスのポート 9433 に転送するように、ロードバランサを構成します。このシナリオの Apigee SSO の公開 URL は次のとおりです。
https://LB_DNS_NAME:9443
複数のデータセンターに Apigee SSO をインストールする
複数のデータセンターが存在する環境では、各データセンターに Apigee SSO インスタンスをインストールします。1 つの Apigee SSO インスタンスですべてのトラフィックを処理します。その Apigee SSO インスタンスが停止したときに、2 番目の Apigee SSO インスタンスに切り換えることができます。
2 つのデータセンターに Apigee SSO をインストールする前に、次のものを用意する必要があります。
マスター Postgres サーバーの IP アドレスまたはドメイン名。
複数のデータセンターが存在する環境では、通常、1 つのデータセンターに 1 台の Postgres サーバーをインストールし、マスター / スタンバイのレプリケーション モードを構成します。この例の場合、データセンター 1 にマスター Postgres サーバーがあり、データセンター 2 にスタンバイ Postgres サーバーがあります。詳細については、Postgres のマスター / スタンバイ レプリケーションを設定するをご覧ください。
- 1 つの Apigee SSO インスタンスを参照する DNS エントリ。たとえば、以下の形式で、データセンター 1 の Apigee SSO インスタンスを参照する DNS エントリを作成します。
my-sso.domain.com => apigee-sso-dc1-ip-or-lb
各データセンターに Apigee SSO をインストールするときに、データセンター 1 のマスター Postgres を使用するように両方を構成します。
## Postgres configuration PG_HOST=IP_or_DNS_of_PG_Master_in_DC1 PG_PORT=5432
また、この DNS エントリを一般公開の URL として使用するように両方のデータセンターを構成します。
# Externally accessible URL of Apigee SSO SSO_PUBLIC_URL_HOSTNAME=my-sso.domain.com # Default port is 9099. SSO_PUBLIC_URL_PORT=9099
データセンター 1 の Apigee SSO が停止したときに、データセンター 2 の Apigee SSO インスタンスに切り換えることができます。
- PostgresSQL データベースのフェイルオーバーの処理の説明に従って、データセンター 2 の Postgres スタンバイ サーバーをマスターに変換します。
my-sso.domain.com
がデータセンター 2 の Apigee SSO インスタンスを参照するように、DNS レコードを更新します。my-sso.domain.com => apigee-sso-dc2-ip-or-lb
- データセンター 2 の新しいマスター Postgres サーバーを参照するように、データセンター 2 の Apigee SSO の構成ファイルを更新します。
## Postgres configuration PG_HOST=IP_or_DNS_of_PG_Master_in_DC2
- データセンター 2 の Apigee SSO を再起動して、構成を更新します。
/opt/apigee/apigee-service/bin/apigee-service apigee-sso restart