2.13. 使用 Operator 在多个可用区部署红帽构建的 Keycloak
使用红帽构建的 Keycloak Operator 作为构建块,部署红帽构建的 Keycloak 以实现高可用性。
本章论述了 OpenShift 的 Keycloak 配置的高级红帽构建,这些配置已测试,并将恢复可用性区域失败。
这些说明 适用于单集群部署 一章中介绍的设置。将其与构建块 单集群部署一章中介绍的其他构建块 一起使用。
2.13.1. 先决条件 复制链接链接已复制到粘贴板!
- 在多个可用区部署的 OpenShift 集群,为每个配置了一个 worker-pool。
- 了解使用 红帽构建的 Keycloak Operator 进行红帽构建的 Keycloak 部署的基本红帽构建。
- 使用在 多个可用区中的 Deploying AWS Aurora 部署的 AWS Aurora 数据库。
2.13.2. 流程 复制链接链接已复制到粘贴板!
- 确定使用 概念调整 CPU 和内存资源章节的部署大小。
- 按照 Red Hat build of Keycloak Operator 安装中的内容 安装 Red Hat build of Keycloak Operator。
- 请注意,以下配置文件包含与 多个可用区部署 AWS Aurora 中连接到 Aurora数据库相关的选项
- 构建自定义红帽构建的 Keycloak 镜像,准备与 Amazon Aurora PostgreSQL 数据库一起使用。
使用在第一步中计算的资源请求和限值,使用以下值部署红帽 Keycloak CR:
apiVersion: k8s.keycloak.org/v2alpha1 kind: Keycloak metadata: labels: app: keycloak name: keycloak namespace: keycloak spec: hostname: hostname: <KEYCLOAK_URL_HERE> resources: requests: cpu: "2" memory: "1250M" limits: cpu: "6" memory: "2250M" db: vendor: postgres url: jdbc:aws-wrapper:postgresql://<AWS_AURORA_URL_HERE>:5432/keycloak poolMinSize: 301 poolInitialSize: 30 poolMaxSize: 30 usernameSecret: name: keycloak-db-secret key: username passwordSecret: name: keycloak-db-secret key: password image: <KEYCLOAK_IMAGE_HERE>2 startOptimized: false3 additionalOptions: - name: log-console-output value: json - name: metrics-enabled4 value: 'true' - name: event-metrics-user-enabled value: 'true' - name: db-driver value: software.amazon.jdbc.Driver http: tlsSecret: keycloak-tls-secret instances: 3
2.13.3. 验证部署 复制链接链接已复制到粘贴板!
确认红帽构建的 Keycloak 部署已就绪。
oc wait --for=condition=Ready keycloaks.k8s.keycloak.org/keycloak
oc wait --for=condition=RollingUpdate=False keycloaks.k8s.keycloak.org/keycloak
2.13.4. 可选: Load shedding 复制链接链接已复制到粘贴板!
要启用负载均衡,请限制排队的请求数。
使用最大排队的 http 请求加载她
spec:
additionalOptions:
- name: http-max-queued-requests
value: "1000"
所有超过的请求都使用 HTTP 503 提供。
您可以考虑进一步限制 http-pool-max-threads 的值,因为在达到请求的 CPU 限制后,OpenShift 会导致 OpenShift 节流。
有关详细信息 ,请参阅有关配置线程池 的概念 一章。
2.13.5. 可选:禁用粘性会话 复制链接链接已复制到粘贴板!
当在 OpenShift 上运行以及由 Red Hat build of Keycloak Operator 提供的默认 passthrough Ingress 设置时,HAProxy 所做的负载均衡会根据源的 IP 地址使用粘性会话来实现。在运行负载测试时,或者在 HAProxy 前面运行反向代理时,您可能需要禁用此设置以避免在单个红帽构建的 Keycloak Pod 上接收所有请求。
在红帽构建的 Keycloak 自定义资源的 spec 下添加以下补充配置,以禁用粘性会话。
spec:
ingress:
enabled: true
annotations:
# When running load tests, disable sticky sessions on the OpenShift HAProxy router
# to avoid receiving all requests on a single Red Hat build of Keycloak Pod.
haproxy.router.openshift.io/balance: roundrobin
haproxy.router.openshift.io/disable_cookies: 'true'