5.2. 流程
- 使用 概念来确定部署的大小,以调整 CPU 和内存资源 大小 章节。
- 安装红帽构建的 Keycloak Operator,如 红帽构建的 Keycloak Operator 安装 章节中所述。
- 如在 多个可用区一章中的 Deploy AWS Aurora 所述,部署 Aurora AWS。
- 构建自定义红帽 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: 30 1 poolInitialSize: 30 poolMaxSize: 30 usernameSecret: name: keycloak-db-secret key: username passwordSecret: name: keycloak-db-secret key: password image: <KEYCLOAK_IMAGE_HERE> 2 startOptimized: false 3 features: enabled: - multi-site 4 transaction: xaEnabled: false 5 additionalOptions: - name: http-max-queued-requests value: "1000" - name: log-console-output value: json - name: metrics-enabled 6 value: 'true' - name: http-pool-max-threads 7 value: "66" - name: db-driver value: software.amazon.jdbc.Driver http: tlsSecret: keycloak-tls-secret instances: 3
- 1
- 数据库连接池 initial、max 和 min 大小应当相同,以允许数据库的声明缓存。调整这个数字以满足您的系统需求。由于红帽构建的 Keycloak 嵌入式缓存,大多数请求都不涉及数据库,因此这个更改可以每秒为几百个请求服务器。详情请参阅数据库连接池的概念 章节。
- 2 3
- 指定自定义红帽构建的 Keycloak 镜像的 URL。如果您的镜像经过优化,请将
startOptimized
标志设置为true
。 - 4
- 为多站点支持启用其他功能,如 loadbalancer probe
/lb-check
。 - 5
- 6
- 要能够分析负载下的系统,请启用指标端点。设置的缺点是,指标将在 Keycloak 端点的外部红帽构建中提供,因此您必须添加一个过滤器,以便外部无法使用端点。使用红帽构建的 Keycloak 之前的反向代理来过滤这些 URL。
- 7
- 内部 JGroup 线程池的默认设置最大为 200 个线程。StatefulSet 中所有红帽构建的 Keycloak 线程数量不应超过 JGroup 线程的数量,以避免 JGroup 线程池耗尽,这可能会使红帽构建 Keycloak 请求处理。您可以考虑进一步限制红帽构建的 Keycloak 线程数量,因为达到请求的 CPU 限制后,Kubernetes 将会导致多个并发线程节流。详情请参阅配置线程池 的概念。