JBOSS通过Apache负载均衡方法一:使用mod_jk
JBOSS通过Apache负载均衡方法一:使用mod_jk
本文第一、二节分别对Linux环境下前端使用Apache以及windows环境下前端使用IIS通过AJP协议和后端的JBOSS通信实现负载均衡进行说明,第三节对相应的参数做了解释。
一、 Linux环境下Apache + mod_jk + JBOSS
Apache和JBOSS使用AJP协议,利用8009端口通过mod_jk来实现通信。
- 1. 安装并配置apache
下载apache代码包,上传到服务器。
解开代码包
[root@jboss01 app]#cd /opt/app
[root@jboss01 app]#tar -zxvf httpd-2.2.23.tar.gz
[root@jboss01 app]#cd /opt/app/httpd-2.2.23
在[root@jboss01 httpd-2.2.23]#下编译
./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
修改配置。本例中,提供服务的监听端口是8090,请根据实际情况修改。
vi /usr/local/apache2/conf/httpd.conf
将Listen 80 改成Listen 8090
将User daemon和Group daemon 改为User apache和Group apache
删除ServerName前的#,将该行改为 ServerName 172.18.49.181:8090
添加用户和用户组
groupadd apache
useradd apache –g apache
apache mod_jk配置
下载mod_jk,将其改名为mod_jk.so,拷贝到/usr/local/apache2/modules下
mod_jk的下载路径:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
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 /* 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
<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 172.18.49.181
</Location>
____________________________________________________________________________
vi /usr/local/apache2/conf/workers.properties,增加以下内容:
_______________________________________________
# Define list of workers that will be used
# for mapping requests
worker.list=loadbalancer
# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=172.18.49.183
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.connection_pool_timeout=600
#worker.node1.connection_pool_size=500
#worker.node1.connection_pool_minsize=250
worker.node1.socket_timeout=5
# Define Node2
# modify the host as your host IP or DNS name.
worker.node2.port=8009
worker.node2.host=172.18.49.184
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.connection_pool_timeout=600
#worker.node2.connection_pool_size=500
#worker.node2.connection_pool_minsize=250
worker.node2.socket_timeout=5
# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
____________________________________________________
如果有更多的节点,顺序定义更多的node段,并在worker.loadbalancer.balance_workers后全部列出.
lbfactor是负载分配权重,值越大分配的负载越多.
配置apache自动启动
ln –s /usr/local/apache2/bin/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
- 启动Jboss集群
先启动负载均衡器apache,然后启动各jboss节点。各jboss节点的启动顺序没有要求。对于apache的启动,参考如下:
在/usr/local/apache2/bin目录下执行./httpd –k start (终止命令: ./httpd –k stop),在/usr/local/apache2/logs/mod_jk.log中,看到如下信息则表明apache对mod_jk加载成功:
“[info] init_jk::mod_jk.c (2743): mod_jk/1.2.23 initialized”
如有mod_jk相关的错误信息,一般是由于mod_jk的版本与apache版本不兼容,需在apache官网上下载合适的版本。用netstat检查8090监听端口存在,则说明apache启动成功.

- 3. 负载均衡实验
在172.18.49.183/184上分别部署了简单的测试页面,显示如下:


此时,在IE中输入http://172.18.49.181:8090/cluster_test/,并不断刷新,应该会交替出现如下两个页面,则说明负载均衡配置成功,如果此时关闭184上的JBOSS,则每次访问只会出现图1,重新打开184上的JBOSS,不断刷新访问,则图1和图2重新交替显示。

图1

图2
二、 Windows环境下IIS + isapi_redirect + JBOSS
IIS和JBOSS使用AJP协议,利用8009端口通过加载isapi_redirect.dll来实现通信。
- 在注册表中添加isapi_redirect相关信息
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"log_file"="E:\\ajp\\logs\\isapi_redirect.log"
"log_level"="info"
"worker_file"="E:\\ajp\\conf\\workers.properties"
"worker_mount_file"="E:\\ajp\\conf\\uriworkermap.properties"
- 按照注册表的路径添加workers.properties和uriworkermap.properties文件,内容分别如下:
workers.properties的内容与linux中基本一致,只需添加worker.node1.connection_pool_size=500
worker.node1.connection_pool_minsize=250
worker.node2.connection_pool_size=500
worker.node2.connection_pool_minsize=250
而uriworkermap.properties需要添加所要访问的JBOSS部署的WEB路径,如:/*.*=loadbalancer,则表示访问所负载的JBOSS上的任何web。
- 在IIS中加载isapi_redirect.dll
在IIS管理器中,双击ISAPI和CGI限制,

点添加,在弹出框中选择isapi_redirect.dll路径,并选择允许执行扩展路径

在IIS管理器中,双击ISAPI筛选器,点添加,在弹出框中,填写名称为”Jakarta”,此处必须与注册表中一致。

在网站中添加测试站点

在网站中添加虚拟目录,如下图所示,物理路径为isapi_redirect.dll所在路径。

双击处理程序映射,编辑权限功能,勾选“执行”

编辑ISAPI-dll,添加路径

重启IIS,并查看E:\ajp\logs\isapi_redirect.log,如无该文件生成,说明isapi_redirect.dll没有被正确加载,需检查以上步骤是否有误,如果去人无误还无法加载,可尝试重启windows服务器,直到isapi_redirect被正确加载,此时,isapi_redirect.log中会生成“[Fri Apr 25 10:03:49.863 2014] [16260:16312] [emerg] init_jk::jk_isapi_plugin.c (2867): Unable to read worker file E:\ajp\conf\workers.properties. (errno=0, err=No error)”类似的信息。
- 验证负载均衡
验证方法参加第一部分Linux环境下Apache + mod_jk + JBOSS相关的内容。
三、 参数说明
- worker.list
表示要通过apache或IIS做负载的JBOSS集群或其它集群的名称列表,多个直接用逗号隔开。本文只有一个JBOSS集群,命名为loadbalancer。
- worker.loadbalancer.type=lb,表示采用负载的方式来访问web,如果worker.loadbalancer.type=ajp13,则说明不使用负载。
worker.loadbalancer.balance_workers=node1,node2,表明集群有两个节点,分别为node1和node2。 - worker.node1.port=8009,该端口为JBOSS通过AJP协议用于与apache或IIS通信的端口,需要与JBOSS配置文件中<socket-binding name="ajp"中的端口保持一致,默认为8009。
worker.node1.host=172.18.49.183,为该节点的JBOSS的DNS解析地址
worker.node1.type=ajp13,AJP协议类型为1.3
worker.node1.lbfactor=1,负载系数,两个节点都为1,则表示按1:1轮询。worker.node1.connection_pool_timeout=600,表示JK connector将在连接处于空闲状态600s后关闭与后端JBOSS的连接,该参数必须与JBOSS配置中的“DEFAULT_CONNECTION_TIMEOUT”保持一致。
worker.node1.connection_pool_size=500,表示所允许的与后端JBOSS的最大连接数,需要注意的是,如果使用Apache,该参数不推荐使用,因为apache是自适应的去分配连接。
worker.node1.connection_pool_minsize=250,表示当资源池被收缩时,可以保持的空闲连接数,apache官方推荐值为最大连接数的一半。如果使用Apache,该参数同样不推荐使用。
worker.node1.socket_timeout=5,表示TCP传输的超时为5s,如不设置该参数,则表示超时值为无穷大,此时,如果网络状况不佳,可能会存在很多死连接,导致JBOSS压力偏低,性能发挥不出来。但该值如果设置太小,会使得JK connector对网络状况过于敏感,不仅增大JBOSS压力,还会错误的杀掉因为网络或其它原因而响应稍慢的一些连接。Apache的官方推荐值为1到5秒。
JBOSS通过Apache负载均衡方法一:使用mod_jk的更多相关文章
- JBOSS通过Apache负载均衡方法二:使用mod_cluster
本文介绍使用mod_cluster组件通过apache来对JBOSS做负载均衡.基本环境为:linux RH6.3 64bit下使用jboss-eap-6.0和mod-cluster 1.2.6(集成 ...
- 运维小知识之nginx---nginx配置Jboss集群负载均衡
codyl 2016-01-26 00:53:00 浏览385 评论0 负载均衡 转自 运维小知识之nginx---nginx配置Jboss集群负载均衡-博客-云栖社区-阿里云https://yq ...
- 《Apache负载均衡》RHEL6
Apache负载均衡的搭建,基于上篇<CDN web加速代理>搭建好的服务器,我们来搭建apache负载均衡: Apahe负载均衡:就是为了缓解一台服务器的压力而多台服务器配合使用. 基于 ...
- 【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk
Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk httpd版本: httpd-2.4.17 jk版本: tomcat-connectors-1.2.41 参考 ...
- Apache负载均衡配置
使用mod_proxy 配置Apache负载均衡 1.安装apache ./configure --prefix=/usr/local/apache2 –enable-so make &&am ...
- Apache负载均衡
Apache负载均衡 Apache也是可以实现负载均衡的.Apache的负载均衡主要是通过mod_proxy_balancer实现的.那么,apache负载均衡的配置方法是什么样的? 在apache的 ...
- Apache负载均衡与Tomcat集群配置学习(Windows环境)
本文主要参考自http://www.iteye.com/topic/985404?dhcc,经由实际操作配置操并记录而成. 由于最近的一个Java开发项目用到了Tomcat中间件作为web服务器,刚开 ...
- Tomcat+Apache 负载均衡
1.JDK1.8和Tomcat7.0不兼容,支持Tomcat8.0. 集群架构图: 2.负载均衡:负载的基础是集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同 ...
- Apache 负载均衡 端口转发 配置
转载自:https://blog.csdn.net/snihcel/article/details/38844323 [端口转发配置] 通过http_proxy做tomcat的端口转发: ...
随机推荐
- spring读写分离
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; public class ChooseData ...
- 关于php Hash算法的一些整理总结
最近在公司内部的分享交流会上,有幸听到了鸟哥的关于php底层的一些算法的分享,虽然当时有些问题没有特别的明白,但是会后,查阅了各种各样的相关资料,对php的一些核心的hash算法有了进一步的理解和认识 ...
- C# 读取Excel内容
一.方法 1.OleD方法实现该功能. 2.本次随笔内容只包含读取Excel内容,并另存为. 二.代码 (1)找到文档代码 OpenFileDialog openFile = new OpenFile ...
- C# 远程网络唤醒介绍及代码
一.定义 网络唤醒:唤醒休眠状态下的计算机,而不是已关机的计算机. 优势:可通过定时功能实现自动唤醒计算机,减少人力使用. 实现方法:通过被唤醒机的MAC地址进行广播发送请求,唤醒计算机. 二.硬件设 ...
- Linux_04------Linux权限的设定
三种权限 */ /** * 修改文件所有者 * chown 用户名 文件名 */
- HTTP请求之:PHP函数header常用功能
1.页面重定向 当浏览器接受到头信息中的 Location: http://xxxx 后,就会自动跳转到 http://xxxx 指向的URL地址,这点有点类似用 js 写跳转.但是这个跳转只有浏 ...
- XGBoost参数调优完全指南(附Python代码)
XGBoost参数调优完全指南(附Python代码):http://www.2cto.com/kf/201607/528771.html https://www.zhihu.com/question/ ...
- oracle常用操作指令
1.cmd sqlplus /nolog; 2.conn sys/ as sysdba; 3.create user query identified by query;//创建用户 4.al ...
- Linux系统编程-防止僵尸进程产生的常用方法
1.父进程调用wait函数或waitpid函数回收子进程. 2.让init进程去处理子进程回收工作,代码中加上"signal(SIGCHLD, SIG_IGN)"这句话.
- NGUI Draw Calls优化(思路)
用NGUI做界面的时候发现不注意GameObject(或者说Widget)的depth的话,单独运行界面时,Draw Calls挺高的: 网上搜了一下,大把的博客说的都是类似以下的原则: (PS:以下 ...