2009-12-09 56 views
0

如果在负载均衡器和weblogic集群之间配置了两个Web服务器,两个Apache服务器会维护会话粘性吗?Weblogic Apache插件和会话粘性

举例来说,负载平衡器将第一个请求转发给第一个apache,然后第一个apache转发给第一个WL管理的实例。即使来自同一用户的第二个请求由负载均衡器转发到第二个apache,第二个apache是​​否也能够将其转发给提供第一个请求的第一个WLManaged实例,而不是第二个未知晓的WLManaged实例会话信息。

理想情况下应该是weblogic apache插件的行为?问题是我不想在wl服务器集群上启用会话复制。

回答

7

根据Apache HTTP服务器插件的部分“Failover, Cookies, and HTTP Sessions”:当请求包含存储在cookie中或在POST数据,或编码在URL会话信息

,会话ID包含对最初建立会话的特定服务器实例(称为主服务器)的引用,以及对复制原始会话的其他服务器(称为辅助服务器)的引用。包含cookie的请求会尝试连接到主服务器。如果该尝试失败,请求将被路由到辅助服务器。如果主服务器和辅助服务器均失败,则会话将丢失,并且插件会尝试与动态群集列表中的另一台服务器建立新连接。请参阅Figure 3-1 Connection Failover

说明:如果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包含所有必需的信息。请注意,没有真正需要通过测试来确认这一点,但它很容易。

UPDATE:从OP

我认为这个文件只有一个Apache服务器站好回答以下评论。在我的情况下,我有两个,负载均衡器以50:50的方式将请求转发到两个服务器。我测试了这个,并且weblogic插件没有保持粘性。

我知道你在使用两个apache fontend,我不确定这个文件是否适用于只有一个apache服务器的配置。正如所解释的,会话ID包含主服务器(以及辅助服务器)的引用,所以两个Apache都应该能够处理它。至少,这是我的理解。实际上,过去我一直使用类似的配置,但不记得事情是否按照我认为应该的方式工作,或者负载平衡器是否配置为处理粘性(即转发给定的Apache服务器)。我现在有点怀疑...

可以发布你的插件配置(两个Apache服务器,如果他们不同)?如果只有一台apache服务器启动,你还可以证实事情正如预期的那样工作(如果两台服务器的配置有所不同,那么这两台服务器都会测试这个),但这应该不是这样吗?

1

当前面有2个Apache负载均衡器的Apache实例时,状态流图不再适用,因为Apache实例不共享其状态。 我猜WebLogic插件维护一个有方向映射的状态[IPAddress + Port - > JVMID]。如果它收到一个带有JVMID的cookie,它还不知道(例如,它从来没有向这个服务器发送过请求),但它无法知道它引用了哪个IP地址+端口,所以它将无法重用这些JVMID,并且它将重新分配新的主/次,这对于2个实例(可能交换)将是相同的,并且如果严格超过2个实例,则可能会不同。 我没有通过运行特定的测试来确认它,但在纸上它似乎不适用于所有情况。

0

上图对连接到相同WL群集的2个Apache服务器适用。 cookie会话信息包含关于要连接的WLS的详细信息,插件会尊重它。如果主服务器(它最初连接到的服务器)WL服务器不可用,则该请求将被发送到辅助服务器(基于在选择“Preferred Replication Group”时定义的规则在第一请求时指定)。 。此辅助服务器保持与主WLS服务器相同的会话状态,并且应该能够处理该请求。

如果没有设置会话复制(我认为这是默认关闭),那么将不会有会话被复制到另一台服务器,并且如果原始/主WL服务器关闭,您将失去会话。

0

答案是否定的。由于您有2个Apache Web服务器,您需要在硬件和软件负载平衡器级别实现粘性,以实现您的要求。

意味着您已经在Apache级别的Weblogic插件中实现了粘性会话,但您还需要在硬件负载平衡器级别实现基于源IP的粘性。这将允许您的硬件负载平衡器将来自同一用户的后续请求发送到同一个apace Web服务器。

1

答案是肯定的。我们在我们的博客http://blog.c2b2.co.uk/2012/10/basic-clustering-with-weblogic-12c-and.html上撰写了这篇文章,其中提供了有关在群集中设置Web会话故障转移的分步说明。

本质上,jsessionid cookie编码主要和辅助weblogic服务器。 Mod-wl解析cookie并将请求路由到主服务器。在你的情况下,托管服务器1.如果它关闭,它会自动将请求路由到备份服务器托管服务器2.