EOS5+JBoss负载均衡方案Word文件下载.docx

上传人:b****6 文档编号:18613675 上传时间:2022-12-29 格式:DOCX 页数:15 大小:165.58KB
下载 相关 举报
EOS5+JBoss负载均衡方案Word文件下载.docx_第1页
第1页 / 共15页
EOS5+JBoss负载均衡方案Word文件下载.docx_第2页
第2页 / 共15页
EOS5+JBoss负载均衡方案Word文件下载.docx_第3页
第3页 / 共15页
EOS5+JBoss负载均衡方案Word文件下载.docx_第4页
第4页 / 共15页
EOS5+JBoss负载均衡方案Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

EOS5+JBoss负载均衡方案Word文件下载.docx

《EOS5+JBoss负载均衡方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《EOS5+JBoss负载均衡方案Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

EOS5+JBoss负载均衡方案Word文件下载.docx

5.1启动EOS5.3.5Server时报错13

5.264位UNIX下安装Apache碰到的一些问题14

6附录15

6.1一台机器运行两个EOSforJBoss实例需要修改的端口15

6.2在unix下编译安装Apache17

6.3关闭Apache的access.log日志18

1文档摘要

1.1文档分类

部署上线技术方案

1.2关键字/Tag

EOS

JBoss

负载均衡

1.3摘要

介绍如何搭建EOS+JBoss+Apache负载均衡(非集群)环境。

1.4作者、协作者及评审人员

1.5定义、首字母缩写词及缩略语

负载均衡:

当服务请求发送到集群时,能根据一定的规则选择由集群中的某一台服务器来处理该请示。

2概述

2.1问题或场景

一般的J2EE集群方案需要实现Web负载均衡、HTTPSession复制、EJB集群等等,但某些场景下只需要用到Web负载均衡,而且JBoss集群配置比较麻烦,HTTPSession复制又会影响性能,这时可以不需要配置集群,只需要两个JBoss单机实例做负载均衡即可。

2.2目的

通过本文可以了解如何搭建EOS+JBoss+Apache负载均衡(非集群)环境。

2.3参考资料

2.4工具和技术

2.5系统运行环境

EOS5.3

JBoss3.2.5  (EOS安装包自带)

3解决方案

3.1概述

本方案前端使用Apache的SessionSticky方式转发请求到后端的两个JBoss单机实例,实现WEB应用负载均衡,两个JBoss实例之间是互相单独存在的。

SessionSticky的原理是JBoss实例(实际上是Tomcat)响应浏览器请求的时候,在SessionID后面附上了一个自己实例的标识。

浏览器后续再发送请求的时候,会把SessionID连同这个标识一起送过来。

Apache从SessionID里面拿到这个标识后,就知道应该将请求转发给哪个JBoss实例。

也就是说,在SessionSticky时,浏览器发送第一次请求到某JBoss实例,Apache会将后续所有的请求都转发给该JBoss实例。

3.2部署步骤

3.2.1安装部署第一个JBoss实例

1、安装EOS

按《PrimetonEOS5.3产品安装指南》中【安装EOS社区版】章节安装EOSforJBoss版本即可,本文中不做详细说明。

2、配置jvmRoute

打开jboss-3.2.5\server\default\deploy\jbossweb-tomcat50.sar\server.xml文件,找到如下配置:

<

Enginename="

jboss.web"

defaultHost="

localhost"

jvmRoute="

server1"

>

<

LoggerclassName="

org.jboss.web.tomcat.Log4jLogger"

verbosityLevel="

WARNING"

category="

org.jboss.web.localhost.Engine"

/>

Hostname="

autoDeploy="

false"

deployOnStartup="

deployXML="

增加如上蓝色标识的配置:

“jvmRoute="

”。

该配置给实例指定了一个标识,JBoss会在SessionID后面加上该标识,Apache就可以根据该标识识别请求应该发给哪个JBoss实例。

3.2.2安装部署第二个JBoss实例

1、先安装EOSforJBoss版本,可参看上一章节。

server2"

注意,第二个实例指定的标识是“server2”,不同于第一个实例指定的标识“server1”,因为只有标识唯一,Apache才能根据该标识来识别请求应该发给哪个JBoss实例。

如果是在同一台机器上部署本方案,那么需要修改部分冲突端口才能使用,参看附录6.1章节。

3.2.3安装部署Apache2.2

本方案中Apache不使用传统的JK方式与JBoss连接,而使用mod_proxy方式。

Apache可以通过自带的mod_proxy_balancer模块使用代理技术来连接JBoss(Tomcat),可以选择http_proxy、ajp_proxy两种连接方式。

mod_proxy_balancer是Apache2.1版本以后提供的,而Apache2.2.x版本对该模块进行了重写,大大的增强了其功能和稳定性,所以建议使用Apache2.2.x以后的版本。

另外http_proxy和ajp_proxy的连接方式比JK的连接方式配置更简单、方便。

3.2.3.1安装

Apache的安装包可以从http:

//www.apache.org下载。

在Windows下安装很容易,在此不做更多描述。

在UNIX下安装就麻烦多了,一般是使用Apache的源码编译安装。

安装时需要注意,Apache默认是不会安装mod_proxy_balancer模块的,需要在编译时指定。

可参看附录6.2章节。

3.2.3.2配置

打开Apache安装路径下的conf/httpd.conf主配置文件,修改配置。

Ø

加载mod_proxy_balancer模块

mod_proxy_balancer模块默认是注释掉不使用的,所以首先需要取消注释。

找到如下配置(如果没有就手工添加),删除前面的“#”符号:

#LoadModuleproxy_modulemodules/mod_proxy.so

#LoadModuleproxy_ajp_modulemodules/mod_proxy_ajp.so

#LoadModuleproxy_balancer_modulemodules/mod_proxy_balancer.so

#LoadModuleproxy_connect_modulemodules/mod_proxy_connect.so

#LoadModuleproxy_ftp_modulemodules/mod_proxy_ftp.so

#LoadModuleproxy_http_modulemodules/mod_proxy_http.so

配置负载均衡实例成员

在配置文件最后增加如下配置:

ProxyRequestsOff

ProxyPass/balancer:

//sticky-cluster/stickysession=JSESSIONID

<

Proxybalancer:

//sticky-cluster>

BalancerMemberhttp:

//192.168.0.20:

8080route=server1

//192.168.0.21:

8080route=server2

/Proxy>

以上配置配置了两个负载均衡实例,并指定了使用StickySession,使用的是http_proxy连接方式。

注意BalancerMember中route指定的标识是JBoss实例中Server.xml配置的jvmRoute标识(参看3.3.1和3.3.2章节中的配置)。

上面是http_proxy连接方式配置,再来看看ajp_proxy连接方式的配置:

BalancerMemberajp:

8009route=server1

8009route=server2

对比http_proxy和ajp_proxy两种连接方式的配置,不同的是BalancerMember中指定的协议和端口。

协议和端口要与Tomcat的Server.xml中的配置相对应:

<

Servicename="

className="

org.jboss.web.tomcat.tc5.StandardService"

!

--AHTTP/1.1Connectoronport8080-->

Connectorport="

8080"

address="

${jboss.bind.address}"

maxThreads="

150"

minSpareThreads="

25"

maxSpareThreads="

75"

enableLookups="

redirectPort="

8443"

acceptCount="

100"

connectionTimeout="

20000"

disableUploadTimeout="

true"

URIEncoding="

GBK"

--AAJP1.3Connectoronport8009-->

8009"

debug="

0"

protocol="

AJP/1.3"

如上所示,Server.xml中前面配置的是HTTP的端口,后面配置的是AJP的端口。

在负载均衡方案中,http_proxy和ajp_proxy两种连接方式任意选择一种使用。

3.2.4配置EOS工作流缓存同步

负载均衡方案中,各个JBoss实例虽然是独立存在的,但是由于EOS工作流使用了数据缓存,是需要配置缓存同步的。

如果系统中没有使用到工作流,本章节的操作步骤可以忽略。

因为EOS5.3的工作流缓存同步方案配置比较复杂,并且存在BUG,请将EOS升级到5.3.5版本后,按下面EOS5.3.5版本的工作流缓存同步配置方案配置。

【步骤1】:

打开工作流缓存同步开关:

打开所有JBoss实例成员的eosserver/config/wfconfig.xml文件,找到如下配置:

modulename="

cluster"

groupname="

<

configValuekey="

enable"

true<

/configValue>

默认配置是false,这里需要修改为true。

【步骤2】:

重新启动JBoss实例

因为集群配置还没有完成,所以工作流引擎不能启动成功,控制台会有如下工作流引擎启动失败提示,这是正常现象。

【步骤3】:

增加工作流JBoss实例

将所有JBoss实例成员(含本机)添加到成员列表中。

需要登录eos管理控制台来操作,如下面图例所示:

如上所示,添加了两个JBoss成员实例。

其中配置的RMI是在eosserver/config/eosconfig.xml中配置的,如下所示:

config"

remoteCallerPort"

30614<

【步骤4】:

再次重启JBoss实例

上一步骤的配置需要重启之后才能生效。

重启之后,控制台上就不会再有出错信息了,并且可以看到工作流引擎启动成功的提示,如下所示:

再看EOS管理控制台中的成员管理配置,本机成员的状态是启动的了。

注一:

以上操作只在一个JBoss成员实例上操作即可,因为配置是保存在数据库WFSystemInfo表中,所有连接到数据库的JBoss成员实例都可以读取得到。

注二:

这里只是简单地介绍工作流的缓存同步配置,更多的配置说明请参看文档《EOS5.3.5工作流集群配置说明》。

3.3启动并验证

1、启动JBoss实例:

执行安装路径下的run.bat(Windows)或者run.sh(UNIX)启动JBoss实例。

2、启动Apache:

Windows下执行安装路径下bin/apache.exe启动。

UNIX下,进入安装路径的bin目录,执行命令“./apache-kstart”启动。

3、通过Apache访问系统;

4、登录EOS管理控制台查看在线用户监控信息:

5、停止该JBoss实例,再继续操作,此时页面应该会报错,刷新页面将会返回到登录页面。

报错是因JBoss实例已经不可用;

返回登录页面是因为请求被转发到其它的JBoss实例,由于没有实现Session复制,其它的JBoss实例上并没有用户的Session信息,所以被EOS转到登录页面。

4注意事项

4.1JBoss实例停止后用户需要重新登录

如果某个JBoss实例停止后,已经登录到这个JBoss实例的用户的请求将被转发其它的JBoss实例,由于没有实现Session复制,其它的JBoss实例上并没有这些用户的Session信息,所以这些用户需要重新登录才能操作系统。

4.2发布EOS构件包

由于EOS5版本不支持集群发布构件包,所以发布EOS构件包时,需要给每个JBoss成员实例都发布一次。

5常见问题

5.1启动EOS5.3.5Server时报错

场景:

启动时报类似如下的错误:

WorkflowEnginefailed!

com.primeton.eos.wf.service.api.WFRuntimeException:

com.primeton.eos.wf.service.api.WFRuntimeException:

Localhostisnotamemberincluster.

解决方案:

首先确定已经按3.3.4章节完成了EOS工作流缓存同步配置;

然后再检查操作系统的hosts中有没有在127.0.0.1的前面声明本机IP、机器名。

5.264位UNIX下安装Apache碰到的一些问题

1、编译时需要指定参数

操作系统为64位,需要删除原先配置,加上参数“--enable-lib64--libdir=/usr/lib64”来编译。

32位则无需加。

如下所示:

#tarzxvfhttpd-2.0.63.tar.gz

#cd/home/software/httpd-2.0.63

#rm-rf./configure

#rm-rf./srclib/apr-util/configure

#./buildconf

#./configure--enable-lib64--libdir=/usr/lib64--enable-MODULE=shared 

 

--enable-so--with-mpm=worker--prefix=/usr/local/apache2.0.63

#make

#makeinstall

2、安装apache时报错:

configure:

error:

CannotuseanexternalAPRwiththebundledAPR-utilq

需要安装apr和apr-util:

下载地址:

http:

//apache.justdn.org/apr/

安装apr例如:

tar-zxvfapr-1.2.12.tar.gz

cdapr-1.2.12

./configure&

&

make&

makeinstall

安装apr-util例如:

tar-zxvfapr-util-1.2.12.tar.gz

cdapr-util-1.2.12

./configure--with-apr=/usr/local/apr&

make&

先安装apr,安装apr-util时需要指定apr的路径。

3、安装apr-util时报错:

/usr/lib/libexpat.so:

couldnotreadsymbols:

Fileinwrongformat

办法一:

是打开Makefile找到-lexpat这么一个参数,修改为:

/usr/lib64/libexpat.la即可。

办法二:

编译时增加编译参数--with-expat=builtin。

可能在64位服务器下编译脚本在定位系统expat支持时有些问题。

使用自带的expat来编译就不存在这个问题了。

办法三:

备份/usr/lib/目录下的libexpat*,然后拷贝/usr/lib64/目录下的libexpat*至/usr/lib/目录。

6附录

6.1一台机器运行两个EOSforJBoss实例需要修改的端口

如果一台机器运行两个EOSforJBoss实例时,因为都使用了相同的端口,当启动了一个实例后,再启动另外一个实例时,就会报端口已被占用的异常。

【解决方案和步骤】

通过修改JBoss和EOS的端口配置可以解决端口占用的问题。

1、修改jboss-3.2.5\server\default\conf\jboss-service.xml中的1098,1099,4444,4445,8083端口。

端口配置在配置文件中位置如下:

...

mbeancode="

org.jboss.web.WebService"

name="

jboss:

service=WebService"

attributename="

Port"

8083<

/attribute>

org.jboss.naming.NamingService"

service=Naming"

1099<

RmiPort"

1098<

org.jboss.invocation.jrmp.server.JRMPInvoker"

service=invoker,type=jrmp"

RMIObjectPort"

4444<

org.jboss.invocation.pooled.server.PooledInvoker"

service=invoker,type=pooled"

ServerBindPort"

4445<

2、jboss-3.2.5\server\default\conf\jboss-minimal.xml中的1099端口,注意要改成跟jboss-service.xml中的1099一样的。

/mbean>

3、jboss-3.2.5\server\default\deploy\jbossweb-tomcat50.sar\server.xml中8080,8009,8081端口。

redi

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

当前位置:首页 > 高等教育 > 工学

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

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