`

JBoss4.0.5集群实现---负载均衡篇

阅读更多


       如果要实现JBoss各节点的负载均衡就需要在集群前置负载均衡器,均衡器是所有请求的入口,将请求按照定义的负载规则分配到各节点。负载均衡器可以实现故障转移和状态同步。我选择目前比较流行的Apache Http Server作为集群中的负载均衡器,通过mod_jk插件与Jboss节点通讯。

 

1.安装Apache Http Server

 

下载 httpd-2.2.4.tar.gz

 

解压文件:

[root@webserver local]# tar -zxvf httpd-2.2.4.tar.gz

 

切换到解压目录执行编译

[root@webserver httpd-2.2.4]#./configure -prefix=/usr/local/apache2 -enable-so -enable-setenvif=shared -enable-rewrite=shared -enable-proxy=shared -enable-auth-anon -enable-file-cache=shared -enable-cache=shared -enable-disk-cache=shared -enable-mem-cache=shared -with-mpm=prefork 

[root@webserver httpd-2.2.4]#make

[root@webserver httpd-2.2.4]#make install

 

增加apache用户组

[root@webserver httpd-2.2.4]#groupadd apache
[root@webserver httpd-2.2.4]#useradd apache –g apache

 

修改apache2目录用户与组

[root@webserver local]# chown -R apache:apache apache2

 

修改httpd.conf文件

[root@webserver apache2]# vim conf/httpd.conf
将User daemon和Group daemon改为User apache和Group apache

 

启动apache

[root@webserver apache2]#bin/apachectl start

访问:http://webserver.localdomain/



 

 

 

 看到上图表示安装成功!

 

2.下载并配置mod_jk模块

下载mod_jk

http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.30/i586/mod_jk-1.2.30-httpd-2.2.X.so

 

将文件重命名为mod_jk.so 拷贝至/usr/local/apache2/modules/

添加执行权限

[root@webserver apache2]#chmod a+x modules/mod_jk.so

 

创建mod_jk.conf文件

[root@webserver apache2]#vim conf/mod_jk.conf

文件内容如下:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

JkRequestLogFormat "%w %V %T"
JkMountFile conf/uriworkermap.properties
JkShmFile logs/jk.shm

 

大家重点注意表红部分:

LoadModule jk_module modules/mod_jk.so
表示apache加载jk_module模块的路径

JkWorkersFile conf/workers.properties

表示jk模块的配置文件路径

JkMountFile conf/uriworkermap.properties
表示jk模块映射文件路径,可以通过uriworkermap.properties文件配置要映射的应用

 

创建uriworkermap.properties文件

[root@webserver apache2]#vim conf/uriworkermap.properties

内容如下:

/*=loadbalancer

 

如果你希望apache作为单独的负载均衡器的话,可以采用/*=loadbalancer的配置,表示所有请求都会转发给集群中的jboss节点

 

创建workers.properties文件

[root@webserver apache2]#vim conf/workers.properties

文件内容如下:

worker.list=loadbalancer,status
#node1

worker.node1.port=8009
worker.node1.host=node1.localdomain

worker.node1.type=ajp13
worker.node1.lbfactor=1
#node2

worker.node2.port=8009
worker.node2.host=node2.localdomain
worker.node2.type=ajp13
worker.node2.lbfactor=1

 

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=1
worker.status.type=status

 

以上内容中声明了2个worker分别名为node1、node2之后要分别在Jboss节点中jvmRoute属性中指定要使用的worker

 

3.修改httpd.conf文件

在文件末尾增加下面一行

Include conf/mod_jk.conf

 

4.配置Jboss

为各节点指定jvmRoute

编辑server.xml文件

[root@node1 local]# vim /usr/local/jboss-4.0.5.GA/server/all/deploy/jbossweb-tomcat55.sar/server.xml

 

jvmRoute设置成之前在workers.properties文件里声明的worker
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">  

 

编辑jboss-service.xml文件激活jk

[root@node1 local]# vim /usr/local/jboss-4.0.5.GA/server/all/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml

找到 <attribute name="UseJK">false</attribute>将其改变为true

 

5.测试负载均衡器

安装上面的要求配置两个jboss节点

node1.localdomain

node2.localdomain

 

worker.loadbalancer.sticky_session=1

此属性指定集群针对HTTP会话的处理方式,值为1时表示启用session黏贴,也就是说当应用程序使用session保存请求状态时,负载均衡器会将这个会话和集群中的一个节点进行关联,之后这个会话发起的请求都会指向这个节点。

 

在集群中部署测试程序:

请求:http://webserver.localdomain/SessionTest/index.jsp



 

如图所示处理我们本次请求的应用服务器为node1.localdomain


 

 输入要保存到Session里的值,点击SET



 SET完毕后,在输入我们刚才存储的变量名,点击GET。可以成功得到我们之前设置的值。我们可以清楚的看到这几次请求Host与SessionId都没有改变,说明Session已经成功黏贴到了node1.localdomain节点。

 

但是这种方式并不是一个完善的解决方案,因为一个节点崩溃,所有的会话数据都会丢失。好在我们之前配置的JBoss集群支持Session复制,也就是说当一个Session被创建时服务器会自动同步到其他节点。关于Session复制的配置可以到

/usr/local/jboss-4.0.5.GA/server/all/deploy/tc5-cluster.sar/META-INF/jboss-service.xml 文件中设置。这里就不多说了。

 

我们可以试验一把,我们先把节点node1.localdomain停掉,然后在点GET获取UserName


 

如上图所示,由于node1.localdomain节点已经停掉,负载均衡器把我们的请求自动分配到了可用节点node2.localdomain上,但是我们从node2上获得的SessionId还是原来的,UserName的值可以正常获取。


 

 

 

  • 大小: 1.5 KB
  • 大小: 18.5 KB
  • 大小: 25.9 KB
  • 大小: 20.1 KB
  • 大小: 16.9 KB
  • 大小: 14.8 KB
1
0
分享到:
评论

相关推荐

    jboss-4.0.5.GA.zip

    在使用"jboss-4.0.5.GA.zip"这个压缩包时,用户需要先将其解压,然后按照官方文档或者社区教程进行配置,包括但不限于设置环境变量、配置服务器端口、部署应用程序等步骤。在开发和部署过程中,理解并掌握上述知识点...

    JBossTools-ALL-win32-3.0.0.CR2

    JBossTools-ALL-win32-3.0.0.CR2 是一个专为Windows操作系统设计的集成开发环境(IDE)扩展包,它基于Eclipse平台,提供了丰富的工具集来支持JBoss相关技术的开发、部署和管理。这个版本是3.0.0的候选发布2(CR2),...

    jboss4.0.5-GA在使用RMI时的大坑

    标题中的“jboss4.0.5-GA在使用RMI时的大坑”指的是在使用JBOSS 4.0.5 GA版本时,如果涉及到远程方法调用(Remote Method Invocation, RMI)可能会遇到的一些常见问题或陷阱。在描述中提到了一个博客链接,虽然没有...

    Jboss集群配置httpd-v2.2.18+mod_jk-1.2.27-httpd-2.2.10.so+jboss-4.2.3

    3. **配置session复制**:在JBoss的`jboss-service.xml`和`jboss-web.xml`中配置session复制相关的属性。 4. **配置集群通信**:设置JGroups,这是一个用于集群间通信的框架,用于节点间的健康检查和信息传递。 5. *...

    jboss-logging-3.4.3.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.3.Final.jar; 赠送原API文档:jboss-logging-3.4.3.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.3.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.3.Final....

    jboss-logging-3.4.1.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.4.1.Final.jar; 赠送原API文档:jboss-logging-3.4.1.Final-javadoc.jar; 赠送源代码:jboss-logging-3.4.1.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.4.1.Final....

    jboss-as-sprint-int-5.0.0.GA.jar 和 jboss-spring-int-vfs.jar

    标题中的"jboss-as-sprint-int-5.0.0.GA.jar"和"jboss-spring-int-vfs.jar"就是这样的两个关键组件,用于帮助从Tomcat顺利过渡到JBoss环境。 首先,我们来详细了解一下`jboss-as-sprint-int-5.0.0.GA.jar`。这个...

    jboss-as-sprint-int-5.0.0.GA.jar jboss-spring-int-vfs.jar

    "jboss-as-sprint-int-5.0.0.GA.jar" 和 "jboss-spring-int-vfs.jar" 是与JBoss应用服务器相关的两个关键组件,主要用于Spring框架与JBoss服务器的集成以及虚拟文件系统(Virtual File System,VFS)的支持。...

    jboss-annotations-api_1.3_spec-2.0.1.Final-API文档-中英对照版.zip

    赠送jar包:jboss-annotations-api_1.3_spec-2.0.1.Final.jar; 赠送原API文档:jboss-annotations-api_1.3_spec-2.0.1.Final-javadoc.jar; 赠送源代码:jboss-annotations-api_1.3_spec-2.0.1.Final-sources.jar;...

    jboss-threads-3.1.0.Final-API文档-中文版.zip

    赠送jar包:jboss-threads-3.1.0.Final.jar; 赠送原API文档:jboss-threads-3.1.0.Final-javadoc.jar; 赠送源代码:jboss-threads-3.1.0.Final-sources.jar; 赠送Maven依赖信息文件:jboss-threads-3.1.0.Final....

    jboss-jaxrs-2.0-api-1.0.0-6.el8.noarch(1).rpm

    官方离线安装包,亲测可用

    jboss-logging-3.3.2.Final-API文档-中文版.zip

    赠送jar包:jboss-logging-3.3.2.Final.jar; 赠送原API文档:jboss-logging-3.3.2.Final-javadoc.jar; 赠送源代码:jboss-logging-3.3.2.Final-sources.jar; 赠送Maven依赖信息文件:jboss-logging-3.3.2.Final....

    Apache2.2+JBOSS 5 集群配置

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

    JBOSS 4.0.5 EJB3.0之MDB (ACTIVEMQ)

    例如,在`jboss-service.xml`或`jboss-all.xml`中添加ActiveMQ的相关配置,包括连接工厂和目的地(queue或topic)定义。 2. **MDB的Java类**:使用EJB3.0的注解,如`@MessageDriven`,在Bean类上声明MDB。还需要...

    jboss-native-2.0.8-windows-ssl

    标题 "jboss-native-2.0.8-windows-ssl" 暗示了我们要讨论的是JBoss Native在Windows环境下的一个版本,特别是针对SSL(Secure Socket Layer)支持的实现。JBoss Native是Red Hat JBoss中间件的一部分,它提供了一个...

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

    通过以上步骤,我们可以创建一个简单的JBoss集群,并通过Apache实现负载均衡。在实际生产环境中,可能需要根据业务需求调整负载策略,例如轮询、最少连接数、健康检查等。此外,集群的扩展性、监控和故障恢复也是...

    jboss-jaxrs-api_1.1_spec-1.0.0.Final.zip

    【标题】"jbosss-jaxrs-api_1.1_spec-1.0.0.Final.zip" 提供的是Java企业版(Java EE)中的一部分关键规范,即Java API for RESTful Web Services (JAX-RS) 1.1的实现。JAX-RS是Java平台上的一个标准接口,它允许...

    jboss-as-web.Final-RECOMPILE.jar.rar

    "jboss-as-web.Final-RECOMPILE.jar"这个文件就是针对JBoss AS 7热部署功能的一个关键组件。 热部署是软件开发过程中的一种理想特性,允许开发者在不中断应用程序服务的情况下更新或替换已部署的代码。对于持续迭代...

    jboss-marshalling-1.3.0.CR9.jar, jboss-marshalling-serial-1.3.0.CR9.jar

    jboss-marshalling-1.3.0.CR9.jar jboss-marshalling-serial-1.3.0.CR9.jar

Global site tag (gtag.js) - Google Analytics