安裝 Apigee 單一登入 (SSO) 以達成高可用性

在以下兩種情況下,您會安裝多個 Apigee SSO 執行個體,以確保高可用性:

  • 在單一資料中心環境中,安裝兩個 Apigee SSO 執行個體,建立高可用性環境,也就是說,如果其中一個 SSO 模組故障,系統仍可繼續運作。
  • 在具有兩個資料中心的環境中,請在兩個資料中心都安裝 Apigee SSO,這樣一來,如果其中一個資料中心的 Apigee SSO 停止運作,系統仍可繼續運作。

在同一個資料中心安裝兩個 Apigee SSO 模組

您可以在單一資料中心的不同 apigee-openldap 節點上部署兩個 Apigee SSO 執行個體,以支援高可用性。此時:

  • 兩個 Apigee SSO 執行個體都必須連線至相同的 Postgres 伺服器。Apigee 建議您為 Apigee SSO 使用專屬的 Postgres 伺服器,而非與 Edge 一起安裝的 Postgres 伺服器。兩個執行個體必須共用 apigee_dex 資料庫,才能保存狀態。
  • 無須手動發布 JWT 金鑰:與舊版 UAA 元件不同,現代化的 Apigee SSO 會在共用的 PostgreSQL 資料庫中,以原生方式儲存及同步處理 JSON Web 金鑰集 (JWKS) 和 OAuth2 狀態。您不需要手動將簽署金鑰複製到各個節點。
  • 內部 OpenLDAP 的憑證同步:如果您使用預設的內部 OpenLDAP,Apigee SSO 會使用專屬的唯讀服務帳戶 (cn=sso-reader)。如果是高可用性 (節點 2),管理員必須在兩個節點的 /opt/silent.conf 中設定相同的 SSO_READER_PW,或將 /opt/apigee/data/apigee-openldap/sso-reader.key 從節點 1 複製到節點 2,然後在節點 2 執行 setup-sso。

    如要手動複製金鑰檔案,請在節點 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 執行個體前方設置負載平衡器:
    • 設定負載平衡器,對單一登入 (SSO) 執行 TCP 或 HTTP 健康狀態檢查。如果是 HTTP,請加入 /healthz:
      http_or_https://edge_sso_IP_DNS:9099/healthz

      指定 Apigee SSO 設定的通訊埠。預設為通訊埠 9099。

    • 部分負載平衡器設定取決於您是否在 Apigee SSO 上啟用 HTTPS。詳情請參閱以下各節。

透過 HTTP 存取 Apigee SSO

如果您透過 HTTP 存取 Apigee SSO,請將負載平衡器設定為:

  • 使用 HTTP 模式連線至 Apigee SSO。
  • 監聽與 Apigee SSO 相同的通訊埠。

根據預設,Apigee SSO 會監聽通訊埠 9099 上的 HTTP 要求。您也可以在 /opt/silent.conf 檔案中使用 SSO_PUBLIC_URL_PORT 設定連接埠。如果您使用 SSO_PUBLIC_URL_PORT 變更預設通訊埠,請確認負載平衡器會監聽該通訊埠。

舉例來說,如要將每個 SSO 執行個體的通訊埠設為 9033,請在設定檔中加入以下內容:

SSO_PUBLIC_URL_PORT=9033

接著,您將負載平衡器設定為監聽通訊埠 9033,並將要求轉送至通訊埠 9033 上的單一登入 (SSO) 執行個體。在這個情境中,Apigee SSO 的公開核發者網址為:

http://LB_DNS_NAME:9033

透過 HTTPS 存取 Apigee SSO

您可以使用下列任一模式,透過 HTTPS 設定高可用性。在這兩種情況下,請按照「設定 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 通訊埠)。
  • 將負載平衡器設為使用「HTTP 模式」,連線至後端 Apigee SSO 執行個體。
  • 設定負載平衡器,將要求轉送至本機 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 相同的通訊埠,並將要求轉送至 Apigee SSO 執行個體的安全通訊埠 (例如 9443)。

在多個資料中心安裝 Apigee SSO

在多個資料中心環境中,您可以在每個資料中心安裝 Apigee SSO 執行個體 (透過 apigee-openldap)。一個 SSO 執行個體會處理所有流量。如果該執行個體發生故障,您可以將流量切換至第二個 SSO 執行個體。

在兩個資料中心安裝 Apigee SSO 前,您需要:

  • 主要 Postgres 伺服器的 IP 位址或網域名稱。

    在多資料中心環境中,您通常會在每個資料中心安裝一個 Postgres 伺服器,並將其設定為主要/待命複寫模式。在本範例中,資料中心 1 包含主要 Postgres 伺服器,資料中心 2 則包含待命伺服器。詳情請參閱「為 Postgres 設定主要/待命複寫」。

  • 指向單一 SSO 執行個體的單一 DNS 項目。舉例來說,您會建立下列形式的 DNS 項目,指向資料中心 1 中的 SSO 執行個體:
    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 項目,做為可公開存取的簽發者網址。由於 setup-sso 指令碼會自動建構簽發者網址並附加連接埠,因此您必須直接在 /opt/apigee/customer/application/openldap.properties 中設定確切的網址,而不是 /opt/silent.conf,以免系統附加不需要的連接埠:

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

處理單一登入 (SSO) 容錯移轉

如果資料中心 1 的 Apigee SSO 執行個體 (或其 Postgres 主要執行個體) 故障,您可以切換至資料中心 2 的 SSO 執行個體,而不會遺失有效的 OAuth 工作階段:

  1. 如「處理 PostgreSQL 資料庫容錯移轉」一文所述,將資料中心 2 中的 Postgres 待命伺服器轉換為主要伺服器。
  2. 更新 DNS 記錄,將 my-sso.domain.com 指向資料中心 2 的單一登入 (SSO) 執行個體:
    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