在以下兩種情況下,您會安裝多個 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。詳情請參閱以下各節。
- 設定負載平衡器,對單一登入 (SSO) 執行 TCP 或 HTTP 健康狀態檢查。如果是 HTTP,請加入
透過 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 工作階段:
- 如「處理 PostgreSQL 資料庫容錯移轉」一文所述,將資料中心 2 中的 Postgres 待命伺服器轉換為主要伺服器。
- 更新 DNS 記錄,將
my-sso.domain.com指向資料中心 2 的單一登入 (SSO) 執行個體:my-sso.domain.com => apigee-sso-dc2-ip-or-lb
- 更新資料中心 2 中 Apigee SSO 的
/opt/silent.conf檔案,指向資料中心 2 的新 Postgres 主要伺服器:## Postgres configuration PG_HOST=IP_or_DNS_of_PG_Master_in_DC2 - 在資料中心 2 中重新設定並重新啟動 Apigee SSO,以原生方式更新連線:
/opt/apigee/apigee-service/bin/apigee-service apigee-openldap setup-sso -f /opt/silent.conf