9.2. 复制和故障切换
会话、authenticationSessions、offlineSessions 和 loginFailures 缓存是唯一可能执行复制的缓存。条目不会复制到每个节点,而是选择一个或多个节点作为该数据的所有者。如果节点不是特定缓存条目的所有者,它会查询集群来获取它。这意味着,如果拥有数据的所有节点都停机,则数据将永久丢失。默认情况下,Red Hat Single Sign-On 只为数据指定一个所有者。因此,如果一个节点停止那个数据,则该节点会丢失。这通常意味着用户将被注销,必须再次登录。
您可以通过更改 distributed-cache 声明中的 owners 属性来更改复制数据的节点数量。
owners
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="keycloak" jndi-name="infinispan/Keycloak">
<distributed-cache name="sessions" mode="SYNC" owners="2"/>
...
此处我们更改了它,因此至少两个节点将复制一个特定的用户登录会话。
提示
建议的所有者数量实际上取决于您的部署。如果没有小心,如果在节点停机时用户注销,则一个所有者就足够了,您将避免复制。