JBoss 4.0.2 集群指南
本文主要讲解 JBoss cluster 的基本知识以及简单的配置方法,其间涉及了一些 Jboss 的补充知识。
一、材料准备:
1、 JBoss 4.0.2
JBoss 各个版本之间差异比较大,即使同为 JBoss4.x 的版本,内部组件的版本也不一致,所以请尽量使用
同一版本的 server。目前已经证明可以配置 cluster 的版本多为 JBoss 3.2.6 和 JBoss 4.0.2。
2、 Apache 2.0.54
3、 Apache mod_jk-1-2-13-apache-2-0-54
二、安装:
1、jboss4.0.2 与 apache 2.0.54 的安装请自行搞定。假设 JBoss 的安装目录为%jboss%,apache 安装目录为% apache%。
2、 mod_jk 的安装。
从 apache.org 获得文件 mod_jk-1-2-13-apache-2-0-54.so,将该文件拷贝到%apache%\modules。
三、JBoss cluster 入门
Jboss 支持如下类型的 cluster:EJB、web、JNDI、JMS,我们主要了解 webcluster。Webcluster 实际上可以划分为两个话题:负载均衡 (load balance) 和状态同步。它们是互相独立的,单独配置。负载均衡的概念比较简单,重要的是负载均衡的粒度。可以选择针对每个 request 的均衡,或者是针对每个用户的均衡。选择不同的粒度,需要不同的状态同步方式。
1、基于 request 的负载均衡
该种方式下,负载均衡器(loadbalancer)会根据各个 node 的状况,把每个 httprequest 进行分发。使用这样的均衡策略,就必须在多个 node 之间复制用户的 session,实时保持整个 cluster 的用户状态同步,这种操作被称为 session 复制(sessionreplication)。Jboss 的实现原理是使用拦截器(interceptor),根据用户的同步策略拦截 request,做同步处理后再交给 server 产生响应。该方法的优点是客户不会被绑定都具体的 node,只要还有一个 node 存活,用户状态都不会丢失,cluster都能够继续工作。缺点是 node 之间通信频繁,响应速度有影响,多并发、高频操作的情况下性能下降比较厉害。
2、 基于用户的负载均衡该种方式下,当用户发出第一个 request 后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的jvm 路由,以后该用户的所有 request 都会被绑定这个 jvm 路由,用户只会与该 server 发生交互,这种策略被称为粘性 session(sessionsticky)。该方法的优点是响应速度快,多个节点之间无须通信。缺点也很明显,某个 node 死掉以后,它负责的所有用户都会丢失 session。
四、实战
1、负载均衡
Jboss 的负载均衡目前有两种方案,一是使用 apache 的 mod_jk,二是使用 JBoss 自带的负载均衡模块。下面分别讲解这两种配置。
mod_jk 的配置
1、 请确认%apache%\modules 下已经有 mod_jk-1-2-13-apache-2-0-54.so 文件。
2、 修改%apache%\conf\httpd.conf 在文件末尾添加:
Include conf/mod_jk2.conf
3、 在%apache%\conf 下新建文件 mod_jk2.conf 文件内容如下:
# Load mod_jk module. Specify the filename # of the mod_jk lib you’ve downloaded and # installed in the previous section LoadModule jk_module modules/mod_jk-1-2-13-apache-2-0-54.so # Where to find workers.properties JkWorkersFile conf/workers2.properties # Where to put jk logs JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "# JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" JkMount /* loadbalancer
其中
JkMount /* loadbalancer
的意思是,把所有的请求都发给 loadbalancer 处理。可以通过修改 url 来控制发送某些 request。
4、 在 %apache%\conf 下新建文件 workers2.properties 其内容为:
worker.list=loadbalancer,server1,server2 # Define the first node... worker.server1.port=8009 worker.server1.host=172.16.0.116 worker.server1.type=ajp13 worker.server1.lbfactor=1 worker.server1.local_worker=1 worker.server1.cachesize=10 # Define the first node... worker.server2.port=8009 worker.server2.host=172.16.32.88 worker.server2.type=ajp13 worker.server2.lbfactor=1 worker.server2.local_worker=1worker.server2.cachesize=10 # Now we define the load-balancing behaviour worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=server1,server2 worker.loadbalancer.sticky_session=1
其中对于 node 的命名规则是 worker.节点名.xxxx。
所以上述文件定义了两个节点:server1 和 server2。8009 端口是 jboss 默认的 ajp 端口,另外需要注意的是worker.server2.lbfactor 参数,它是节点的负载加权,它的值越大,获得负载的机会就越大。可以根据 node的硬件性能进行调整。worker.loadbalancer.sticky_session 参数是指定是否使用粘性 session。所有需要负载均衡的节点,都必须在 worker.loadbalancer.balanced_workers 参数中列举出来。请记住所有 node 的名称和它对应着哪台机器,后面的配置中会使用。尝试启动 apache:%apache\bin\apache.exe,正常情况下没有任何提示。如果你使用的 jk 是 2.0 的,那么配置文件的写法完全不同,由于 mod_jk2 已经停止开发,所以 apache 并没有提供任何讲解,对于配置文件的编写也没有任何指导。 Jboss 自带均衡器的配置将文件夹%jboss%\docs\examples\varia\loadbalancer\loadbalancer.sar 拷贝到%jboss%\server\all\d eploy 下,并且修改 loadbalancer.sar\loadbalancer.sar\META-INF\jboss-service.xml,在<host>标签中类出所有节点,在<sticky-session>标签中指定是否使用粘性 session。配置完成。该均衡器的缺点是负载能力相对不高,配置参数太少,比如无法指定不同节点的负载加权,所以后面都以 mod_jk 为例,不再讲解 jboss 自带的负载均衡器的内容。负载均衡的配置基本完成,启动 jboss,其中过程中会列出 DefaultPatition 中所有的节点:run.bat -c all
任何节点的关闭与启动都会在 cluster 中广播,比如加如一个新节点后,其他节点会得到以下提示:
2、session sticky 配置
apache 应该会以粘性 session 的方式分发请求。部署一个应用测试一下,你会发现粘性 session 没有起作用。因为我们还没有给 jboss 配置 jvm 路由(jvmRoute),apache 就无法知道究竟哪些 session 是属于哪个节点的。我们继续往下:修改 server1 机器上的 jboss 的配置文件:%jboss%\server\all\deploy\jbossweb-tomcat55.sar\
META-INF\ jboss-service.xml 在 110 行有:
<attribute name="UseJK">false</attribute>
,将它改为 true。值得注意的是在这行标签上面有一段注释,要求你在 server.xml 中必须有:Enginename=
"jboss.web"jmvRoute="Node1"defaultHost="localhost"请注意这里有一个气死人不偿命的小 bug,jboss 的官方
文档把 jvmRoute 写成了 jmvRoute,就是 v 和 m 两个字母的颠倒让我郁闷了三天,翻遍了 jboss.com 和 thes
erverside.com。都是直接拷贝的错,吐血吐到脱水啊。
下面需要修改 server1 上的%jboss%\server\all\deploy\jbossweb-tomcat55.sar\ server.xml,在 32 行左右有:<Engine name="jboss.web" defaultHost="localhost">
给它增加一个 jvmRoute 属性:
<Engine jvmRoute="server1"
name="jboss.web"defaultHost="localhost">
请注意,jvmRoute 的值必须和 mod_jk 中的节点名字正确对应,否则无法正确路由。Cluster 中的所有节点都应该做相应的配置。Jboss 的配置完成了,下面需要在你的 web 应用中修改配置文件,让它支持集群。在
WEB-INF\web.xml 中加入属性:
<distributable/>
Ok,基于用户的 cluster 完成了,每个用户会绑定都某个节点上进行交互。这种绑定是如何完成的呢?原来 apache 把客户分发到节点后,该节点会在用户的 sessionid 后面加上此节点的路由名称,变成这个样子:
Efdfxxd98daja87daj76da2dka**,server1 有了这个标志,就能分辨该 session 属于哪个节点。
3、session replication 配置
下面要做的是基于 request 的 cluster,也就让各个节点之间互相复制 session 状态。有两种复制模式,同步与异步。使用同步的方式,jboss 会把 session 复制的操作和对 request 的响应放到一个应用事务(applicationtransaction),session 复制完成后才去处理 request。异步复制则发送 session 复制的消息后马上处理 request,session 复制则会稍有延迟。但是在多框架的 web页面中,这样的集群方式会有问题。由于 frame 在同一时间发出多个 request,会造成一些混乱,这也是采用基于用户的集群方式的原因之一。
【下载地址】
百度网盘链接:https://pan.baidu.com/s/1yVchkHZzK5SZp6oEQppdXg
提取码:y8kr
相关文章
使用-JFreeChart来创建基于web的图表
XStream使用文档
WebService发布过程及常见问题
webpack实战入门进阶调优分享
weblogic调优参数及监控指标
weblogic节点管理
weblogic管理控制台概述
weblogic-部署和启动
WebLogic-Server-性能及调优-调优-Java-虚拟机
Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。
FlashFXP绿色版网盘下载,附激活教程 1774
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1559
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1620
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1703
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1819
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64