如果在负载均衡器和weblogic集群之间配置了两个Web服务器,那么两个Apache服务器是否会保持会话粘性?
例如,负载均衡器将第一个请求转发给第一个apache,然后将第一个apache转发给第一个WL托管实例.即使来自同一用户的第二个req由负载均衡器转发到第二个apache,第二个apache也能够将它转发到服务第一个请求的第一个WLManaged实例,而不是第二个不了解的第二个WLManaged实例.会话信息.
理想情况下,weblogic apache插件的行为应该是什么?问题是我不想在wl服务器集群上启用会话复制.
根据Apache HTTP Server插件的" 故障转移,Cookie和HTTP会话 "部分:
当请求包含存储在cookie或POST数据中的会话信息,或者在URL中编码时,会话ID包含对最初建立会话的特定服务器实例的引用(称为主服务器)和对复制原始会话的其他服务器(称为辅助服务器).包含cookie的请求尝试连接到主服务器.如果该尝试失败,则将请求路由到辅助服务器.如果主服务器和辅助服务器都出现故障,则会话将丢失,并且插件会尝试与动态群集列表中的另一台服务器建立新连接.请参见图3-1连接故障转移.
注意:如果POST数据大于64K,则插件不会解析POST数据以获取会话ID.因此,如果将会话ID存储在POST数据中,则插件无法将请求路由到正确的主服务器或辅助服务器,从而可能导致会话数据丢失.
图3-1连接故障转移
alt text http://download.oracle.com/docs/cd/E13222_01/wls/docs100/plugins/wwimages/failover.gif
换句话说,是的,两个Apache服务器都能够将传入的请求转发到"正确的"WebLogic实例,因为会话ID包含所有必需的信息.请注意,没有必要通过测试确认这一点,但这很容易.
更新:从OP回答以下评论
我认为这个文档只适用于一个apache服务器.在我的情况下,我有两个,负载均衡器以50:50的方式将请求转发给两个服务器.我测试了这个,而且weblogic插件没有保持粘性.
我知道你使用的是两个apache fontend,我不确定这个文档仅适用于配置一个apache服务器.如上所述,会话ID包含主服务器(以及辅助服务器)的引用,因此两个apache都应该能够处理它.至少,这是我的理解.实际上,我过去曾使用过类似的配置但是不记得事情是否按照我认为的那样工作,或者负载均衡器是否配置为处理粘性(即转发到给定的Apache服务器).我现在有点怀疑......
可以发布您的插件配置(两个apache服务器如果不同)?你还可以确认当只有一个apache服务器启动时,事情正在按预期工作(并且如果它们的配置不同,则使用两个apache进行测试,但情况应该不是这样)?