10.2. 复制和故障转移
有如 会话
、身份验证会话
、离线会话
、login
Failure 和一些其他缓存(更多详情 第 10.1 节 “驱除和过期” )等缓存,在使用集群时被配置为分布式缓存。条目不会复制到每一个节点,而是选择一个或多个节点作为该数据的所有者。如果节点不是特定缓存条目的所有者,它会查询集群来获取它。这意味着,故障转移是什么,如果所有拥有数据的节点停机,则数据会永久丢失。默认情况下,Red Hat Single Sign-On 仅指定一个数据所有者。因此,如果一个节点停机,数据就会丢失。这通常意味着用户将被注销,并且必须再次登录。
您可以通过更改 distributed-cache
声明中的 owners
属性来更改复制数据的节点数量。
owners
<subsystem xmlns="urn:jboss:domain:infinispan:12.0"> <cache-container name="keycloak"> <distributed-cache name="sessions" owners="2"/> ...
在这里,我们更改了它,因此至少两个节点都会复制一个特定的用户登录会话。
提示
建议的所有者数量实际上取决于您的部署。如果您不小心,如果用户在节点停机时注销,则有一个所有者足够好,并且会避免复制。
提示
通常最好将您的环境配置为使用粘性会话的 loadbalancer。作为红帽单点登录服务器(提供特定请求)时,性能会很有用,通常是来自分布式缓存的数据所有者,因此可以在本地查找数据。详情请查看 第 9.4 节 “粘性会话”。