jboss集群Word下载.docx

上传人:b****5 文档编号:19868588 上传时间:2023-01-11 格式:DOCX 页数:14 大小:80.40KB
下载 相关 举报
jboss集群Word下载.docx_第1页
第1页 / 共14页
jboss集群Word下载.docx_第2页
第2页 / 共14页
jboss集群Word下载.docx_第3页
第3页 / 共14页
jboss集群Word下载.docx_第4页
第4页 / 共14页
jboss集群Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

jboss集群Word下载.docx

《jboss集群Word下载.docx》由会员分享,可在线阅读,更多相关《jboss集群Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

jboss集群Word下载.docx

这是前置机架构集群的主要潜在问题。

Jboss的负载均衡器架构集群实际是由Tomcat的HTTP集群实现的。

Jboss有自己的负载均衡器,但效果不佳,官方文档没有介绍,几乎没有人使用。

一般情况下,都是采用apache+mod_jk作为负载均衡器。

下文叙述的都是基于这种架构。

mod_jk是apache的一个插件,负责apache与tomcat之间的通讯,是jboss集群(tomcat集群)的关键。

1.2.1Jboss版本的选择

目前,Jboss主要有3、4、5三个版本系列。

1)Jboss5目前只有2个beta版,实用尚需时日。

2)Jboss3的最后版本是2006年3月更新的3.2.8.SP1。

随着Jboss4日益成熟和Jboss5的开发,已经停止更新1年多的Jboss3逐渐淡出历史舞台。

3)Jboss4最新版本依次是4.2.1.GA、4.2.0.GA和4.0.5.GA。

但官方网站提供的Jboss集群文档只更新到4.0.5GA

4)Jboss各版本的安装和配置并不相同.不但Jboss3和Jboss4的配置文件完全不同,各小版本间也有细微的差别.在集群中,Jboss、apache、mod_jk之间也存在着特定版本才能配合的情况。

1.2.2mod_jk版本的选择

注意,mod_jk有1.x和2.x两个版本系列。

mod_jk2.x已经停止开发,不能使用。

很多人凭直觉认为mod_jk2.x肯定比mod_jk1.x好,结果走了弯路。

1.3负载均衡的粒度

Jboss支持如下类型的cluster:

EJB、web、JNDI、JMS,我们主要了解webcluster。

Webcluster实际上可以划分为两个话题:

负载均衡(loadbalance)和状态同步。

它们是互相独立的,单独配置。

负载均衡的概念比较简单,重要的是负载均衡的粒度。

可以选择针对每个request的均衡,或者是针对每个用户的均衡。

选择不同的粒度,需要不同的状态同步方式。

1.3.1基于request的负载均衡

该种方式下,负载均衡器(loadbalancer)会根据各个node的状况,把每个httprequest进行分发。

使用这样的均衡策略,就必须在多个node之间复制用户的session,实时保持整个cluster的用户状态同步,这种操作被称为session复制(sessionreplication)。

Jboss的实现原理是使用拦截器(interceptor),根据用户的同步策略拦截request,做同步处理后再交给server产生响应。

该方法的优点是客户不会被绑定都具体的node,只要还有一个node存活,用户状态都不会丢失,cluster都能够继续工作。

缺点是node之间通信频繁,响应速度有影响,多并发、高频操作的情况下性能下降比较厉害。

1.3.2基于用户的负载均衡

该种方式下,当用户发出第一个request后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的jvm路由,以后该用户的所有request都会被绑定这个jvm路由,用户只会与该server发生交互,这种策略被称为粘性session(sessionsticky)。

该方法的优点是响应速度快,多个节点之间无须通信。

缺点也很明显,某个node死掉以后,它负责的所有用户都会丢失session。

粘性的session依赖JVM来实现,只要session开始工作,那么负载均衡将永远把相同的session存放于同一个机器上,举个例子来说,有一个ID为aaaXXX的session永远放在A机器的JVM-A上,而bbbXXX的session用于放在B机器的JVM-B上。

使用这种技术的是比较可靠的,如果A机器宕机,则可以从B机器上取得我们需要的session,而使用者并无从查觉,另外使用粘性session是高效率的,只有session发生变更时才需要重写到服务器。

每个用户会绑定都某个节点上进行交互。

这种绑定是如何完成的呢?

原来apache把客户分发到节点后,该节点会在用户的session 

id后面加上此节点的路由名称,变成这个样子:

Efdfxxd98daja87daj76da2dka**,server1有了这个标志,就能分辨该session属于哪个节点。

2软件下载

2.1下载、安装Apache2.2.17

地址:

http:

//httpd.apache.org/download.cgi

下载的文件:

httpd-2.2.17-win32-x86-no_ssl.msi

下载之后直接安装,步骤很简单,下一步即可。

验证Apache安装成功,可以浏览:

http:

//localhost,看到下面的“Itworks”页面就算成功

2.2下载mod_jk-1.2.30

//www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.30/

下载的文件名:

mod_jk-1.2.30-httpd-2.2.3.so

注意mod_jk与apache服务器的版本必须匹配,下面是从下载页面拷来的说明,清楚的说明了它们之间的匹配关系。

∙mod_jk-1.2.30-httpd-2.2.3.soisforApache2.2.x.Ithasbeenbuildagainstversion2.2.3,butshouldworkwithApache2.2.0andlater.Renametomod_jk.sobeforeputtingitinyourApache2.2/modulesdirectoryoradjustyourLoadModulestatement.

∙mod_jk-1.2.30-httpd-2.2.0.soisforApache2.0.x.Ithasbeenbuildagainstversion2.0.53,andshouldworkwithApache2.0.53andlater.Renametomod_jk.sobeforeputtingitinyourApache2.0/modulesdirectoryoradjustyourLoadModulestatement.

3集成配置

3.1Apache+mod_jk设置

3.1.1改变Apache端口号

Ø

因为默认的80端口经常是被占用的,所以我改成了8081,当然也可以不改,修改方式如下:

文件路径:

D:

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\httpd.conf找到这一行:

Listen8081

也需要配置一下ServerName,如果没有配置在mod_jk.log里会报错,同样在上面的文件中找到这行改为:

ServerNamelocalhost:

8081

3.1.2拷贝mod_jk-1.2.30-httpd-2.2.3.so

将上面下载的mod_jk-1.2.30-httpd-2.2.3.so文件拷贝到D:

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\modules目录下,因为在配置文件中要求引用这个文件,所以我们改一个简单的名叫mod_jk.so

3.1.3在httpd.conf增加载入mod_jk配置

●在上面提到httpd.conf文件中增加:

LoadModulejk_modulemodules/mod_jk.so根据测试这行不加也行,可能是因为在mod_jk.conf文件已经有了这个引用。

includeconf/mod_jk.conf

3.1.4新建mod_jk配置文件mod_jk.conf

在在上面提到httpd.conf文件中增加:

includeconf/mod_jk.conf配置,所以需要在D:

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\文件夹下新建一个mod_jk.conf文件,其内容如下:

#Loadmod_jkmodule

#Specifythefilenameofthemod_jklib

#加载mod_jkModule:

将下载的mod_jk-1.2.30-httpd-2.2.3.so文件放入到Apache_Home\module并改并为mod_jk.so

LoadModulejk_modulemodules/mod_jk.so

##配置mod_jk

#加载集群中的workers

#Wheretofindworkers.properties

JkWorkersFileconf/workers.properties

#Wheretoputjklogs

JkLogFilelogs/mod_jk.log

#Setthejkloglevel[debug/error/info]

JkLogLevelinfo

#Selectthelogformat

JkLogStampFormat"

[%a%b%d%H:

%M:

%S%Y]"

#JkOptionsindicatestosendSSKKEYSIZE

JkOptions+ForwardKeySize+ForwardURICompat-ForwardDirectories

#JkRequestLogFormat

JkRequestLogFormat"

%w%V%T"

#Mountyourapplications

#指定哪些请求交给jboss处理,"

loadbalancer"

为在workers.propertise里指定的负载分配控制器名

JkMount/*loadbalancer

#JkMount/jkstatus*jkstatus

#Youcanuseexternalfileformountpoints.

#Itwillbecheckedforupdateseach60seconds.

#Theformatofthefileis:

/url=worker

#/examples/*=loadbalancer

#加载workers的请求处理分配文件

JkMountFileconf/uriworkermap.properties

#Addsharedmemory.

#Thisdirectiveispresentwith1.2.10and

#laterversionsofmod_jk,andisneededfor

#forloadbalancingtoworkproperly

JkShmFilelogs/jk.shm

#Addjkstatusformanagingruntimedata

<

Location/jkstatus*>

JkMountjkstatus

Orderdeny,allow

Denyfromall

Allowfrom127.0.0.1

<

/Location>

其中JkMount 

/* 

loadbalancer的意思是,把所有的请求都发给loadbalancer处理。

可以通过修改url来控制发送某些request。

3.1.5增加workers.properties文件

因为在mod_jk.conf文件中配置了mod_jk的workersFile:

JkWorkersFileconf/workers.properties,所以需要在D:

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\文件夹下新建workers.properties文件,注意这里必须和引用的文件名相同。

workers.properties的内容如下:

#定义request所要转发到的节点

#告诉JK,哪些worker是可用的

worker.list=loadbalancer,jkstatus,node1,node2

#定义节点Node1

#lbfactor定义该节点的权重,数字越大分发到该节点的request越多

#modifythehostasyourhostIPorDNSname.

worker.node1.port=8009

worker.node1.host=192.16.90.9

#server的加权比重,值越高,分得的请求越多

worker.node1.type=ajp13

worker.node1.lbfactor=1

#定义节点Node2

#modifythehostasyourhostIPorDNSname.

worker.node2.port=8009

worker.node2.host=192.16.90.87

worker.node2.type=ajp13

worker.node2.lbfactor=1

#负载配置

#server名为loadbalancer,用于负载均衡

worker.loadbalancer.type=lb

#指定分担请求的jboss

worker.loadbalancer.balance_workers=node1,node2

#粘性Session(默认是打开的)当该属性值=True(或1)时,代表Session是粘性的,即同一Session在集群中的同一个节点上处理,Session不跨越节点。

在集群环境中,一般将该值设置为False

worker.loadbalancer.sticky_session=True

worker.loadbalancer.sticky_session_force=False

#Statusworkerformanagingloadbalancer

worker.jkstatus.type=status

其中对于node的命名规则是worker.节点名.xxxx。

所以上述文件定义了两个节点:

node1和node2。

所有需要负载均衡的节点,都必须在worker.loadbalancer.balanced_workers参数中列举出来。

worker.loadbalancer.sticky_session=True表示当前使用的粘连session,要知道粘连session的具体情况,可以查看1.3.2

worker.loadbalancer.sticky_session_force=False表示如果与用户绑定的server连接不上时,自动转向别的server。

sticky_session=true表示某个请求始终由当前Tomcat处理,不会转移到其他Tomcat上。

sticky_session_force=false表示,当前Tomcat挂掉的时候,自动将Session复制到其他Tomcat上。

如果将sticky_session_force设置为true,当你关闭一台Tomcat并刷新网页,将得到503错误。

但设置为false,关闭一台Tomcat并刷新网页,被关闭的那台Tomcat上的Session会被自动复制到其他Tomcat上,系统继续正常运行。

3.1.6增加workers的请求处理分配文件

在mod_jk.con中配置了workers的请求处理分配文件,配置如下:

JkMountFileconf/uriworkermap.properties

所以需要求在D:

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\文件夹下新建uriworkermap.properties文件,其内容如下:

#所有请求都由loadbalancer这个server处理

/*=loadbalancer

#所有包含jkstatus请求的都由status这个server处理

#/jkstatus=jkstatus

#这里的"

!

”是“非”的意思。

/*.gif=loadbalancer

/*.jpg=loadbalancer

/*.png=loadbalancer

/*.css=loadbalancer

/*.js=loadbalancer

/*.htm=loadbalancer

/*.html=loadbalancer

注意:

uriworkermap.properties文件中的loadbalancer、jkstatus是在worders.properties文件中配置的名称。

3.2Jboss的配置

说明:

我使用的jboss版本为4.0.2

3.2.1增加这个属性jmvRoute="

node1"

\jboss-4.0.2-bap\server\default\deploy\jbossweb-tomcat55.sar\server.xm修改为:

Enginename="

jboss.web"

defaultHost="

localhost"

jmvRoute="

>

请注意,jmvRoute的值必须和mod_jk中的节点名字正确对应,否则无法正确路由。

另外这里有一个小bug,jboss这个属性正确的写法是jvmRoute,但是官司文档、网上都上好多人写成jmvRoute。

不配置这个属性,粘性session不会起作用,因为负载均衡器会按照这个名称记录当前的session是属于那个节点的。

3.2.2建立AJP连接

<

Connectorport="

8009"

address="

${jboss.bind.address}"

emptySessionPath="

true"

enableLookups="

false"

redirectPort="

8443"

protocol="

AJP/1.3"

/>

这个一般就有的,只要看一下端口号就行了,这个端口号对于workers.properties中的配置:

worker.node1.port=8009。

3.2.3打开JK开关

\jboss-4.0.2-bap\server\default\deploy\jbossweb-tomcat55.sar\META-INF\jboss-service.xml

attributename="

UseJK"

true<

/attribute>

4其他重要配置

4.1三种指定连接控制器的方式

发现有三种方式指定那个连接有那个控制器来处理,区别是啥?

从下面的图中可以看到URL是怎么配置的?

是JKMount还是uriworkermap

访问:

//localhost:

8081/jkstatus

4.1.1通过mock_jk.conf文件中的JkMount

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\mock_jk.conf中:

JkMount/jkstatus*jkstatus说明uri中以/jkstatus开头的连接都交由jkstatusworker处理。

4.1.2JkMount与location结合的方式

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\mock_jk.conf中

<

说明:

JkMount后面的参数表示你配置的worker名称。

4.1.3请求处理分配文件中配置

\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\conf\uriworkermap.properties中增加:

/jkstatus=jkstatus

4.2Session问题

配置负载均衡器,两个jboss服务器后,可以正常访问系统,但是发现有一个问题,例如,我使用用户zm登录后,主页完美呈现,过上一会,点击主页上的链接要转到其他页面的时候,session失效,系统跳到登录页面,查看了服务器日志,原来第一次登录的时候是在jboss1上登录的,后来点击链接的时候是访问的jboss2,而jboss1和jboss2的session是独立的,即jboss1和jboss2分别有各自的session,所以才会造成session失效。

查看session的配置方式:

worker.loa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1