7.3. 特定的健康检查
7.3.1. 红帽构建的 Keycloak 负载均衡器和站点
通过负载均衡器和主和备份站点验证红帽构建的 Keycloak 应用程序的健康状况。这样可确保红帽构建的 Keycloak 可访问,且负载平衡机制在不同地理位置或网络位置正常工作。
此命令返回红帽构建的 Keycloak 应用程序连接到其配置数据库的健康状态,从而确认数据库连接的可靠性。此命令仅适用于管理端口,而不可用于外部 URL。在 Kubernetes 设置中,会定期检查子状态 健康/就绪状态
以使 Pod 就绪。
curl -s https://keycloak:managementport/health
此命令验证负载均衡器的 lb-check
端点,并确保红帽构建的 Keycloak 应用程序集群已启动并在运行。
curl -s https://keycloak-load-balancer-url/lb-check
这些命令将在多站点设置中返回红帽构建的 Keycloak 的 Site A 和 Site B 的运行状态。
curl -s https://keycloak_site_a_url/lb-check curl -s https://keycloak_site_b_url/lb-check
7.3.2. Data Grid Cache 健康状况
检查外部 Data Grid 集群中默认缓存管理器和单个缓存的健康状态。此检查对于红帽构建的 Keycloak 性能和可靠性至关重要,因为 Data Grid 通常用于红帽构建的 Keycloak 部署中的分布式缓存和会话集群。
此命令返回 Data Grid 缓存管理器的整体健康状况,这很有用,因为 Admin 用户不需要提供用户凭证来获取健康状态。
curl -s https://infinispan_rest_url/rest/v2/cache-managers/default/health/status
与前面的健康检查不同,以下健康检查需要 Admin 用户提供 Data Grid 用户凭据,作为请求的一部分,以便了解外部 Data Grid 集群缓存的整体健康状况。
curl -u <infinispan_user>:<infinispan_pwd> -s https://infinispan_rest_url/rest/v2/cache-managers/default/health \ | jq 'if .cluster_health.health_status == "HEALTHY" and (all(.cache_health[].status; . == "HEALTHY")) then "HEALTHY" else "UNHEALTHY" end'
jq
过滤器是根据单个缓存健康状况计算整体健康状况的一个方便。您还可以选择在没有 jq
过滤器的情况下运行上述命令来查看完整详情。
7.3.3. Data Grid 集群分发
评估 Data Grid 集群的分布健康状况,确保集群节点正确分布数据。此步骤对于缓存层的可扩展性和容错至关重要。
您可以修改 expectedCount 3
参数,以匹配集群中的节点总数,并验证它们是否正常运行。
curl <infinispan_user>:<infinispan_pwd> -s https://infinispan_rest_url/rest/v2/cluster\?action\=distribution \ | jq --argjson expectedCount 3 'if map(select(.node_addresses | length > 0)) | length == $expectedCount then "HEALTHY" else "UNHEALTHY" end'
7.3.4. 总体,Data Grid 系统健康状况
使用 oc
CLI 工具查询 Data Grid 集群的健康状况,以及指定命名空间中的红帽构建的 Keycloak 服务。此全面的检查可确保红帽构建的 Keycloak 部署的所有组件都正常运行,并在 Kubernetes 环境中正确配置。
oc get infinispan -n <NAMESPACE> -o json \ | jq '.items[].status.conditions' \ | jq 'map({(.type): .status})' \ | jq 'reduce .[] as $item ([]; . + [keys[] | select($item[.] != "True")]) | if length == 0 then "HEALTHY" else "UNHEALTHY: " + (join(", ")) end'
7.3.5. Red Hat build of Keycloak 在 Kubernetes 中就绪
具体来说,检查 Kubernetes 中红帽构建的 Keycloak 部署的就绪度和滚动更新条件,确保红帽构建的 Keycloak 实例完全运行,且不会执行可能会影响可用性的更新。
oc wait --for=condition=Ready --timeout=10s keycloaks.k8s.keycloak.org/keycloak -n <NAMESPACE> oc wait --for=condition=RollingUpdate=False --timeout=10s keycloaks.k8s.keycloak.org/keycloak -n <NAMESPACE>