第 10 章 服务器缓存配置
红帽单点登录有两种缓存类型。一个类型的缓存位于数据库的前面,以减少 DB 的负载,并通过在内存中保留数据来降低总体响应时间。域、客户端、角色和用户元数据保存在这种类型的缓存中。这个缓存是本地缓存。即使您位于带有更多 Red Hat Single Sign-On 服务器的集群中,本地缓存也不会使用复制。相反,它们只会在本地保留副本,且该条目被更新到集群的其余部分中,且条目会被驱除。存在单独的复制缓存 工作,该任务将不validation消息发送到整个集群,有关应该从本地缓存驱除哪些条目。这可大大减少网络流量,使事情变得高效,并避免在线路上传输敏感元数据。
第二类缓存处理用户会话、离线令牌和跟踪登录失败,以便服务器可以检测密码保护和其他攻击。这些缓存中的数据是临时的,仅在内存中,但可能会在集群中复制。
本章讨论这些缓存的一些配置选项用于集群和非集群部署。
这些缓存的更高级配置可在 JBoss EAP 配置指南 的 Infinispan 部分找到。
10.1. 驱除和过期 复制链接链接已复制到粘贴板!
为 Red Hat Single Sign-On 配置多个不同的缓存。有一个包含安全应用程序、常规安全数据和配置选项信息的 realm 缓存。还有一个包含用户元数据的用户缓存。这两个缓存都默认为 10000 条目,并使用最近一次使用的驱除策略。它们各自绑定到控制集群设置中驱除的对象修订缓存。这个缓存会被隐式创建,有两倍配置的大小。同样适用于 授权 缓存,它保存授权数据。密钥 缓存保存了有关外部密钥的数据,不需要具有专用修订缓存。它并没有明确声明了 过期时间,因此密钥会被定期过期并强制从外部客户端或身份提供程序下载。
这些缓存的驱除策略和最大条目可以在 standalone. xml、standalone -ha.xml 或 domain.xml 中配置,具体取决于您的 操作模式。在配置文件中,使用 infinispan 子系统有部分,它类似于:
若要限制或扩展允许的条目的数量,只需添加或编辑特定缓存配置 的对象 元素或特定缓存配置的 expiration 元素。
此外,还有单独的缓存 会话、clientSessions、离线 会话、offClientSessions、loginFailures 和 actionTokens。这些缓存在集群环境中分发,它们默认不会绑定。如果他们有界线,那么某些会话可能会丢失。过期的会话由 Red Hat Single Sign-On 本身内部清除,以避免在不限制的情况下增大这些缓存的大小。如果因为大量会话造成内存问题,您可以尝试:
- 增加集群大小(集群中更多节点意味着会在节点间平均分配会话)
- 为 Red Hat Single Sign-On 服务器进程增加内存
- 减少所有者数量,以确保缓存在一个位置保存。详情请查看 第 10.2 节 “复制和故障切换”
- 为分布式缓存禁用 l1-lifespan。如需了解更多详细信息,请参阅 Infinispan 文档
- 减少会话超时,该功能可单独为 Red Hat Single Sign-On 管理控制台中的每个域执行。但这可能会影响最终用户的可用性。如需了解更多详细信息 ,请参阅 超时。
还有额外的复制缓存 工作,它最常用于在集群节点间发送消息;默认情况下也未绑定。但是,由于此缓存中条目非常短,所以这个缓存不应造成任何内存问题。