转至:
http://blog.csdn.net/mobicents/article/details/7067957
在Weblogic中,HttpSession Replication的方式是通过在weblogic.xml中的session- descriptor的定义persistent-store-type来实现的. persistent-store-type可选的属性包括memory, replicated, replicated_if_clustered, async-replicated, async-replicated-if-clustered, file, async-jdbc, jdbc, cookie, coherence-web.
· memory—Disables persistent session storage.
· replicated—Same as memory, but session data is replicated across the clustered servers.
· replicated_if_clustered—If the Web application is deployed on a clustered server, the in-effect persistent-store-type will be replicated. Otherwise, memory is the default.
· async-replicated—Enables asynchronous session replication in an application or Web application. See "Asynchronous HTTP Session Replication" in Performance and Tuning for Oracle WebLogic Server.
· async-replicated-if-clustered—Enables asynchronous session replication in an application or Web application when deployed to a cluster environment. If deployed to a single server environment, then the session persistence/replication defaults to in-memory. This allows testing on a single server without deployment errors.
· file—Uses file-based persistence (See also session-descriptor).
· async-jdbc—Enables asynchronous JDBC persistence for HTTP sessions in an application or Web application. See Configuring Session Persistence.
· jdbc—Uses a database to store persistent sessions. (see also session-descriptor).
· cookie—All session data is stored in a cookie in the user's browser.
· Coherence*-web For more information, see User's Guide for Oracle Coherence*Web.
Replicated,async-replicated只用部置集群在集群上,而replicated_if_clustered,async-replicated-if-clustered也可以部署在独立实例上。都不能只部署在集群的部分实例中上。
参考:http://docs.oracle.com/cd/E23943_01/web.1111/e13712/weblogic_xml.htm#i1071981
例如:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<session-descriptor>
<!-- <persistent-store-type>replicated</persistent-store-type> -->
<persistent-store-type>replicated_if_clustered</persistent-store-type>
<!--<persistent-store-type>memory</persistent-store-type> -->
<timeout-secs>60</timeout-secs>
</session-descriptor>
</weblogic-web-app>
1. Load Blanace和Session Affinity
由于这里的机制是主从备份, 所以集群中只有两个实例会有同一HTTP Session的数据. 当集群里的实例多于2个以上时,为了确保后续的HTTP请求能访问到Session数据, 必须要求前置分发请求的load balancer支持session affinity(sticky session/seamless session). Session Affinity就是能够把特定Session的所有请求都路由到第一次创建Session的同一物理机器上;否则后续的请求就有可能不能够访问 Session数据了.
如果设置成非Replication方式即memory模式, 生成的JSESSIONID类似:
gGMWQy2LcSTHTSyLdyLpqYGskYpXPpRJkc2VB618mSKSQC9rgsCv!-1274119771!1353236040031
可以看出这个session被二个!分隔成三部分。第一部分应该是真正的sessionid, -1274119771是实例标识。而1353236040031为session创建时间。
一旦配置成Replicated模式,Weblogic会生成的SessionID类似:
sHkLQyQTnJQQ217Js7SmQL2x9hBb0JQ5hFm7n4QpNkZL7wMnLbPn!-9326295!959096067!1353236595093
这里出现三个!,第二,三部分为主备实例的标识。
SessionID格式的: sessionid!primary_server_id[!secondary_server_id]!creationTime
2.配置weblogic Load Blanace
配置方式参考: http://guojuanjun.blog.51cto.com/277646/748768
1) 通过http://localhost/Cluster/cluster.jsp访问,页面显示:
session Id:
KSW2QyJFzVcnFxQTWpSLJLhJTTQsCzLGqlM1ShnCvSyKm2r4k29h!-1458785082!2113129367!1353238917906
session CreateTime :1353238917906
current instance :Server1
可以看到该session的primary_server_id为-1458785082,即Server1。(每个server的id是启动时生成的,所以也是变化,所以你的测试可能与我不一样。) secondary_server_id为2113129367,即server3. 即server3是Server1的备点。
2) 停止Server1,再次访问, 页面显示:
session Id:
KSW2QyJFzVcnFxQTWpSLJLhJTTQsCzLGqlM1ShnCvSyKm2r4k29h!2113129367!-481865348!1353238917906
session CreateTime :1353238917906
current instance :Server3
可以看到sessionId没有变化,而该session的primary_server_id为2113129367, 即Server3。secondary_server_id为-481865348,即server0.即Server0是Server3的备点。
3) 停止Server3,再次访问, 页面显示:
session Id:
KSW2QyJFzVcnFxQTWpSLJLhJTTQsCzLGqlM1ShnCvSyKm2r4k29h!-481865348!NONE!1353238917906
session CreateTime :1353238917906
current instance :Server0
可以看到sessionId没有变化,该session的primary_server_id为-481865348, 即Server0。secondary_server_id为NONE,即该session没有备点.
通过测试我们大致可以猜出weblogic session复制的基本思路:
1) 每个实例都有两份Session数据。主数据和备份数据。
2) 当请求的sessionId的primary_server_id为当前实例时,从主数据里获取session响应请求,否则进行3).
3) 当请求的sessionId的secondary_server_id为当前实例时,从备份数据里取session响应请求。并修正该session的primary_server_id/secondary_server_id为自已及其的备点。
3. Weblogic支持的负载均衡
Weblogic支持两种机制的负载均衡
1) Proxy plug-ins
Weblogic内置插件,即http://guojuanjun.blog.51cto.com/277646/748768中提到的mod_wl.
如果一个实例失败,plug-in会定位该session的secondary_server,将请求发给它。
2) Hardware load balancers
Hardware load balancers,比如F5. 这些第三方产品并不能按weblogic的意愿,定位session的secondary_server。他会随机选机选择一个可用实例发给他。然后该实例通过session id里的secondary_server_id,像secondary_server获取数据。
虽然weblogic允许这种请求的随机转发,但并不建议使用会话不亲和方式,因为这将带来数据并发和一致性问题。
参考文献:
1. http://blog.csdn.net/mobicents/article/details/7067957
2. http://docs.oracle.com/cd/E23943_01/wls.htm
3. http://stackoverflow.com/questions/6429990/weblogic-jsessionid
分享到:
相关推荐
3.1. 集群定义 一个集群就是一组协同工作的WebLogic服务器实例。 集群提供:高可用性、负载均衡、扩展性。 集群图示:图2、图3都是集群在应用环境中的示例。
在WebLogic Server环境中,当一个用户在集群中的某个服务器上登录并创建了Session后,如果该用户的请求被转发到集群中的其他服务器,Session复制机制会确保用户的会话状态在服务器之间同步,从而提供无缝的用户体验...
本文主要探讨的是在Windows环境下如何配置WebLogic Server 11g的集群以及实现Session复制,这对于构建高可用性和负载均衡的Web应用程序至关重要。 首先,集群是将多个独立的WebLogic Server实例组织在一起,它们看...
配置WebLogic Server 11g的集群和Session复制是一个涉及多个步骤的过程,需要仔细规划和执行。每个环节都关系到系统的稳定性和性能。一旦配置完成,你将拥有一个能够提供高可用性和可扩展性的Web应用环境。在实践中...
3. **Weblogic集群Session持久化配置** Session持久化是为了确保用户在服务器故障或负载均衡时能够保持会话状态,避免用户登录或操作的丢失。配置步骤通常包括在Domain配置中启用Session复制或存储,并设置相应的...
本篇将详细讲解如何在Windows环境下配置WebLogic Server 11g的集群以及实现Session复制。 ### 1. 预备知识 在开始配置之前,需要了解以下基本概念: - **Java EE (Enterprise Edition)**:一种用于开发分布式、...
本文将详细介绍如何在Windows环境下配置WebLogic Server 11g的集群以及实现Session复制。 1. **预备知识** 在开始配置之前,需要了解基本的WebLogic Server概念,包括节点管理器、域、管理服务器和受管服务器。...
WebLogic Server 11g 是 Oracle 公司提供的一个企业级 Java 应用服务器,它支持集群、负载均衡和Session复制等高级特性,以确保高可用性和数据一致性。以下是关于这些特性的详细说明: 1. **集群定义**: 集群是将...
确保session复制配置正确,并且所有节点都能正常通信。 4. **网络问题**:网络延迟或中断可能导致session数据无法在服务器之间正确传播。 5. **代码问题**:检查应用代码,确保正确地创建、使用和销毁session。...
【WebLogic集群Session复制详解】 1. **简介** WebLogic集群是Oracle公司提供的一个高可用性和可扩展性的企业级Java EE应用服务器平台。在集群环境中,session复制是确保用户会话在不同节点之间无缝迁移的关键技术...
WebLogic是Oracle公司的一款企业级Java应用服务器,而集群功能允许多个WebLogic服务器实例协同工作,提供高可用性、可扩展性和资源负载均衡。 集群的工作原理是将多个独立的WebLogic服务器实例组织成一个逻辑单元,...
3. **Session复制**:在WebLogic集群环境中,为了保持会话状态的一致性,Session需要在节点间复制。WebLogic提供了不同的复制策略,如全量复制和增量复制,以平衡性能和资源消耗。 4. **负载均衡**:在负载均衡的...
在本文中,我们将深入探讨如何在WebLogic服务器上配置session复制,以实现weblog集群部署项目的高效运行。 首先,我们需要创建一个`webLogic.xml`文件,将其放置在`WEB-INF`目录下。这个文件是WebLogic服务器特有的...
1. **集群概念**: 集群是一种高可用性和可扩展性的解决方案,通过将多个WebLogic服务器实例组合在一起,实现负载均衡、故障转移和资源共享。 2. **创建集群**: 在管理控制台中,可以选择创建新的集群,并将服务器...
1. **集群概念**: WebLogic集群是由两个或多个相互协作的WebLogic服务器实例组成的集合,它们共享相同的域配置,并通过网络进行通信。集群的主要目标是提高服务的可用性和可伸缩性,通过负载均衡分发请求,以及在...
WebLogic Server是一款...总结来说,WebLogic集群部署涉及WebLogic Server的安装、Domain配置、集群创建、节点添加、服务启动、数据源配置以及session共享的设置。这一过程对于保证应用的高可用性和负载均衡至关重要。
4. 开启缓存和Session复制,提高应用响应速度和容错能力。 八、故障转移与高可用性 1. 配置集群的故障检测机制,确保节点间的健康检查。 2. 设置应用程序的故障转移策略,如自动重新部署到其他节点。 3. 配置集群的...