Apache和Tomcat源码安装配置负载均衡

Apache +Tomcat负载均衡能保证较高的可用性和系统性能,这些是通过Apache与Tomcat之间的通讯来完成的。Apache和Tomcat之间的通讯基本有三种方式:Mod_Jk、HTTP_Proxy、AJP_Proxy其中以Mod_Jk最为流行,并且官方的文档也非常全。

Mod_JK是Apache的一个模块,其通过AJP协议实现与Tomcat之间的通讯,Tomcat通过设置Connector监听AJP的连接请求。

 

注意:如果希望apache与tomcat通信使用 HTTP 协议则需要使用 HTTP_Proxy,请看最后。

 

安装Mod_JK:

从http://tomcat.apache.org/download-connectors.cgi下载源码:tomcat-connectors-1.2.40-src.tar.gz

tar zxvf tomcat-connectors-1.2.40-src.tar.gz

cd tomcat-connectors-1.2.40-src/

cd native/

./configure --with-apxs=/home/soft/httpd-2.4.10/bin/apxs --prefix=/home/soft/tomcat-connectors-1.2.40
make 

make install
可选

make clean

make distclean

注:安装结果貌似不会装到/tomcat-connectors-1.2.40,但会往本地apache httpd 写入文件,比如添加了:modules/mod_jk.so

 

负载均衡配置步骤:
1.在apache安装目录下conf目录中找到httpd.conf,在最后加上配置 Include conf/mod_jk.conf
2.将mod_jk.so文件放入Apache\modules文件夹
3.新建mod_jk.conf文件并配置
4.新建workers.properties和uriworkermap.properties文件并配置
5.修改各个tomcat配置文件server.xml,主要对应端口和设置engine的jvmRoute属性

 

mod_jk.conf 内容:
# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so
# workers.properties 位置
JkWorkersFile conf/mine_jk/workers.properties
#加载workers的请求处理分配文件
JkMountFile conf/mine_jk/uriworkermap.properties
# 日志存放位置
JkLogFile logs/mine_mod_jk.log
# 设置日志级别 [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

workers.properties 内容:
# 定义worker,此处的list名称必须和mod_jk.conf文件中的 dispatcher 名称一致  
worker.list=dispatcher,status
# Define Node1  
worker.tomcat1.port=8019  
worker.tomcat1.host=localhost  
worker.tomcat1.type=ajp13  
worker.tomcat1.lbfactor=1  
#worker.tomcat1.connection_pool_size=10  
#worker.tomcat1.connection_pool_timeout=600  
#worker.tomcat1.socket_connect_timeout=300  
# Define Node2  
worker.tomcat2.port=8029  
worker.tomcat2.host=localhost  
worker.tomcat2.type=ajp13  
worker.tomcat2.lbfactor=1  
#worker.tomcat2.connection_pool_size=10  
#worker.tomcat2.connection_pool_timeout=600  
#worker.tomcat2.socket_connect_timeout=300  

# Load-balancing behaviour  
worker.dispatcher.type=lb  
worker.dispatcher.balance_workers=tomcat1, tomcat2
#sticky_session session亲和的设置
worker.dispatcher.sticky_session=0
worker.dispatcher.sticky_session_force=1
#loadbalancer
worker.status.type=status

uriworkermap.properties 内容:
#指定请求交给tomcat处理,"dispatcher"为在workers.propertise里指定的负载分配控制器
/*.jsp=dispatcher
/jkstatus=status
!/*.gif=dispatcher
!/*.jpg=dispatcher
!/*.png=dispatcher
!/*.css=dispatcher
!/*.js=dispatcher
!/*.htm=dispatcher
!/*.html=dispatcher

 

Tomcat设置:

准备两个tomcat,将它们的router分别设成tomcat1和tomcat2,配置它们的connector为ajp,端口分别为8019和8029。

配置完成后,启动apache和tomcat,访问 http://localhost:8080/jkstatus 可以查看集群状态(前提是配置了status类型的worker)

 

有可以看看其他人写的,很详细:http://aokunsang.iteye.com/blog/1699914

 

注意:如果希望apache与tomcat通信使用 HTTP 协议则需要使用 HTTP_Proxy:

http_proxy

这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对这个模块进行了重写,大大的增强了其功能和稳定性。

http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。

我用的linux源码编译的apache,mod_proxy.so和mod_proxy_http.so已经自带了,其他版本的apache应该也有,如果没有就单独安装 库 文件

############## http_proxy 方式需要的mod_proxy.so ##############
LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
############## http_proxy 方式需要的mod_proxy_http.so ##############
LoadModule proxy_http_module modules/mod_proxy_http.so
上面的内容在 apache配置文件 httpd.conf 中,放开其中的注释就可以使用 库了,

还需要在httpd.conf文件的最后加上:


############## http_proxy 方式 ##############
#http_proxy方式需要加载 mod_proxy.so 和 mod_proxy_http.so,将上面的 两行对应的 LoadModule  放开注释
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass / http://127.0.0.1:8080/
 

在这个配置中,我们把所有 http://127.0.0.1 的请求代理到 http://127.0.0.1:8080/ ,这也就是 Tomcat 的访问地址,除了 images、css、js 几个目录除外。我们同样可以利用 mod_proxy 来做负载均衡,再看看下面这个配置

ProxyPass /images !

ProxyPass /css !

ProxyPass /js !

 

ProxyPass / balancer://example/

<Proxy balancer://example/>

BalancerMember http://server1:8080/

BalancerMember http://server2:8080/

BalancerMember http://server3:8080/

</Proxy>

启动apache和tomcat就可以测试了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概念: AJP是Apache提供的完成与其它服务器通讯的一种协议。在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_ajp模块。 配置过程: 1 安装apache 2 测试apache是否安装成功:http://localhost 出现It works! 3 解压、安装tocmat 4 测试tocmat是否安装成功:http://localhost:8080 5 配置tocmat的jdk: 打开startup.bat添加: rem ----------------------------------------------------JDK目录 SET JAVA_HOME=D:\progam\jdk160_05 rem ----------------------------------------------------解压后Tomcat的目录 6 复制tocmat,名字为tomcat2 7 apache 整合tomcat 1)modules目录下添加模块:jk mod_jk-1.2.26-httpd-2.2.4.so 2)修改conf/httpd.conf 最后一行添加: include conf/mod_jk.conf 3)在conf目录下创建mok_jk.conf 内容: #加载mod_jk Module LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so #指定 workers.properties文件路径 JkWorkersFile conf/workers.properties #指定哪些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名 JkMount /*.jsp controller 4)在confi目录下创建workers.properties 内容为: worker.list = controller,tomcat1,tomcat2 #========tomcat1======== worker.tomcat1.port=8009 worker.tomcat1.host=192.168.9.210 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #加权因子 越大执行的请求越多 #========tomcat2======== worker.tomcat2.port=9009 worker.tomcat2.host=192.168.9.210 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2 worker.controller.sticky_session=1 5 修改tomcat的端口号(3处) <Server port="8005" shutdown="SHUTDOWN"> 改为: <Server port="9005" shutdown="SHUTDOWN"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 改为: <Connector port="9090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/> 改为: <Connector port="9009" protocol="AJP/1.3" redirectPort="8443"/> 注意:该处需要与worker.tomcat2.port=9009对应 6 修改jvmRoute 备注与worker.list = controller,tomcat1,tomcat2的tomcat1或tocmat2对应 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值