|
jboss集群session复制原理:
jboss session复制是jboss session同步的一种实现。原理是在各Jboss节点间建立横向联系,每个节点都将本节点的session变化同步到其他所有节点上。
jboss的session复制与HTTP集群是相互配合、相互独立的两个系统。session复制是节点间的横向联系,HTTP集群是负载均衡器与节点的纵向联系。
10.0.2.203 – 安装JDK 1.6,JBoss 7,JBoss节点名称为jboss1
10.0.2.202 – 安装JDK 1.6,JBoss 7,JBoss节点名称为jboss2
10.0.2.200 – 安装Apache httpd,mod_jk #需要在官网下载mod_jk模块,重命名为mod_jk,放置于/etc/httpd/modules 下
以下实验注意iptables 和 selinux 的影响。
安装jdk和jboss 此处就不多说了,jboss不需要修改
/usr/local/jboss-4.2.2.GA/server/all/deploy/jboss-web.deployer 目录下的
server.xml文件的 。
e:在10.0.2.203和10.0.2.202 主机写index.jsp测试页面,放置于/usr/local/jboss-4.2.2.GA/server/all/deploy/jboss-web.deployer/ROOT.war 目录下,内容为:
Cluster App Test
Server Info:
0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("Session list");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"");
System.out.println( name + " = " + value);
}
%>
%
%id:
%
%key:
%
%
%
%
%
最后浏览器访问:10.0.2.90/jkstatus
可以从jkstatus看到关于设置的大量信息
浏览器访问10.0.2.90/index.jsp
接着填写内容并提交
可以看到提交的内容并sticky在一台jboss实例
此时将jboss1停掉,可以看到session在jboss2上面,提交内容,再启动jboss1,停掉jboss2,可以看到session在jboss1上面。(此实验session从jboss2到jboss1有点问题,待解决)
查看/usr/local/jboss-4.2.2.GA/server/all/deploy/jboss-web-cluster.sar/META-INF目录下的jboss-web.xml 文件:
ClusterName是集群名称,
在同一局域网内,可以存在多个jboss集群,根据集群名称区分它们.所以,集群中各节点配置的集群名称必须一致,而机器IP则没有特殊要求,只要它们能相互连通. 理论上,可以在一台机器上安装多个Jboss实例,分属于不同的集群.但这会极大地增加复杂度,是不好的配置方式.
IsolationLevel是隔离等级.
可选值包括:SERIALIZABLE, REPEATABLE_READ, READ_COMMITTED, READ_UNCOMMITTED, 和 NONE。这里的隔离级别和数据库的隔离级别有同样的含义,对于大多数WEB应用程序来讲通常设置为REPEATABLE_READ。
CacheMode是缓存模式。
由于session复制是通过缓存实现的,所以实际上是复制模式.可选值包括:REPL_SYNC 和REPL_ASYNC,确定改变是应该同步还是异步复制。缺省值是REPL_ASYNC.使用同步复制,确保在请求完成之前传播改变,session同步没有滞后,但效率低。
|
|
|