2025年2月25日 星期二 甲辰(龙)年 腊月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > Apache

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

时间:09-11来源:作者:点击数:37

在进行系统部署环境架构时,选择的是 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 版本进行下载;

寻找mod_jk就挺麻烦,先把地址告诉大家:

http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/

下载合适的版本,如图:

这里写图片描述

下载完成后改名为 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 直接回车即可访问部署的项目了。

注意: 关于虚拟主机,在这儿也可以一个或多个哟!!!

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐