Windows下使用Apache与Tomcat实现负载均衡/反向代理的三种解决方案




《 Apache+Tomcat 实现负载均衡/反向代理 》




在进行系统部署环境架构时,选择的是 Windows 系统,并使用 Apache+Tomcat 实现负载均衡/反向代理,提高服务器的高可用和横向扩展,不过最近公司打算将 Windows 系统替换为 Linux 系统,并将 Apache 替换为 Nginx,为什要替换?萝卜青菜各个有所爱,说法很广泛。


关于 Apache + Tomcat 实现负载均衡和反向代理的解决方案目前我所知道的有以下三种:
1、jk方式集成 : mod_jk.so(常用的,也是我一直在使用的)
2、ajp_proxy
3、http_proxy 


解决方案一:jk 方式集成

1)、下载 jk
下载 jk 文件,这儿需要根据 Apache 版本进行下载;


一个:将两个版本改为 32 位,jk_32位_下载地址https://download.csdn.net/download/hello_world_qwp/10123760


二个:将两个版本改为 64 位,jk_64位_下载地址https://download.csdn.net/download/hello_world_qwp/10123765


下载完成后改名为 mod_jk.so 放进Apache的 modules 文件夹内;


2)、配置 httpd

接下来在 Apache conf目录下找到 httpd.conf 并追加如下内容:


AddDefaultCharset UTF-8 #注意:这个非常重要哟
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Load mod_jk conf
Include conf/mod_jk.conf




3)、配置 jk
在Apache conf目录下新建 mod_jk.conf ,并键入配置内容如下:


# 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"
JkMountFile conf/uriworkermap.properties
#JkMount /jkstatus jkstatus
# Send servlet for context /examples to worker named ajp13
#JkMount /servlet/* controller
# Send JSPs for context /examples to worker named ajp13
#JkMount /* controller




4)、配置 workers
在Apache conf目录下修改 workers.properties 配置文件 ,并键入配置内容如下:



#========controller,负载均衡控制器======== 
worker.list = controller,jkstatus,tomcatA,tomcatB


#========tomcatA========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcatA.port=9001
#tomcat的主机地址,如不为本机,请填写ip地址  
worker.tomcatA.host=localhost
worker.tomcatA.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcatA.lbfactor = 1


#========tomcatB========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcatB.port=9011
#tomcat的主机地址,如不为本机,请填写ip地址  
worker.tomcatB.host=localhost
worker.tomcatB.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.tomcatB.lbfactor = 1
 
#========controller,负载均衡控制器========
#指定分担请求的tomcat  
worker.controller.type=lb
worker.controller.balanced_workers=tomcatA,tomcatB
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1


#集群状态监控配置
worker.jkstatus.type=status
worker.jkstatus.read_only=1






解决方案二:ajp_proxy 方式集成


在 Apache conf目录下修改 httpd.conf 配置文件,找到一下配置项,版本不一样,有的配置项注释了,如果注释了就开启即去掉配置项前面的 “ # ” 号即可,所需内容如下:


Include conf/extra/httpd-vhosts.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so




注意:需要将 解决方案一中 httpd.conf 的配置项注释掉哟,然后再追加如下内容,如果不注释掉上面的配置内容会冲突的哈!


ProxyRequests Off
<proxy balancer://loadbalance> 
	BalancerMember ajp://192.168.78.158:9001 loadfactor=1 route=worker3
	BalancerMember ajp://192.168.78.159:9002 loadfactor=1 route=worker2
</proxy>





然后在 Apache 配置目录下 conf/extra 找到 httpd-vhosts.conf 虚拟主机配置文件,将里面的 VirtualHost 节点注释去掉即可,具体配置内容如下:


<VirtualHost *:80>
	ServerAdmin webmaster@dummy-host.example.com # 公网访问的域名
	DocumentRoot "${SRVROOT}/docs/dummy-host.example.com"
	ServerName dummy-host.example.com # 域名
	ServerAlias www.dummy-host.example.com # 别名 (全域名)
	ProxyPass / balancer://loadbalance/ stickysession=jsessionid nofailover=On # session 共享
	ProxyPassReverse / balancer://loadbalance/ # 这儿我理解为映射到刚才在 httpd.conf 中配置项目的那个节点上吧!!!
	ErrorLog "logs/dummy-host.example.com-error.log" # 错误日志
	CustomLog "logs/dummy-host.example.com-access.log" common # 自定义日志
</VirtualHost>






配置完成后,在浏览器地址栏键入 域名 或者 localhost 直接回车即可访问部署的项目了。
注意: 关于虚拟主机,在这儿可以一个或多个哟!!!




解决方案三:http_proxy 方式集成
http_proxy 集成方式和 ajp_proxy 集成方式相似,不同的是代理节点配置不同,将 ajp 修改为 http 即可,具体配置文件的修改同 “解决方案三”,具体需要修改的内容如下:

ProxyRequests Off
<proxy balancer://loadbalance> 
	BalancerMember http://192.168.78.158:9001 loadfactor=1 route=worker3
	BalancerMember http://192.168.78.159:9002 loadfactor=1 route=worker2
</proxy>




配置完成后,在浏览器地址栏键入 域名 或者 localhost 直接回车即可访问部署的项目了。
注意: 关于虚拟主机,在这儿也可以一个或多个哟!!









好了,关于 Apache与Tomcat实现负载均衡/反向代理 就写到这儿了,如果还有什么疑问或遇到什么问题,可以给我留言。
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值