本节将详细介绍会话复制操作。
Web 请求结束时,Web Server 将确定是否需要通过会话复制配置(存储在服务器配置文件 server.xml 中)来复制会话数据。
假设存在由四个实例构成一个群集的一个使用案例,并且 Administration Server 中启用了会话复制。
由四个节点上运行的四个实例(A、B、C 和 D)构成的 Web Server 群集中的会话复制过程如下:
实例 A 是 D 的备份,B 是 A 的备份,C 是 B 的备份,D 是 C 的备份。这构成一个完整的备份环。
群集中的每个实例记录群集中所有实例的一个静态列表和一个活动备份实例。
根据配置,每次请求结束时,会话数据会被同步发送到备份实例。
Web Server 群集环境中的故障转移过程如下:
如果实例 A 失败,负载平衡器会将目标为实例 A 的所有传入 Web 请求重定向到群集中的其他实例,并按如下所示重新配置备份环:
D 检测出其备份 A 出现故障,将选择有序列表中 A 的下一个实例作为其新的备份实例。
在此情况下,B 将被选择,D 将建立与 B 的新备份连接。B 现在拥有两个备份: A 的只读备份和 D 的活动备份。
备份环现在变为完整,即 B 备份到 C,C 备份到 D,D 备份到 B。
当出现故障的实例 A 再次可用时,它通过向其指定的备份实例 B 发送一条重新加入消息,来重新加入备份环,并建立与 B 的备份连接。
D 通过接收来自 A 的成功 ping 返回或者来自 A 的消息,检测出 A 已联机。
D 然后建立与 A 的备份连接,并终止其与 B 的备份连接。
Web Server 7.0 不支持会话复制中的以下功能:
恢复两个或多个实例同时出现的故障。
两次故障间的时间间隔必须大于复活的实例完全恢复所需的时间。
多个实例的会话备份。在常规操作中,任何会话只能有两份副本: 主会话和备份会话。
会话持久性: 要进行故障转移,只能在另一个实例的内存中备份会话。
Web Server 仅支持 Java Web 应用程序的会话复制。如果使用的是非 Java 应用程序(如 CGI 或 PHP),则不能复制会话数据。