10.3. 拓扑了解数据发布
配置红帽构建的 Keycloak 以了解您的网络拓扑,增加数据在出现硬件故障时的可用性,因为 Infinispan 能够确保数据被正确分布。例如,如果为缓存配置了 num_owners=2,它将确保两个所有者在可能的情况下不会存储在同一节点上。
默认情况下,用户和客户端会话安全存储在数据库中,它们不受这些设置的影响。剩余的分布式缓存会受到此配置的影响。
以下拓扑信息可用于配置:
- 站点名称
如果您的红帽构建的 Keycloak 集群在不同的数据中心之间部署,请使用此选项来确保数据副本存储在不同的数据中心。它可防止数据中心离线或失败时数据丢失。
使用 SPI 选项
spi-cache-embedded-default-site-name(或环境变量KC_SPI_CACHE_EMBEDDED__DEFAULT__SITE_NAME)。值本身并不重要,但每个数据中心都必须具有唯一的值。例如
:--spi-cache-embedded-default-site-name=site-1- 机架名称
如果您的红帽构建的 Keycloak 集群在数据中心的不同机架中运行,请设置这个选项以确保数据副本存储在不同的物理机架中。它可防止在机架突然断开连接或失败时数据丢失。
使用 SPI 选项
spi-cache-embedded-default-rack-name(或环境变量KC_SPI_CACHE_EMBEDDED__DEFAULT__RACK_NAME)。值本身并不重要,但每个机架都必须具有唯一的值。例如
:--spi-cache-embedded-default-rack-name=rack-1- 机器名称
如果您有多个红帽构建的 Keycloak 实例在同一物理机上运行(例如,使用虚拟机或容器),请使用此选项来确保数据副本存储在不同的物理机器中。它可防止因为物理机失败而丢失数据。
使用 SPI 选项
spi-cache-embedded-default-machine-name(或环境变量KC_SPI_CACHE_EMBEDDED__DEFAULT__MACHINE_NAME)。值本身并不重要,但每台机器都必须具有唯一的值。例如
:--spi-cache-embedded-default-machine-name=machine-1注意Red Hat build of Keycloak Operator 会自动根据 Kubernetes 节点配置机器名称。它确保如果将多个 pod 调度到同一节点上,则数据副本仍可以复制到不同的节点上。我们建议设置反关联性规则和/或拓扑分布约束,以防止将多个 Pod 调度到同一节点上,从而进一步降低一个节点故障的风险,从而导致数据丢失。