`

JBOSS负载均衡

阅读更多
JBOSS 4.23GA+Apache 2.2.11 负载均衡详细介绍
1、     JBoss 4.2.3GA

2、     Apache 2.2.11

3、    mod_jk-1.2.28-httpd-2.2.3.so



一、配置Apache

1、     请确认%apache%\modules下已经有 mod_jk-1.2.28-httpd-2.2.3.so文件,并且改名为mod_jk.so。
2、     修改%apache%\conf\httpd.conf     在文件末尾添加:    Include conf/mod_jk.conf
3、     在%apache%\conf下新建文件     mod_jk.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.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 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下新建文件     workers.properties         其内容为:


worker.list=loadbalancer,node1,node2

# Define the first node...
worker.node1.port=8009
worker.node1.host=10.0.0.114
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.local_worker=1
worker.node1.cachesize=10
worker.node1.cache_timeout=600
worker.node1.reply_timeout=100
worker.node1.socket_timeout=300

# Define the first node...
worker.node2.port=9711
worker.node2.host=10.0.0.114
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.local_worker=1
worker.node2.cachesize=10
worker.node2.cache_timeout=600
worker.node2.reply_timeout=100
worker.node2.socket_timeout=300


# Now we define the load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=node1,node2
worker.loadbalancer.sticky_session=0









reply_timeout:此属性告诉web server在接到远端的Tomcat已死并实时的切换到集群中的另外一个Tomcat的回应之前等待一段时间。默认情况下web server将永远等待。属性值为web server要等待回应的时间(以ms为单位),所以如果具有运行时间较长的servlet时设置其值要小心。此属性在jk 1.2.6版本被增加进来,以求避免Tomcat的死机和在支持ajp13的servlet引擎上发生的问题。此属性默认为失效的。



cache_timeout:本属性用于声明JK在cache中保留一个打开的socket的时间,它对减少web serer的线程数有所帮助。众所周知,一个身背重负的web server(例如apache)建立childs/threads来处理负载,而当负载减少时它将销毁无用的childs/threads。每个 child在转发请求给Tomcat时要打开一个ajp13连接,而在Tomcat那一端也将建立一个ajp13线程与之通讯。



socket_timeout:此属性说明连接在未激活的状况下持续多久,web server将主动切断之。这是一个使Tomcat端的陈旧线程不致过多的好方法,但是也带来了在下一次请求到来时需要重新打开socket的开销。此属性与cache_timeout有类似的功效,但是它工作在non-cache模式。


本例采用一台计算机同时启动2个jboss的方案实现的。所以ip一样,AJP/1.3端口不一样。JBoss的Web集群使用apache的 mod_jk,浏览器请求apache服务器,apache服务器根据workers.properties中的配置进行request分发,apache服务器和Jboss中的Tomcat可以用ajp1.3进行通信的,request通过ajp1.3协议的包装被发送到 Jboss,Jboss执行后返回结果。

其中对于node的命名规则是worker.节点名.xxxx。所以上述文件定义了两个节点:node1和node2。8009端口是jboss默认的ajp端口,另外需要注意的是worker.node2.lbfactor参数,它是节点的负载加权,它的值越大,获得负载的机会就越大。可以根据node的硬件性能进行调整。

上面的文件中配置了两个节点,name分别为 node1,node2,指定两个节点的IP,并在worker.loadbalancer.balance_workers中指定所有的node列表,worker.loadbalancer.sticky_session设置是否启用“粘着的”Session,sticky session是指来自同一IP的请求将被发送到同一个Jboss节点,sticky session设为0的话同一session的不同请求会被负载均衡分发到不同的jboss节点上。


5、在APACHE_HOME/conf/目录创建新文件uriworkermap.properties,

/jmx-console=loadbalancer
/jmx-console/*=loadbalancer
/web-console=loadbalancer
/web-console/*=loadbalancer



二、配置两个JBOSS同时启动。

(1)需要修改的端口:

Step 1. 修改JBOSS_HOME/server/default/conf/jboss-service.xml

    查找到:mbean - ServiceBindingManager,将其注释去掉



Step 2. 修改JBOSS_HOME/docs/examples/binding-manager/sample-bindings.xml中ports-01端口,避免出现 port 冲突的问题



Step 3. 修改JBOSS_HOME/server/default/deploy/jboss-web.deployer/server.xml中的端口

    修改 HTTP/1.1 Connector port

    修改 AJP 1.3 Connector port

Step 4. 修改JBOSS_HOME/server/default/deploy/jms/uil2-service.xml

    修改 ServerBindPort

三、配置JBOSS 4.2.3GA

1、修改JBOSS_HOME/server/default/deploy/jboss-web.deployer/server.xml文件,将Engine 修改如下:

<Engine name="jboss.web" defaultHost="localhost">

给它增加一个jvmRoute属性:

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">  

请注意,jvmRoute的值必须和mod_jk中的节点名字正确对应,否则无法正确路由。Cluster中的所有节点都应该做相应的配置。

2、修改 JBOSS_HOME/server/default/deploy/ jboss-web.deployer /META-INF/jbossservice.xml    找到<attribute name="UseJK">该为:

<attribute name="UseJK">true</attribute>

3、修改JBOSS_HOME\default\deploy\jboss-web.deployer\ROOT.war\WEB-INF\web.xml

在<web-app>紧跟着下面添加 <distributable/>



4、在default\deploy\jboss-web-cluster.sar\META-INF\jboss-service.xml

    下面要做的是基于request的cluster,也就让各个节点之间互相复制session状态。有两种复制模式,同步与异步。使用同步的方式,jboss会把session复制的操作和对request的响应放到一个应用事务(application transaction),session复制完成后才去处理request。异步复制则发送session复制的消息后马上处理 request,session复制则会稍有延迟。但是在多框架的web页面中,这样的集群方式会有问题。由于frame在同一时间发出多个 request,会造成一些混乱,这也是采用基于用户的集群方式的原因之一。


<attribute name="CacheMode">REPL_ASYNC</attribute>

REPL_ASYNC(异步)或者REPL_SYNC(同步)。
在这个文件下面一点,还有一个config标签,里面指定了各个节点在进行session复制的时候如何通信,有udp和tcp两种可选,如果使用udp 方式,那么应该将udp的lookback属性指定为true,因为windows上有一个叫做media sense的东西会影响udp multicast。注意如果你不了解multi address的ip规则,请不要随便修改mcast_addr的值。如果采用tcp方式的话,应该指定bind_addr的值为本机ip,并且在 TCPPING标签的initial_hosts属性中列出所有节点,格式是”机器名[端口号]”,比如在我们的例子中,就应该这样配置tcp(以其中一个节点为例):

<config>
<TCP bind_addr="172.16.0.116" start_port="7810" loopback="true"/>
<TCPPING initial_hosts="172.16.0.116[7810],172.16.32.88[7810]" port_range="3" timeout="3500"
num_initial_members="3" up_thread="true" down_thread="true"/>
<MERGE2 min_interval="5000" max_interval="10000"/>
<FD shun="true" timeout="2500" max_tries="5" up_thread="true" down_thread="true" />
<VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false" />
     <pbcast.NAKACK down_thread="true" up_thread="true" gc_lag="100"
          retransmit_timeout="3000"/>
     <pbcast.STABLE desired_avg_gossip="20000" down_thread="false" up_thread="false" />
     <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="false"
print_local_addr="true" down_thread="true" up_thread="true"/>
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>
</config>

     JBoss的clustering版主建议尽量使用udp。不过在Sobey内部,建议使用tcp方式,经测试可能有不明物体在影响udp通信,导致Timeout异常。

5、 Jboss的配置完成了,最后需要在web应用中增加配置信息,控制session复制的粒度。在WEB-INF\     jboss-web.xml中增加以下内容:

<replication-config>
     <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
     <replication-granularity>SESSION</replication-granularity>
   </replication-config>


6、在web-inf中添加jboss-web.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
    "-//JBoss//DTD Web Application 4.2//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
<replication-config>
   <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
    <replication-granularity>SESSION</replication-granularity>
    <replication-field-batch-mode>true</replication-field-batch-mode>
</replication-config>
<context-root>/</context-root>
</jboss-web>


加<context-root>/</context-root>后,不用输入项目名称就可以访问改项目。例如

http://localhost/jobssTest/index.jsp,加<context-root>/</context-root>后,只需输入http://localhost/就可以访问该项目。
















四、配置default目录,让该目录支持集群。


将如下文件从%JBoss_Home%\server\all\lib里面拷到%JBoss_Home%\server\default\lib目录下:
jbossha.jar(加载org.jboss.ha.framework.server.ClusterPartition)
jgroups.jar(JBoss集群底层通信协议)
jboss-cache-jdk50.jar(加载org.jboss.cache.aop.TreeCacheAop)

将如下文件从%JBoss_Home%\server\all\deploy里面拷到%JBoss_Home%\server\default\deploy目录下:

deploy.last

jboss-web-cluster.sar

cluster-service.xml

ejb3-clustered-sfsbcache-service.xml

五、启动Apache ,再启动JBOSS

方法一:run.bat -b 10.0.0.114    把10.0.0.114换成workers.properties里设置的IP,注意IP要对应。

方法二:修改JBOSS_HOME\default\deploy\jboss-web.deployer\server.xml

找到(大约在22行)

<Connector port="8080" address="${jboss.bind.address}"   
         maxThreads="250" maxHttpHeaderSize="8192"
         emptySessionPath="true" protocol="HTTP/1.1"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true" />

修改address=你的IP

再往下走(大约在39行)

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"
         emptySessionPath="true" enableLookups="false" redirectPort="8443" />

修改address=你的IP

好了,以后每次启动,不用再加参数-b指定IP了。到此借书

终于总结完了。成功的朋友们留个言,谢谢了。有问题的大家一起交流,谢谢啦。
分享到:
评论

相关推荐

    JBOSS负载均衡配置

    ### JBOSS负载均衡配置详解 #### 一、概述 负载均衡是提高系统可用性和扩展性的关键手段之一,尤其在企业级应用环境中更是不可或缺。本文将详细介绍如何在JBOSS服务器上实现负载均衡配置,包括所需的文件、具体的...

    Apache与Jboss负载均衡教程

    ### Apache与Jboss负载均衡教程知识点详解 #### JBoss负载均衡概述 - **主题与目标**:本教程旨在深入探讨JBoss负载均衡的核心概念、配置方法及其与Apache的集成技术。主要内容涵盖JBoss的基本介绍、配置技巧、...

    JBoss负载均衡与Mysql主从备份

    ### JBoss负载均衡与MySQL主从备份 在现代IT架构中,为了提高系统的稳定性和响应速度,企业常常采用负载均衡技术和数据库的主从备份方案。本文将深入探讨JBoss应用服务器如何实现负载均衡以及MySQL数据库如何配置...

    JBoss 负载均衡

    以下是使用Apache HTTP Server和mod_jk.so进行JBoss负载均衡的详细步骤: 1. **安装Apache HTTP Server**: 首先,需要下载并安装httpd-2.2.17,这是Apache的一个版本,确保它适合与mod_jk.so协同工作。 2. **安装...

    Apache+Jboss负载均衡加域名转发

    通过Apache作为前端的Web服务器,结合JBoss作为后端的应用服务器,可以实现高效且稳定的负载均衡及域名转发功能。本文将深入解析如何配置Apache 2.2与JBoss 4.2.3来实现这一目标。 ### 一、Apache与JBoss集成的基本...

    jboss负载均衡

    文档是介绍基于apache和modjk在jboss下实现负载均衡。

    jboss4.2.3GA集群配置 Apache负载均衡

    JBoss 4.2.3GA 集群配置与Apache负载均衡详解 在IT行业中,高可用性和负载均衡是企业级应用的关键要素。JBoss 4.2.3GA是一个流行的Java应用服务器,通过配置集群可以提高服务的稳定性和性能。而Apache作为Web服务器...

    httpd(负载均衡)+Jboss集群高可用部署配置文件

    综上所述,通过httpd的负载均衡,Jboss的集群部署,以及ActiveMQ的消息中间件,可以在Linux环境中构建一个高可用、高性能的应用系统。在实际操作中,还需要关注网络配置、安全性、监控以及日志管理等多个方面,确保...

    JBOSS 集群 负载均衡

    本文将深入探讨JBOSS集群和负载均衡的概念、原理以及配置方法。 1. **集群概念** 集群是一种将多个独立的服务器节点组合成一个逻辑单元的技术,这些节点共享资源并协同工作,以提高服务的可用性和性能。在JBOSS中...

    CentOS下apache负载均衡与JBoss集群配置

    在本文中,我们将讨论在CentOS操作系统环境下,如何进行Apache负载均衡与JBoss集群的配置。负载均衡和集群配置是提高网站可用性、扩展性和性能的关键技术。通过这篇文章,我们会了解到详细的配置步骤,以及它们在...

    Jboss集群配置

    在提供的文件中,`Jboss集群配置.doc`可能是详细的配置步骤文档,`Apache与Jboss负载均衡教程.pptx`可能包含Apache和JBoss集成的教程,而`jboss集群_jboss5[1].1_apache2.2.4.rar`则可能包含具体的配置示例和必要的...

    Linux负载均衡集群

    在这个场景中,Apache作为Web服务器,被配置为负载均衡器,而JBoss则是运行在Linux上的应用服务器,它们可以被组织成集群以实现应用的负载分发。 【Apache负载均衡】Apache通过模块mod_jk实现了对应用服务器的负载...

    inux下apache负载均衡与JBoss集群配

    在Linux环境中,Apache服务器可以作为负载均衡器,与JBoss应用服务器集群配合,实现高可用性和性能优化。本文将详细讲解如何在Linux下配置Apache负载均衡以及JBoss集群。 首先,我们来安装和配置JDK,这是运行JBoss...

    Linux下apache负载均衡及JBoss集群详细文档

    Linux下apache负载均衡及JBoss集群详细文档

    浪潮天梭负载均衡的配置说明

    【浪潮天梭负载均衡配置详解】 浪潮天梭8650是一款高性能的服务器系统,具有强大的处理能力和稳定性,常用于企业级应用。在部署大型分布式系统时,负载均衡的配置至关重要,它能确保系统的高可用性和性能优化。下面...

    Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理

    在负载均衡方面,文章首先介绍了 JBOSS 官方文档中推荐使用 Apache Httpd 作为负载均衡服务器,但是作者由于个人喜好 Nginx,所以选择使用 Nginx 1.2.1 + JBOSS AS 7 实现负载均衡。 在 Session 处理方面,文章介绍...

    apache负载均衡与JBOSS集群配置

    在Linux环境下实现Apache负载均衡和JBoss集群配置是一项涉及多个步骤的技术操作。下面将详细介绍这两个过程。 ### JDK安装与配置 1. **下载JDK**:首先需要下载1.5版本或以上的JDK安装包。根据版本不同,文件名也...

    jboss配置入门,jboss的初级配置

    在本文中,我们将对jboss的基本配置进行介绍,包括其文件夹结构、配置文件、负载均衡配置等。 jboss文件夹结构 jboss的文件夹结构主要包括以下几个部分: * $JBOSS-HOME:jboss的安装目录 * $JBOSS-HOME/server:...

    Apache2.2+JBOSS 5 集群配置

    Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...

    论文研究-EJB集群系统动态自适应负载均衡服务的设计与实现.pdf

    分析了几种常用的动态负载均衡算法的不足,并针对目前大多数主流J2EE应用服务器的负载均衡并不具有动态自适应性的问题,利用开源JBoss服务器为开发平台,结合多种设计模式设计了一种动态自适应负载均衡服务模型,...

Global site tag (gtag.js) - Google Analytics