- 浏览: 146266 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
liuxiang00435057:
不知道,你有这个的实现不,能发给我参考下吗,liuxiang0 ...
RBAC模型的通用权限管理系统的设计(数据模型)的扩展 -
步青龙:
这个批量上传确定可以用吗?我这怎么不行呢,官方的Demo也不行 ...
KindEditor 4.1 发布,开源HTML编辑器
集群概念
集群(Cluster)是一组计算机节点的集合,它们作为一个整体向用户提供一组网络资源。一个理想的集群对用户是透明的。用户由单一入口访问集群的资源,从来不会意识到集群中的节点。在他们看来,集群是一个系统,而非多个计算机系统。集群还应该支持随意增加和减少集群系统的节点,而这同样不会影响到用户的访问。
集群分类
习惯上,集群配置的关键是把集群分为高可用(High Availability,简称HA)集群和高性能计算(High PerfermanceComputing,简称HPC)集群两类。HA集群的目标是提高系统的可使用性(availability),即可靠性 (reliability)和可维护性(maintainability)。请不要将集群中的可使用性(availability)与UE和交互设计中的可用性(Usability)混淆。HA集群的核心是防止单点失效,这一般是通过失败转移来实现的,即在一个节点失效后由另一个节点接替服务。不丢失用户状态。HA集群的其他主要特性还包括负载均衡、session同步等。我们使用的SQL Server数据库的双机热备和Oracle的RAC都属于HA集群。HPC集群采用并行计算技术提供超大规模计算和存储能力,多数超级计算机都是HPC 集群。这不是我们关注的集群。
JBoss集群架构
JBoss集群是HA集群。JBoss集群有2种架构。一是客户端拦截器(Client-side interceptor)架构,一是负载均衡器(Load balancer)架构。客户端拦截器架构适于用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三个版本系列。JBoss 5目前只有2个beta版,实用尚需时日。JBoss 3的最后版本是2006年3月更新的3.2.8.SP1。随着JBoss 4日益成熟和JBoss 5的开发,已经停止更新1年多的Jboss 3逐渐淡出历史舞台。JBoss 4最新版本依次是4.2.1.GA、4.2.0.GA和4.0.5.GA。但官方网站提供的JBoss集群文档只更新到4.0.5 GA,所以选择JBoss 4.0.5 GA实现JBoss集群配置。
GA实现Jboss集群
Jboss各版本的安装和配置并不相同.不但Jboss 3和Jboss 4的配置文件完全不同,各小版本间也有细微的差别.在集群中,Jboss、apache、mod_jk之间也存在着特定版本才能配合的情况。所以,为避免困扰,请严格按照以下版本安装软件:
JDK 1.5.0.12
Jboss 4.0.5 GA
apache 2.2.4
apache mod_jk 1.2.23
注意,mod_jk有1.x和2.x两个版本系列。mod_jk 2.x已经停止开发,不能使用。 很多人凭直觉认为mod_jk 2.x肯定比mod_jk 1.x好,结果走了弯路。
3.Jboss集群配置实例概述
下文中, 将以实例来叙述Jboss集群配置。
该实例包含3个Jboss节点。各节点被动接收负载均衡器转发的请求。各节点间没有横向的联系。
4.Jboss集群负载均衡器配置
步骤
先安装apache,然后配置mod_jk 模块。
安装apache
下载apache代码包 ,上传到服务器。
解开代码包
tar xfvz httpd-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
make clean
make
make install
修改配置。本例中, 使用的监听端口是8080,请根据实际情况修改。
vi /usr/local/apache2/conf/httpd.conf
将Listen 80改成Listen 8080
将User daemon和Group daemon改为User apache和Group apache
删除ServerName前的#,将该行改为ServerName 127.0.0.1:8888
添加用户和用户组
groupadd apache
useradd apache –g apache
apache mod_jk配置
下载mod_jk ,将其改名为mod_jk.so ,拷贝到/usr/local/apache2/modules下。
顺便说一句,找mod_jk 模块费了 很大精力,最后才在http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/ 目录下找到。我用的是mod_jk 1.2.23,看到本文的时候,mod_jk应该有新版了。但mod_jk的向下兼容做得不太好,最好先用mod_jk 1.2.23调试,成功后再尝试换用新版mod_jk。
chmod +x /usr/local/apache2/modules/mod_jk.so
在/usr/local/apache2/conf/httpd.conf的末尾增加:
Include conf/mod_jk.conf
建立空文件/usr/local/apache2/conf/uriworkermap.properties
vi /usr/local/apache2/conf/mod_jk.conf,输入以下内容:
# Load mod_jk module
# Specify the filename of the mod_jk lib
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.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 indicates to send SSK KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat
JkRequestLogFormat “%w %V %T”
# Mount your applications
JkMount /application/* loadbalancer
# You can use external file for mount points.
# It will be checked for updates each 60 seconds.
# The format of the file is: /url=worker
# /examples/*=loadbalancer
JkMountFile conf/uriworkermap.properties
# Add shared memory.
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
JkShmFile logs/jk.shm
# Add jkstatus for managing runtime data
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
vi /usr/local/apache2/conf/workers.properties,增加以下内容:
# Define list of workers that will be used
# for mapping requests
worker.list=loadbalancer,status
# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=192.168.130.95
worker.node1.type=ajp13
worker.node1.lbfactor=1
# Define Node2
# modify the host as your host IP or DNS name.
worker.node2.port=8009
worker.node2.host= 192.168.130.99
worker.node2.type=ajp13
worker.node2.lbfactor=0
# Define Node3
# modify the host as your host IP or DNS name.
worker.node3.port=8009
worker.node3.host= 192.168.130.112
worker.node3.type=ajp13
worker.node3.lbfactor=1
# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2,node3
worker.loadbalancer.sticky_session=1
#worker.list=loadbalancer
# Status worker for managing load balancer
worker.status.type=status
说明:
worker.node1.host、worker.node2.host和worker.node3.host要改成jboss集群各机器的实际IP.
如果有更多的节点,顺序定义更多的node段,并在worker.loadbalancer.balance_workers后全部列出.
lbfactor是负载分配权重,值越大分配的负载越多.
更多配置参数详见tomcat配置说明
配置apache自动启动
ln –s /usr/local/apache2/apachectl /etc/init.d/apache
chmod 777 /etc/init.d/apache
ln –s /etc/init.d/apache /etc/rc3.d/S80apache
ln –s /etc/init.d/apache /etc/rc3.d/K20apache
ln –s /etc/init.d/apache /etc/rc4.d/S80apache
ln –s /etc/init.d/apache /etc/rc4.d/K20apache
ln –s /etc/init.d/apache /etc/rc5.d/S80apache
ln –s /etc/init.d/apache /etc/rc5.d/K20apache
5.Jboss集群节点配置
步骤
在集群的各节点上,先安装JDK,然后安装配置Jboss。
安装JDK
在http://sun.com下载JDK安装包 ,上传到服务器。
chmod +x jdk-1_5_0_12-linux-i586-rpm.bin
./jdk-1_5_0_12-linux-i586-rpm.bin
根据提示安装。
设置Java路径。
vi /etc/profile,在结尾增加:
JAVA_HOME=/usr/java/jdk1.5.0_12
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=.:$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
用JDK代替Redhat Linux AS4预装的gcj :
cd /usr/bin
ln -s -f /usr/java/jdk1.5.0_12/bin/java
ln -s -f /usr/java/jdk1.5.0_12/bin/javac
执行java –version,显示以下信息表示jdk正确安装:
java version “1.5.0_12″
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04)
Java HotSpot(TM) Client VM (build 1.5.0_12-b04, mixed mode, sharing)
安装Jboss
下载jboss-4.0.5.GA 和 jems-installer ,并上传到服务器。
完整安装Jboss 4.0.3 sp1到4.0.5.GA各版本,必须使用jems-installer 和JDK 1.5。
Jboss可以采用图形方式和命令行方式安装。图形方式安装方便,但要求服务器安装X windows,且在服务器上操作或使用支持x windows的远程终端(推荐用xmanager).
图形方式
在x windows的终端窗口下,执行java –jar jems-installer -1.2.0.GA.jar,出现Jboss安装图形界面。
选择“中文”。
下一步。
同意协议。
安装路径设置为/usr/local/jboss,下一步。
选择”all”,下一步。
选择”advance”,把Name由default改为all.其余直接按下一步。
输入Admin密码,下一步。
等待安装结束,完成。
命令行方式
java -jar jems-installer -1.2.0.GA.jar -installGroup all installpath=/usr/local/jboss
mv /usr/local/jboss/server/default /usr/local/jboss/server/all
配置Jboss
修改配置。本例中,提供服务的监听端口是8888,请根据实际情况修改。
vi /usr/local/jboss/server/all/deploy/jbossweb-tomcat55.sar/server.xml
找到 找到
vi /usr/local/jboss/server/all/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml
找到UseJK,改为true.
配置jboss自动启动
cp /usr/local/jboss/jboss_init_redhat.sh /etc/init.d/jboss
chmod 777 /etc/init.d/jboss
ln –s /etc/init.d/jboss /etc/rc3.d/S80jboss
ln –s /etc/init.d/jboss /etc/rc3.d/K20jboss
ln –s /etc/init.d/jboss /etc/rc4.d/S80jboss
ln –s /etc/init.d/jboss /etc/rc4.d/K20jboss
ln –s /etc/init.d/jboss /etc/rc5.d/S80jboss
ln –s /etc/init.d/jboss /etc/rc5.d/K20jboss
vi /etc/init.d/jboss
将JBOSS_HOME一行改为JBOSS_HOME=${JBOSS_HOME:-”/usr/local/jboss”}
将JBOSS_USER一行改为JBOSS_USER=${JBOSS_USER:-”root”}
将JAVAPTH一行改为JAVAPTH=${JAVAPTH:-”/usr/java/jdk1.5.0_12″}
将JBOSS_CONF一行改为JBOSS_CONF=${JBOSS_CONF:-”all”}
将JBOSSSH一行改为JBOSSSH=${JBOSSSH:-”$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF”}
将eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &改为eval $JBOSS_CMD_START >${JBOSS_CONSOLE} &
将$SUBIT “$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &”改为$SUBIT “$JBOSS_CMD_START >${JBOSS_CONSOLE} &”
6.启动Jboss集群
步骤
先启动负载均衡器apache,然后启动各jboss节点。各jboss节点的启动顺序没有要求。
启动负载均衡器apache
在/usr/local/apache2/bin目录下执行./httpd –k start
在/usr/local/apache2/logs/mod_jk.log中,看到apache初始化mod_jk的日志:
[Wed Aug 01 10:36:11 2007][6636:63168] [info] init_jk::mod_jk.c (2743): mod_jk/1.2.23 initialized
[Wed Aug 01 10:36:11 2007][6637:63168] [info] init_jk::mod_jk.c (2743): mod_jk/1.2.23 initialized
后面如有错误信息,是因为集群中的节点尚未启动,暂时忽略。
用netstat检查8080监听端口存在,apache启动成功.
启动Jboss节点
在集群各机器的/usr/local/jboss/bin,分别执行/run.sh –c all 1>1 2>2 &
用netstat检查8888端口监听存在.
用浏览器访问各节点的8888端口,能够看到jboss的状态.
Jboss启动成功.
集群的生命期
apache能够自动发现新启动的Jboss节点。当第一个Jboss节点启动后,自动创建Jboss集群。然后依次将其他节点加入到集群中。现在 访问http://192.168.8.246:8888,能够看到jboss的状态.说明请求已经被转发到Jboss节点。集群启动成功。
apache能够监视集群中各节点的状况,自动从集群中去掉无法访问的节点,从而保证每个请求都被响应。当集群的全部节点都停止工作,集群消亡。
集群的缺陷和粘着session
截止到现在,Jboss集群工作得很完美,除了session 。
目前配置的Jboss集群中,各节点是被动的、相互独立的,相当于增加了节点状态检测的DNS轮询,所以session也是相互独立的。当同一用户的2个请求被转发到不同的Jboss节点上时,会出现session信息假”丢失”的现象。
为此,Jboss提出粘着session (sticky session )概念。使用粘着session后,来自同一IP的请求将被发送到同一个Jboss节点,从而保证session使用的连续性。如果应用中没有使用session,则可以使用非粘着session的jboss集群。这样,负载分布更为合理。
设置方法是编辑负载均衡器的/usr/local/apache2/conf/workers.properties的worker.loadbalancer.sticky_session。设置为1使用粘着session,设置为0不使用粘着session。
使用粘着session还存在一种隐患,当某个节点发生故障时,该节点的session将全部丢失。要彻底解决这个问题,就要用到jboss session复制 。
7.Jboss集群的session复制
原理
jboss session复制是jboss session同步的一种实现。原理是在各Jboss节点间建立横向联系,每个节点都将本节点的session变化同步到其他所有节点上。
jboss的session复制与HTTP集群是相互配合、相互独立的两个系统。session复制是节点间的横向联系,HTTP集群是负载均衡器与节点的纵向联系。
配置Jboss节点
vi /usr/local/jboss/server/all/deploy/tc5-cluster.sar/META-INF/jboss-service.xml
找到<config><udp,将><config>到</config>全部注释掉.
jboss session复制有UDP和TCP两种方式.UDP采用多播方式,但问题比较多,所以采用TCP方式。
找到<config> <tcp,将><config>到</config>生效.并对该部分进行以下修改:
- 将全部down_thread和up_thread的false都改为true.
- 在<tcp bind_addr=”后填入本机的IP,比如<TCP bind_addr=”>
- 在<tcpping initial_hosts=”后填入本机和集群其他全部Jboss节点的IP[7810],比如<tcpping initial_hosts=”192.168.130.95[7810],192.168.130.99[7810],192.168.130.112[7810]”></tcpping>
其他参数还包括:
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同 步没有滞后,但效率低。
配置应用程序
在应用程序的web.xml的<web-app>段中增加<distributable />。
在jboss-web.xml中增加以下内容:
< jboss-web >
< replication-config >
< replication-trigger > SET_AND_NON_PRIMITIVE_GET </ replication-trigger >
< replication-granularity > SESSION </ replication-granularity >
< replication-field-batch-mode >
jboss4集群配置至此结束。
发表评论
-
几个主流的Java连接池整理
2012-03-31 15:45 2007池 (Pool)技术在一定层度上可以明显优化服务器应用程 ... -
apache 负载均衡设置
2012-01-19 11:21 932Apache作为LoadBalance前置机分别有三种不同的部 ... -
apache + tomcat的动静分离
2012-01-19 11:21 1098此为转载,支持原创: http://dogdogcom.blo ... -
大量并发解决方案
2012-01-18 15:07 799大型高并发高负载网站的系统架构 我在Cernet做过拨 ... -
mod_gzip:Apache的HTTP压缩优化
2012-01-18 14:44 900HTTP压缩对于纯文本内 ... -
mysql集群系统的设计实现
2012-01-18 14:39 1098您的WebApp系统是否正在使用一个MySQL的数据库 ... -
rsync搭建同步策略
2012-01-18 14:16 898对系统管理员来说,平时的工作重心应该集中在维护系统正常运转,能 ... -
使用rsync从linux到linux或到windows对网站进行镜像备份
2012-01-18 14:13 1163rsync是Linux系统下的数据 ... -
Struts2与Spring3 MVC 性能对比(一)
2011-12-09 14:17 1208转载自 http://elf8848.iteye.com ...
相关推荐
Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...
【标题】:Windows环境下JBoss集群配置详解 在IT行业中,服务器集群是一种常见的高可用性和负载均衡解决方案。本文将深入探讨如何在Windows操作系统上配置JBoss应用服务器的集群环境,帮助开发者和系统管理员更好地...
【JBoss4.2.2集群配置指南(02)】是针对JBoss应用服务器4.2.2版本的一个深入教程,旨在帮助初学者理解和掌握如何配置JBoss以实现高可用性和性能优化的企业级集群环境。这篇指南的核心内容涵盖了以下几个关键知识点: ...
Apache+Jboss(Tomcat)集群配置是一种常见的高可用性和负载均衡解决方案,它通过在前端部署Apache服务器,中间层配置多个Jboss或Tomcat应用服务器,后端连接统一的数据库来实现系统的扩展性和稳定性。以下是配置这个...
#### 三、JBoss集群配置步骤 ##### 1. 安装JBoss - 解压`jboss-4.0.4.GA.zip`至指定路径,假设为`C:\jboss-4.0.4.GA`。 - 重复此步骤,在另一台计算机上完成JBoss的安装。 ##### 2. 修改JBoss监听端口(可选) ...
6. **JbossClusts**:这可能是集群配置和服务的示例,包括部署应用、配置集群策略、设置数据存储和事务管理等。可能包含集群节点间的通信配置,如JGroups配置文件和集群服务的XML配置。 7. **JbossClustsApp**:这...
【Jboss集群配置详解】 JBoss 集群配置是一个复杂的过程,主要目的是为了提高应用程序的可用性和可扩展性。这种配置通常涉及到多个服务器实例,通过负载均衡技术来分散用户请求,确保系统的高效率和稳定性。以下是...
综上所述,JBoss集群技术涉及多个组件的协同工作,包括负载均衡器、集群节点以及相应的配置和版本选择。理解这些基本概念和实践细节对于成功构建和管理JBoss集群至关重要。在实际操作中,需要密切关注官方文档的更新...
WebLogic是Oracle公司的一款企业级Java应用服务器,与JBOSS的环境配置和管理机制有所不同,这可能导致配置、兼容性或性能问题。 描述中提到的链接指向了一篇博客文章,但具体内容无法在当前环境中查看。通常,这样...
【标题】:“Tomcat Apache JBoss集群分布” 在IT领域,服务器集群是提高应用程序可用性和可伸缩性的重要手段。本主题将深入探讨Tomcat、Apache和JBoss这三种流行的Java应用服务器如何实现集群分布,以及它们之间的...
【JBoss配置详解】 JBoss,作为一款开源的应用服务器,是Java EE平台的重要实现之一。在本文中,我们将深入探讨JBoss的配置过程,包括...理解并熟练掌握这些配置知识,将有助于你更好地管理和维护JBoss应用服务器。
集群配置主要包括节点间的通信机制、集群管理工具的选择等。通过集群可以有效地分散负载,提升系统的响应速度和处理能力。 #### 粘性Session策略 - **粘性Session策略**:在负载均衡环境中,粘性Session策略确保...
6. **集群配置**:在`domain.xml`中,可以配置JBOSS的集群。集群允许多个服务器共享状态,提供高可用性和负载均衡。配置包括成员发现、会话复制、负载均衡策略等。 7. **Web服务器集成**:JBOSS内嵌了Apache Tomcat...
#### 五、JBoss集群配置 1. **集群架构设计**:确定集群的整体架构,包括节点数量、负载均衡策略等。 2. **节点配置**:确保每个JBoss节点都具有相同的配置文件和版本号。 3. **数据共享**:实现会话共享和数据同步...
JBoss集群配置步骤** - 安装JDK并设置环境变量。 - 下载并解压JBoss 4.0.2到指定目录,设置%JBOSS_HOME%环境变量。 - 通过运行`run.bat –c all`启动JBoss服务。 - 测试访问`http://localhost:8080`以验证安装。 -...
3. **集群配置** - **理解集群原理**: 解释了集群的基本概念、优势以及常见的集群架构模式。 - **集群部署实践**: 分步骤指导如何搭建JBoss集群环境,并进行了详细的操作说明。 4. **JBoss附加组件** - **...
Keycloak集群采用的是JBOSS集群域模式。该模式下,集群分为主机(Master)和从机(Slave)。主机负责管理整个集群的配置和状态,而从机则用于提供服务。主机和从机之间通过特定的通信机制保持数据同步。 - **主机**...
根据提供的文件信息,以下是对“Jboss eap 6.1.0 应用平台配置管理文档”的知识点梳理。 ### 知识点一:JBoss Enterprise Application Platform 6.1概述 JBoss EAP(Enterprise Application Platform)6.1是Red Hat...
#### 三、JBoss集群配置 ##### 1. 启动脚本配置 首先,在`%JBOSS%\bin`目录下创建一个名为`RUN.BAT`的快捷方式,并设置以下两个参数: - `-C ALL`:启动所有服务。 - `-B <IP>`:指定本机IP地址,以便于在局域网内...