高可用性のために Apigee SSO をインストールする

次の 2 つのシナリオで、高可用性のために Apigee SSO の複数のインスタンスをインストールします。

  • 単一のデータセンター環境で、2 つの Apigee SSO インスタンスをインストールして高 可用性環境を作成します。つまり、SSO モジュールの 1 つがダウンしてもシステムは動作し続けます。
  • 2 つのデータセンターがある環境では、両方のデータセンターに Apigee SSO をインストールします。これにより、 システムは 1 つのデータセンターの Apigee SSO がダウンしても動作し続けます。

同じデータセンターに 2 つの Apigee SSO モジュールをインストールする

高可用性をサポートするために、単一のデータセンター内の異なる apigee-openldap ノードに Apigee SSO の 2 つのインスタンスをデプロイします。次のようになります。

  • Apigee SSO の両方のインスタンスが同じ Postgres サーバーに接続されている必要があります。Apigee SSO には専用の Postgres サーバーを使用し、Edge とともにインストールした Postgres サーバーは使用しないことをおすすめします。両方のインスタンスで、状態の永続化に apigee_dex データベースを共有する必要があります。
  • JWT キーを手動で配布する必要はありません。 最新の Apigee SSO は、従来の UAA コンポーネントとは異なり、JSON Web Key Set(JWKS)と OAuth2 の状態を共有 PostgreSQL データベースにネイティブに保存して同期します。ノード間で署名鍵を手動でコピーする必要はありません。
  • 内部 OpenLDAP の認証情報の同期: デフォルトの内部 OpenLDAP を使用している場合、Apigee SSO は専用の読み取り専用サービス アカウント(cn=sso-reader)を使用します。HA(ノード 2)の場合、管理者は両方のノードの /opt/silent.conf に同じ SSO_READER_PW を設定するか、ノード 2 で setup-sso を実行する前にノード 1 からノード 2 に /opt/apigee/data/apigee-openldap/sso-reader.key をコピーする必要があります。

    鍵ファイルをコピーするには、ノード 2 で次のコマンドを実行します。

    scp node1_ip:/opt/apigee/data/apigee-openldap/sso-reader.key /opt/apigee/data/apigee-openldap/sso-reader.key
    chown apigee:apigee /opt/apigee/data/apigee-openldap/sso-reader.key
    chmod 600 /opt/apigee/data/apigee-openldap/sso-reader.key
  • Apigee SSO の 2 つのインスタンスの前にロードバランサが必要です。
    • SSO で TCP または HTTP ヘルスチェックを実行するようにロードバランサを構成します。HTTP の場合は、/healthz を含めます。
      http_or_https://edge_sso_IP_DNS:9099/healthz

      Apigee SSO で設定したポートを指定します。デフォルトはポート 9099 です。

    • ロードバランサの設定の一部は、Apigee SSO で HTTPS を有効にしたかどうかによって異なります。詳細については、以下のセクションをご覧ください。

Apigee SSO への HTTP アクセス

Apigee SSO への HTTP アクセスを使用している場合は、次のようにロードバランサを構成します。

  • HTTP モードを使用して Apigee SSO に接続します。
  • Apigee SSO と同じポートでリッスンします。

デフォルトでは、Apigee SSO はポート 9099 で HTTP リクエストをリッスンします。必要に応じて、 SSO_PUBLIC_URL_PORT を /opt/silent.conf ファイルで使用してポートを設定できます。SSO_PUBLIC_URL_PORT を使用してデフォルトからポートを変更した場合は、ロードバランサがその ポートでリッスンしていることを確認してください。

たとえば、各 SSO インスタンスで、 構成ファイルに次のように追加してポートを 9033 に設定します。

SSO_PUBLIC_URL_PORT=9033

次に、ポート 9033 でリッスンし、ポート 9033 の SSO インスタンスにリクエストを転送するようにロードバランサを構成します。このシナリオでの Apigee SSO の公開発行者 URL は次のようになります。

http://LB_DNS_NAME:9033

Apigee SSO への HTTPS アクセス

次の 2 つのモードのいずれかを使用して、HTTPS で HA を構成できます。どちらのシナリオでも、Apigee SSO への HTTPS アクセスを構成するの手順に沿って設定します。

モード 1: ロードバランサが TLS を終端する(SSL_PROXY)

ロードバランサが TLS 接続を終端する場合は、プレーン HTTP トラフィックを Apigee SSO インスタンスに転送する必要があります。

  • /opt/silent.conf ファイルで SSO_PUBLIC_URL_SCHEME=https と SSO_PUBLIC_URL_PORT=443(またはロードバランサのパブリック HTTPS ポート)を設定します。
  • バックエンドの Apigee SSO インスタンスに接続するためにHTTP モード を使用するようにロードバランサを構成します。
  • ローカル HTTP バインドポート(デフォルト: 9099)の Apigee SSO インスタンスにリクエストを転送するようにロードバランサを構成します。

モード 2: Apigee SSO が TLS を終端する(SSL_TERMINATION)

Apigee SSO インスタンスで TLS 接続を直接終端する場合は、ロードバランサで暗号化されたトラフィックをインスタンスに渡す必要があります。

  • /opt/silent.conf ファイルで SSO_PUBLIC_URL_SCHEME=https と SSO_PUBLIC_URL_PORT=9443(または選択した安全なポート)を設定します。
  • バックエンドに接続するためにTCP モード (HTTP モードではない)を使用するようにロードバランサを構成します。これにより、Apigee SSO で TLS を終端できます。
  • Apigee SSO と同じポートでリッスンし、安全なポート(9443 など)の Apigee SSO インスタンスにリクエストを転送するようにロードバランサを構成します。

複数のデータセンターに Apigee SSO をインストールする

複数のデータセンター環境では、各データセンターに Apigee SSO インスタンス(apigee-openldap 経由)をインストールします。 1 つの SSO インスタンスがすべてのトラフィックを処理します。そのインスタンスがダウンした場合は、トラフィックを 2 番目の SSO インスタンスに切り替えることができます。

2 つのデータセンターに Apigee SSO をインストールする前に、次のものが必要です。

  • マスター Postgres サーバーの IP アドレスまたはドメイン名。

    複数のデータセンター環境では、通常、各データ センターに 1 つの Postgres サーバーをインストールし、マスター / スタンバイ レプリケーション モードで構成します。この例では、データ センター 1 にマスター Postgres サーバーが含まれ、データセンター 2 にスタンバイ が含まれています。詳細については、Postgres のプライマリ / スタンバイ レプリケーションを設定するをご覧ください。

  • 1 つの SSO インスタンスを指す単一の DNS エントリ。たとえば、データセンター 1 の SSO インスタンスを指す次の形式の DNS エントリを作成します。
    my-sso.domain.com => apigee-sso-dc1-ip-or-lb
  • 同期された OpenLDAP リーダーの認証情報。内部 OpenLDAP を使用している場合は、設定中にクラスタの同期が解除されないように、両方のデータセンターでまったく同じ SSO_READER_PW を使用するか、同じ sso-reader.key ファイルを共有する必要があります。

各データセンターで Apigee SSO を構成するときに、両方の構成でデータセンター 1 の Postgres マスター を指定します。

## Postgres configuration
PG_HOST=IP_or_DNS_of_PG_Master_in_DC1
PG_PORT=5432

また、共有 DNS エントリを一般公開されている発行者 URL として使用するように両方のデータセンターを構成する必要があります。setup-sso スクリプトは発行者 URL を自動的に構築してポートを追加するため、ポートが不要な場合は、/opt/silent.conf ではなく /opt/apigee/customer/application/openldap.properties に正確な URL を直接設定して、ポートが追加されないようにする必要があります。

# Externally accessible URL of the Apigee SSO
etc_sso_config_issuer_url=https://my-sso.domain.com

SSO フェイルオーバーの処理

データセンター 1 の Apigee SSO インスタンス(またはその Postgres マスター)がダウンした場合は、アクティブな OAuth セッションを失うことなく、データ センター 2 の SSO インスタンスに切り替えることができます。

  1. PostgreSQL データベースのフェイルオーバーの処理の説明に従って、データセンター 2 の Postgres スタンバイ サーバーをマスターに変換します。
  2. データセンター 2 の SSO インスタンスを指すように DNS レコード my-sso.domain.com を更新します。
    my-sso.domain.com => apigee-sso-dc2-ip-or-lb
  3. データセンター 2 の Apigee SSO の /opt/silent.conf ファイルを更新して、データセンター 2 の新しい Postgres マスター サーバーを指すようにします:
    ## Postgres configuration
    PG_HOST=IP_or_DNS_of_PG_Master_in_DC2
  4. データセンター 2 の Apigee SSO を再構成して再起動し、接続をネイティブに更新します。
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap setup-sso -f /opt/silent.conf