4.17. 为每个控制器上的 Identity 服务(keystone)使用代理持久性
当 mod_auth_mellon
建立会话时,它无法在多个服务器间共享其状态信息。由于 SAML 使用的重定向数量涉及状态信息,因此同一服务器必须处理所有事务。因此,您必须配置 HAProxy,每次将每个客户端请求定向到同一服务器。
HAProxy 可以通过两种方式将客户端绑定到同一服务器:
- 关联性
- 当使用应用层下的层信息将客户端请求固定到单个服务器时,请使用关联性。
- Persistence
- 当应用层信息将客户端绑定到单个服务器粘性会话时,请使用持久性。持久性比关联性更准确。使用以下步骤实现持久性。
HAProxy cookie 指令命名 Cookie 及其参数来持久性。HAProxy 服务器指令有一个 Cookie 选项,它将 Cookie 的值设置为服务器的名称。如果传入请求没有识别后端服务器的 Cookie,则 HAProxy 会根据配置的平衡算法选择服务器。
流程
要在
/var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg
配置文件的keystone_public
块中启用持久性,请添加以下行:cookie SERVERID insert indirect nocache
cookie SERVERID insert indirect nocache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此设置指出
SERVERID
是持久性 Cookie 的名称。编辑每个
server
行并添加cookie <server-name>
作为附加选项:server controller-0 cookie controller-0 server controller-1 cookie controller-1
server controller-0 cookie controller-0 server controller-1 cookie controller-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow