在以下两种情况下,您需要安装多个 Apigee SSO 实例以实现高可用性:
- 在单个数据中心环境中,安装两个 Apigee SSO 实例以创建高可用性环境,这意味着如果其中一个 Apigee SSO 模块发生故障,系统仍会继续运行。
- 在具有两个数据中心的环境中,请在两个数据中心内都安装 Apigee SSO,以便在一个 Apigee SSO 模块发生故障时系统仍能继续运行。
在同一数据中心内安装两个 Apigee SSO 模块
您可以在单个数据中心的不同节点上部署两个 Apigee SSO 实例,以支持高可用性。在这种情况下:
- Apigee SSO 的两个实例都必须连接到同一 Postgres 服务器。Apigee 建议为 Apigee SSO 使用专用 Postgres 服务器,而不是与 Edge 一起安装的 Postgres 服务器。
- Apigee SSO 的两个实例都必须使用配置文件中的
SSO_JWT_SIGNING_KEY_FILEPATH和SSO_JWT_VERIFICATION_KEY_FILEPATH属性指定的相同 JWT 密钥对。如需详细了解如何设置这些属性,请参阅安装和配置 Apigee SSO。 - 您需要在两个 Apigee SSO 实例前面放置一个负载均衡器:
- 负载均衡器必须支持应用生成的 Cookie 粘性,并且会话 Cookie 必须命名为
JSESSIONID。 - 将负载均衡器配置为对 Apigee SSO 执行 TCP 或 HTTP 健康检查。对于 TCP,请使用 Apigee SSO 的网址:
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 必须命名为
对 Apigee SSO 的 HTTP 访问
如果您使用 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,并将请求转发到端口 9033 上的 Edge SSO 实例。在此场景中,Apigee SSO 的公开网址为:
http://LB_DNS_NAME:9033
对 Apigee SSO 的 HTTPS 访问
您可以将 Apigee SSO 实例配置为使用 HTTPS 进行安全通信。在这种情况下,请按照为 HTTPS 访问配置 Apigee SSO 中的步骤操作。在启用 HTTPS 的过程中,请在 Apigee SSO 配置文件中设置 SSO_TOMCAT_PROFILE,如下所示:
SSO_TOMCAT_PROFILE=SSL_TERMINATION
(可选)设置 Apigee SSO 用于 HTTPS 访问的端口:
SSO_TOMCAT_PORT=9443
为确保负载均衡器与 Apigee SSO 之间能够正常通信,请按如下方式配置负载均衡器:
- 使用 TCP 模式(而非 HTTP 模式)连接到 Apigee SSO。这样,SSL 连接就可以通过,而不会在负载均衡器处终止。
- 监听 Apigee SSO 所用的同一端口(由
SSO_TOMCAT_PORT定义,例如 9443)。 - 将请求转发到同一端口 (9443) 上的 Apigee SSO 实例。
确保公开网址反映了负载均衡器的 DNS 和端口设置。在此场景中,Apigee SSO 的公开网址为:
https://LB_DNS_NAME:9443
在多个数据中心安装 Apigee SSO
在多数据中心环境中,您需要在每个数据中心安装一个 Apigee SSO 实例。然后,一个 Apigee SSO 实例会处理所有流量。如果该 Apigee SSO 实例发生故障,您可以切换到第二个 Apigee SSO 实例。
在两个数据中心安装 Apigee SSO 之前,您需要满足以下条件:
主 Postgres 服务器的 IP 地址或域名。
在多数据中心环境中,您通常会在每个数据中心安装一个 Postgres 服务器,并将其配置为“主-备”复制模式。在此示例中,数据中心 1 包含主 Postgres 服务器,数据中心 2 包含备用服务器。如需了解详情,请参阅为 Postgres 设置主备复制。
- 指向一个 Apigee SSO 实例的单个 DNS 条目。例如,您可以使用以下格式创建指向数据中心 1 中的 Apigee SSO 实例的 DNS 条目:
my-sso.domain.com => apigee-sso-dc1-ip-or-lb
- Apigee SSO 的两个实例都必须使用配置文件中的
SSO_JWT_SIGNING_KEY_FILEPATH和SSO_JWT_VERIFICATION_KEY_FILEPATH属性指定的相同 JWT 密钥对。如需详细了解如何设置这些属性,请参阅安装和配置 Apigee SSO。
在每个数据中心安装 Apigee SSO 时,您需要将两者都配置为使用数据中心 1 中的 Postgres Master:
## Postgres configuration
PG_HOST=IP_or_DNS_of_PG_Master_in_DC1
PG_PORT=5432您还需要将两个数据中心配置为使用 DNS 条目作为可公开访问的网址:
# 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 实例:
- 按照处理 PostgreSQL 数据库故障切换中的说明,将数据中心 2 中的 Postgres 备用服务器转换为主服务器。
- 更新 DNS 记录,以将
my-sso.domain.com指向数据中心 2 中的 Apigee SSO 实例:my-sso.domain.com => apigee-sso-dc2-ip-or-lb
- 更新数据中心 2 中 Apigee SSO 的配置文件,以指向数据中心 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-sso restart