jboss 430集群配置文档.docx

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

jboss 430集群配置文档.docx

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

jboss 430集群配置文档.docx

jboss430集群配置文档

jboss4.3.0集群配置文档

集群概念

  集群(Cluster)是一组计算机节点的集合,它们作为一个整体向用户提供一组网络资源。

一个理想的集群对用户是透明的。

用户由单一入口访问集群的资源,从来不会意识到集群中的节点。

在他们看来,集群是一个系统,而非多个计算机系统。

集群还应该支持随意增加和减少集群系统的节点,而这同样不会影响到用户的访问。

集群分类

  习惯上,集群配置的关键是把集群分为高可用(HighAvailability,简称HA)集群和

高性能计算(HighPerfermanceComputing,简称HPC)集群两类。

HA集群的目标是提高系统的可使用性(availability),

即可靠性(reliability)和可维护性(maintainability)。

请不要将集群中的可使用性(availability)与

UE和交互设计中的可用性(Usability)混淆。

HA集群的核心是防止单点失效,这一般是通过失败转移来实现的,

即在一个节点失效后由另一个节点接替服务。

不丢失用户状态。

HA集群的其他主要特性还包括负载均衡、session同步等。

我们使用的SQLServer数据库的双机热备和Oracle的RAC都属于HA集群。

HPC集群采用并行计算技术提供超大规模计算和存储能力,

多数超级计算机都是HPC集群。

这不是我们关注的集群。

JBoss集群架构

  JBoss集群是HA集群。

JBoss集群有2种架构。

一是客户端拦截器(Client-sideinterceptor)架构,

一是负载均衡器(Loadbalancer)架构。

客户端拦截器架构适于用C/S结构,负载均衡器架构适用于B/S结构。

本文只叙述负载均衡器架构的JBoss集群。

  

负载均衡器架构由负载均衡器和n个集群节点组成。

每个节点是一个JBoss服务器实例。

负载均衡器是全局唯一的前置机,

全部用户请求都发到负载均衡器,由其转发到各节点。

当负载均衡器发现一个节点失效后,会将请求转发到另一个节点上,

从而保证服务得以延续。

负载均衡器同时负责加权静态负载均衡调度。

总之,负载均衡器的健康程度决定了集群的全局健康度,

负载均衡器失败将导致集群全部失效。

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

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

JBoss有自己的负载均衡器,但效果不佳,官方文档没有介绍,

几乎没有人使用。

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

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

mod_jk是apache的一个插件,

负责apache与tomcat之间的通讯,是JBoss集群配置(tomcat集群)的关键。

Jboss版本的选择

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

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

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

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

JBoss4最新版本依次是4.2.1.GA、4.2.0.GA和4.0.5.GA。

但官方网站提供的JBoss集群文档只更新到4.0.5GA,所以选择JBoss4.0.5GA实现JBoss集群配置。

GA实现Jboss集群

Jboss各版本的安装和配置并不相同.不但Jboss3和Jboss4的配置文件完全不同,各小版本间也有细微的差别.

在集群中,Jboss、apache、mod_jk之间也存在着特定版本才能配合的情况。

所以,为避免困扰,请严格按照以下版本安装软件:

JDK1.5.0.12

Jboss4.0.5GA

apache2.2.4

apachemod_jk1.2.23

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

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

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

3.Jboss集群配置实例概述

下文中,将以实例来叙述Jboss集群配置。

该实例包含3个Jboss节点。

各节点被动接收负载均衡器转发的请求。

各节点间没有横向的联系。

----------------------------------Apache配置-开始-----------------------------

1.Jboss集群负载均衡器配置

步骤-----如果系统自带可不用安装。

----------

先安装apache,然后配置mod_jk模块。

安装apache

下载apache代码包,上传到服务器。

解开代码包

tarxfvzhttpd-2.2.4.tar.gz

编译

./configure-prefix=/usr/local/apache2-enable-module=so-enable-module=setenvif-enable-module=rewrite-enable-rewrite=shared-enable-proxy=shared-with-mpm=prefork-enable-so-enable-auth-anon-enable-file-cache=shared-enable-cache=shared-enable-disk-cache=shared-enable-mem-cache=shared

makeclean

make

makeinstall

修改配置。

本例中,使用的监听端口是8001,请根据实际情况修改。

vi/usr/local/apache2/conf/httpd.conf

路径可能是这个:

/etc/httpd/conf/httpd.conf

将Listen80改成Listen8001

将Userdaemon和Groupdaemon改为Userapache和Groupapache

删除ServerName前的#,将该行改为ServerName127.0.0.1:

8001

添加用户和用户组

groupaddapache

useraddapache-gapache

2.apachemod_jk安装与配置

顺便说一句,找mod_jk模块费了很大精力,最后才在http:

//www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/

目录下找到。

我用的是mod_jk1.2.23,看到本文的时候,mod_jk应该有新版了。

但mod_jk的向下兼容做得不太好,

最好先用mod_jk1.2.23调试,成功后再尝试换用新版mod_jk。

3.

生成mod_jk.so文件

[root@]#tarzxvftomcat-connectors-1.2.18-src.tar.gz

#cdtomcat-connectors-1.2.18-src

#cdnative

#./configure--with-apxs=/usr/local/apache2/bin/apxs

#make

#makeinstall

[root@localhostnative]#cdapache-2.0/

[root@localhostapache-2.0]#ls

mod_jk.so

[root@localhostapache-2.0]#cpmod_jk.so/usr/local/apache2/moduels

[root@localhostapache-2.0]#cp../conf/workers.properties/usr/local/apache2/conf

chmod+x/usr/local/apache2/modules/mod_jk.so

4.

在/usr/local/apache2/conf/httpd.conf的末尾增加:

Includeconf/mod_jk.conf

并解注释:

ServerNamehostip:

80

5.

建立空文件/usr/local/apache2/conf/uriworkermap.properties

vi/usr/local/apache2/conf/mod_jk.conf,输入以下内容:

#loadmod_jkmodule

#Specifythefilenameofthemod_jklib

LoadModulejk_modulemodules/mod_jk.so

#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

JkMount/application/*loadbalancer

#Youcanuseexternalfileformountpoints.

#Itwillbecheckedforupdateseach60seconds.

#Theformatofthefileis:

/url=worker

#/examples/*=loadbalancer

JkMountFileconf/uriworkermap.properties

#Addsharedmemory.

#Thisdirectiveispresentwith1.2.10and

#laterversionsofmod_jk,andisneededfor

#forloadbalancingtoworkproperly

JkShmFilelogs/jk.shm

#Addjkstatusformanagingruntimedata

JkMountstatus

Orderdeny,allow

#Denyfromall

Allowfromall

Allowfrom127.0.0.1

6.

vi/usr/local/apache2/conf/workers.properties,增加以下内容:

#Definelistofworkersthatwillbeused

#formappingrequests

worker.list=loadbalancer,node1,node2

#DefineNode1

#modifythehostasyourhostIPorDNSname.

worker.node1.port=8009

worker.node1.host=65.32.0.197

worker.node1.type=ajp13

worker.node1.lbfactor=1

worker.node1.redirect=node2

worker.node1.cachesize=10

#DefineNode2

#modifythehostasyourhostIPorDNSname.

worker.node2.port=8009

worker.node2.host=65.32.0.198

worker.node2.type=ajp13

worker.node2.lbfactor=0

worker.node2.redirect=node1

worker.node2.cachesize=10

#DefineNode3

#modifythehostasyourhostIPorDNSname.

###worker.node3.port=8009

###worker.node3.host=192.168.130.112

###worker.node3.type=ajp13

###worker.node3.lbfactor=1

#Load-balancingbehaviour

worker.loadbalancer.type=lb

#worker.loadbalancer.balance_workers=node1,node2,node3

worker.loadbalancer.balance_workers=node1,node2

worker.loadbalancer.sticky_session=1

#worker.list=loadbalancer

#Statusworkerformanagingloadbalancer

worker.status.type=status

说明:

worker.node1.host、worker.node2.host和worker.node3.host要改成jboss集群各机器的实际IP.

如果有更多的节点,顺序定义更多的node段,并在worker.loadbalancer.balance_workers后全部列出.

lbfactor是负载分配权重,值越大分配的负载越多.worker.node3.redirect=node1是node3失效后

由node1接替。

7.在/etc/httpd/conf下新建文件uriworkermap.properties内容为:

/*=loadbalancer

/jmx-console=loadbalancer

/jmx-console/*=loadbalancer

/web-console=loadbalancer

/web-console/*=loadbalancer

/all*=loadbalancer

#jboss模式名称

/node*=loadbalancer

/*.gif=loadbalancer

/*.jpg=loadbalancer

/*.png=loadbalancer

/*.js=loadbalancer

/*.htm=loadbalancer

/*.html=loadbalancer

/*.jsp=loadbalancer

----------------------------------Apache配置-结束-----------------------------

----------------------------------Apache配置-细节讲述-----------------------------

1.启动Jboss集群

步骤

先启动负载均衡器apache,然后启动各jboss节点。

各jboss节点的启动顺序没有要求。

启动负载均衡器apache

在/usr/local/apache2/bin目录下执行./httpd-kstart

也可以servicehttpdstart|restart|stop|status

然后登陆:

localhost:

80查看是否启动。

集群的生命期

apache能够自动发现新启动的Jboss节点。

当第一个Jboss节点启动后,自动创建Jboss集群。

然后依次将其他节点加入到集群中。

现在访问http:

//192.168.8.246:

80,能够看到jboss的状态.说明请求已经被转发到Jboss节点。

集群启动成功。

apache能够监视集群中各节点的状况,自动从集群中去掉无法访问的节点,从而保证每个请求都被响应。

当集群的全部节点都停止工作,集群消亡。

集群的缺陷和粘着session

截止到现在,Jboss集群工作得很完美,除了session。

目前配置的Jboss集群中,各节点是被动的、相互独立的,相当于增加了节点状态检测的DNS轮询,所以session也是相互独立的。

当同一用户的2个请求被转发到不同的Jboss节点上时,会出现session信息假”丢失”的现象。

为此,Jboss提出粘着session(stickysession)概念。

使用粘着session后,来自同一IP的请求将被发送到同一个Jboss节点,

从而保证session使用的连续性。

如果应用中没有使用session,则可以使用非粘着session的jboss集群。

这样,负载分布更为合理。

设置方法是编辑负载均衡器的/usr/local/apache2/conf/workers.properties的worker.loadbalancer.sticky_session。

设置为1使用粘着session,设置为0不使用粘着session。

使用粘着session还存在一种隐患,当某个节点发生故障时,该节点的session将全部丢失。

要彻底解决这个问题,就要用到jbosssession复制。

2.Jboss集群的session复制

原理

jbosssession复制是jbosssession同步的一种实现。

原理是在各Jboss节点间建立横向联系,

每个节点都将本节点的session变化同步到其他所有节点上。

jboss的session复制与HTTP集群是相互配合、相互独立的两个系统。

session复制是节点间的横向联系,

HTTP集群是负载均衡器与节点的纵向联系。

----------------------------------jboss配置-开始-----------------------------

四、配置JBOSS4.3(在10.0.26.163和10.0.26.164)

1.安装配置:

1个jboss,163是all,164是node2,http使用8080端口,AJP使用8009;

#修改server.xml

vi$JBOSS_HOME/server/all/deploy/jboss-web.deployer/server.xml(node2同理)

#修改

#修改

2.修改$JBOSSE_HOME/server/all/deploy/jboss-web.deployer/server.xml文件,将Engine修改如下(node2同理):

给它增加一个jvmRoute属性:

3.修改$JBOSS_HOME/server/all/deploy/jboss-web.deployer/META-INF/jboss-service.xml,

找到false

改为true(node2同理)

4.修改$JBOSS_HOME/server/all/deploy/jboss-web.deployer/ROOT.war/WEB-INF/web.xml,

紧跟着下面添加,可以在应用配置,此处可以不用配置。

5.修改$JBOSS_HOME/server/all/deploy/jboss-web-cluster.sar/META-INF/jboss-service.xml

找到全部注释掉.

jbosssession复制有UDP和TCP两种方式.UDP采用多播方式,但问题比较多,所以采用TCP方式。

找到生效.并对该部分进行以下修改:

将全部down_thread和up_thread的false都改为true.

其他参数还包括:

ClusterName是集群名称,比如partition1.

在同一局域网内,可以存在多个jboss集群,根据集群名称区分它们.所以,集群中各节点配置的集群名称必须一致,

而机器IP则没有特殊要求,只要它们能相互连通.理论上,可以在一台机器上安装多个Jboss实例,分属于不同的集群.

但这会极大地增加复杂度,是不好的配置方式.

IsolationLevel是隔离等级.

可选值包括:

SERIALIZABLE,REPEATABLE_READ,READ_COMMITTED,READ_UNCOMMITTED,和NONE。

这里的隔离级别和数据库的隔离级别有同样的含义,对于大多数WEB应用程序来讲通常设置为REPEATABLE_READ。

CacheMode是缓存模式。

由于session复制是通过缓存实现的,所以实际上是复制模式.可选值包括:

REPL_SYNC和REPL_ASYNC,

确定改变是应该同步还是异步复制。

缺省值是REPL_ASYNC.使用同步复制,确保在请求完成之前传播改变,

session同步没有滞后,但效率低。

下面要做的是基于request的cluster,也就让各个节点之间互相复制session状态。

有两种复制模式,同步与异步。

使用同步的方式,jboss会把session复制的操作和对request的响应放到一个应用事务(applicationtransaction),session复制完

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

当前位置:首页 > 初中教育 > 初中作文

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

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