- 浏览: 106029 次
文章分类
最新评论
-
gaohaolianga:
按照你的方式配置,没起作用啊
搭建jboss集群共享session -
natian306:
楼主的jboss是什么版本的?我的是4.0.5没有jboss- ...
搭建jboss集群共享session
最近公司项目需要搭建一个jboss集群,同时研究了一下jboss集群下session一致性的问题,解决方法有两种,一种是Session Sticky的方式,另一种采用jboss replicaton 。
技术方案如下:
技术方案 1 :采用 Nginx Session Sticky 的方式实现。需要安装 nginx 扩展模块 nginx_upstream_jvm_route.
技术方案 2 :采用 jboss replicaton (jboss session 复制方式 ) ,需要进行 JBoss 相应配置文件的配置 .
最终我们选择的是采用session复制的方式,虽然需要牺牲一些服务器的性能,保证我们的服务能够高可行性(
High Availability)。即使其中一台Jboss服务器宕机了,用户访问的时候也不会造成session的丢失,但如果jboss集群中服务器的数量太多,就会造成session复制的成本过高,就不适合采用这种方式了。
1.安装Jboss4.2.2
unzip jboss4.2.2.GA.zip
cp –a jboss4.2.2.GA /usr/local/
#JBOSS默认只能本机访问,修改server.xml使它支持所有网络访问
vi $jboss/server/default/deploy/jboss-web.deployer\server.xml ($jboss表示你jboss的目录,下同)
修改
<Connector port="8080" address="${jboss.bind.address}"
为
<Connector port="8080" address="0.0.0.0" >
修改(不用AJP协议的话不用修改)
<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"
为
<Connector port="8009" address="0.0.0.0" protocol="AJP/1.3"
#启动测试jboss
/$boss/bin/run.sh
#打开IE测试
2.配置Jboss Session复制的配置
1)修改$JBOSSE/server/default/deploy/jboss-web.deployer/server.xml文件,将Engine 修改如下:
<Engine name="jboss.web" defaultHost="localhost">
给它增加一个jvmRoute属性:
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
2)修改 $JBOSS_HOME/server/default/deploy/ jboss-web.deployer /META-INF/jbossservice.xml 找到<attribute name="UseJK">该为:
<attribute name="UseJK">true</attribute>
3)在$jboss\server\default\deploy\jboss-web-cluster.sar\META-INF\jboss-service.xml
下面要做的是基于request的cluster,也就让各个节点之间互相复制session状态。有两种复制模式,同步与异步。使用同步的方式,jboss会把session复制的操作和对request的响应放到一个应用事务(application transaction),session复制完成后才去处理request。异步复制则发送session复制的消息后马上处理request,session复制则会稍有延迟。但是在多框架的web页面中,这样的集群方式会有问题。由于frame在同一时间发出多个request,会造成一些混乱,这也是采用基于用户的集群方式的原因之一。
<attribute name="CacheMode">REPL_ASYNC</attribute>
REPL_ASYNC(异步)或者REPL_SYNC(同步)。
<attribute name="ClusterName"> 这个属性是设置你的集群的名字
在下面还有个<attribute name="ClusterConfig"> 这个属性是设置每个节点在进行session复制的时候是如何通信的,有TCP和UDP两种。如果使用udp方式,那么应该将udp的lookback属性指定为true。采用UDP方式问题比较多,所以采用TCP方式,应该指定bind_addr的值为本机ip,并且在TCPPING标签的initial_hosts属性中列出所有节点,格式是”机器名[端口号]”,将<TCP>到</TCP>标签内的全部down_thread和up_thread的false都改为true。还需要注释掉<!--<config><udp>...</udp></config>-->。
<config> ( 在config之前有个注释符号<!--把他去掉,在config最后也有个 -->也去掉)
<TCP bind_addr="192.168.200.17" start_port="7810" loopback="true"/>
<TCPPING initial_hosts="192.168.200.17[7810],192.168.200.18[7810]" port_range="3" timeout="3500"
num_initial_members="3" up_thread="true" down_thread="true"/>
<MERGE2 min_interval="5000" max_interval="10000"/>
<FD shun="true" timeout="2500" max_tries="5" up_thread="true" down_thread="true" />
<VERIFY_SUSPECT timeout="1500" down_thread="true" up_thread="true" />
<pbcast.NAKACK down_thread="true" up_thread="true" gc_lag="100"
retransmit_timeout="3000"/>
<pbcast.STABLE desired_avg_gossip="20000" down_thread="true" up_thread="true" />
<pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="false"
print_local_addr="true" down_thread="true" up_thread="true"/>
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>
</config>
4)在项目工程中WEB-INF中web.xml文件,添加内容如下
在<web-app>紧跟着下面添加 <distributable/>
5)在WEB-INF中添加jboss-web.xml文件,内容如下
<jboss-web>
<context-root>/</context-root>
<replication-config>
<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
<replication-granularity>SESSION</replication-granularity>
<replication-field-batch-mode>true</replication-field-batch-mode>
</replication-config>
</jboss-web>
6)配置default目录,让该目录支持集群
将如下文件从%JBoss_Home%\server\all\lib里面拷到%JBoss_Home%\server\default\lib目录下:
jbossha.jar(加载org.jboss.ha.framework.server.ClusterPartition)
jgroups.jar(JBoss集群底层通信协议)
jboss-cache-jdk50.jar(加载org.jboss.cache.aop.TreeCacheAop)
将如下文件从%JBoss_Home%\server\all\deploy里面拷到%JBoss_Home%\server\default\deploy目录下:
deploy.last
jboss-web-cluster.sar
cluster-service.xml
以上为服务器上的配置
----------------------------------
另一台服务器配置要点:
1)增加node2节点:
deploy\jboss-web.deployer目录下的server.xml
<Engine name="jboss.web" defaultHost = "localhost">
改为
<Engine name="jboss.web" defaultHost= "localhost" jvmRoute="node2">。
2)配置Jboss 集群TCP协议发送数据包
在deploy\jboss-web-cluster.sar\META-INF目录下的jboss-service.xml
<TCP bind_addr = "thishost" start_port = "7810" loopback= "true"…>
改为
<TCP bind_addr = "192.168.200.18" start_port= "7810" loopback="true"…>;
<TCPPING initial_hosts= "thishost[7810], otherhost[7810]" port_range="3"…>
改为
<TCPPING initial_hosts= "192.168.200.18[7810], 192.168.200.17[7810]" port_range="3"…>。
其他配置跟另一台机器保持一致。
评论
发表评论
-
什么时候使用接口?什么时候使用抽象?选择Java接口还是抽象类
2012-07-25 22:18 1044老帖了,但是还是想自己收录一下。最后也把自己对于这个问题 ... -
在apache上通过mod_ssl配置https
2012-05-02 17:55 17131.编辑/usr/local/apache2/conf/ht ... -
jboss数据池不稳定问题
2012-04-26 11:37 1547现在的问题是,jboss一启动的时候,第一次连接会报这 ... -
SOA架构设计概要
2012-04-25 11:51 1259主要内容也是来自《Stev ... -
服务管理框架
2012-04-25 11:48 977使大型分布式系统大型服务化之后足高可用及低运营成本,新的系统架 ... -
网络应用系统设计的基本原则
2012-04-25 11:02 798系统功能 KISS原则: keep ... -
怎样用Java运行64位程序
2012-02-16 18:09 119532位下JVM最大可用内存<4g $ java ... -
jboss 启动停在Initializing Spring root WebApplicationContext 的问题
2012-02-10 11:15 1787最近在装IDC机房的新机器,JBOSS启动的时候一 ... -
J2SE5.0中的注解
2011-12-26 12:07 777一、什么是注释 说起注释,得先提一提什么是元数据( ... -
failed to lazily initialize a collection of role:no session or session was close
2011-12-21 18:49 2791解决方法(延迟加载问题) 把fetch= FetchType ... -
Java性能 - Java Programming Guidelines
2011-12-02 18:43 811这一部分包含 ... -
JBoss中Connector中HTTP与AJP区别
2011-11-11 12:37 2204JBoss服务器通过Connector连接器组件 ... -
大流量网站的底层系统架构分析
2011-11-03 11:35 823动态应用,是相对于网站静态内容而言, 是指以c/c++、p ...
相关推荐
JBoss集群配置的Session复制。
jboss+apache搭建jboss集群,以减少web服务器的压力
英文文档 简单易懂 详细介绍了如何借助Apache2 mod_jk 1.2.x作为负载均衡搭建JBOSS集群 细分每个搭建步骤 文档内附带相关软件下载地址
NULL 博文链接:https://yang-min.iteye.com/blog/1961574
apache+jboss集群参考,参考介绍集群实现办法
jboss集群完整介绍,包括jboss相关知识。
windows jboss 集群2,网络收集集群资料,大家早点架设成功
配置集群服务的优秀资料,web开发工程师的必备资料,大家快来下啊。
Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理
在default目录下快速配置JBoss集群(Web方面) 说起JBoss集群好像很高深的样子,其实一点也不恐怖,建立一个集群很简单,难的是怎么针对具体的应用优化服务器和实现负载均衡(学习中^o^)。本文将带领大家在JBoss的...
jboss服务器实现集群的机制和部署方法
附件以实例说明如何搭建Jboss集群,简明扼要。 有兴趣的可以参考哈.
JBOSS集群.JBOSS集群.JBOSS集群.JBOSS集群.JBOSS集群.JBOSS集群.
apache jboss 集群问题,集群后出现异常,收集资料!
jboss集群EJB3.doc jboss集群EJB3.doc jboss集群EJB3.doc
实现两个节点之间的无缝负载均衡,实时session复制,当一台机子的jboss的服务跨掉以后,自动会切换到另外一台服务器上面,对于用户的使用没有丝毫的影响。
JBOSS的HTTP cluster实现了两项任务:会话状态复制(Session state replication)和负载平衡(Load-balance of incoming invocations)。 会话状态复制用来复制集群中不同节点上客户端的连接状态,以实现当集群中的...
JBOSS集群JBOSS集群JBOSS集群