【原创】Apache和基于虚拟主机的Tomcat集群方案
最近建设了北京某政府机构的网站,网站前段使用Apache做负载均衡,后端使用Tomcat做的集群,基于虚拟主机的方式访问,并且实现了静态资源和动态资源的分离。
开始的建设方案有两种,一种是使用apache的反向代理,配置虚拟主机访问不同的域名反向代理至不同的应用或者路径;第二种是tomcat配置虚拟主机,apache只做负载均衡转发请求。后来考虑了一下,还是决定使用反向代理【考虑回头换成nginx】。
其次,启用了页面cache,引入memcached作为页面cache。
首先是apache:
apache虚拟主机配置:
虚拟主机配置:【片段】
Listen
NameVirtualHost *:
<VirtualHost *:>
ServerName www.xx.gov.cn
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
ErrorLog logs/www.xx.gov.cn-error_log.log
CustomLog logs/www.xx.gov.cn-access_log.log common
</VirtualHost>
这样通过www.xxx.gov.cn访问时apache会代理这个域名的访问,去访问http://127.0.0.1:9000,而如果不通过反向代理,由于tomcat在内网防火墙的保护之下,客户端无法直接访问tomcat,apache的重定向操作会被防火墙拦截。
注意:ProxyPassReverse 是必须要配置的,因为万一反向代理请求的是一个重定向操作,那么客户端也会随之重定向,那么会面临上述同样的问题,所以,配置该选项,apache会同样对重定向的操作进行代理,客户端感觉不到重定向。
动静分离:
首先将tomcat下的webapps目录作为apache的一个虚拟目录,或者将tomcat的应用复制一份另存目录,至保留该目录下的静态文件,配置如下【httpd.conf】:
Alias /bjoweb "d:\Pictures\web"
<Directory "d:\Pictures\web">
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory> Alias /owebfiles "D:\web\wenjian\webapps\owebfiles"
<Directory "D:\bjoweb\wenjian\webapps\owebfiles">
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
然后配置【workers.properties】:
#所有请求都由controller这个server处理
/*=controller
!/bjoweb/index.html=controller
/jkstatus=controller
!/*.gif=controller
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.doc=controller
!/*.pdf=controller
!/*.mdb=controller
!/*.gif=controller
!/*.jpg=controller
!/*.bmp=controller
!/*.png=controller
!/*.zip=controller
!/*.rar=controller !/*.xls=controller #所有包含jkstatus请求的都由status这个server处理
/jkstatus=status
这样,所有的静态资源都会交由apache处理,而动态网页等会由中间件去处理。
mod_jk配置:
# worker列表
worker.list=controller, status #第一个server的配置,server名为s1
#ajp13 端口号,在tomcat下server.xml配置,默认8080
worker.s1.port=
#tomcat的主机地址,如不为本机,请填写ip地址
worker.s1.host=192.168.1.18
worker.s1.type=ajp13
#server的加权比重,值越高,分得的请求越多
worker.s1.lbfactor= #第二个server的配置,server名为s2
worker.s2.port=
worker.s2.host=192.168.1.18
worker.s2.type=ajp13
worker.s2.lbfactor= #server名为controller,用于负载均衡
worker.controller.type=lb
#重试次数
worker.retries=
#指定分担请求的server列表,用逗号分隔
worker.controller.balanced_workers=s1,s2
#设置用于负载均衡的server的session可否共享 有不少文章说设置为1是可以的,但是我是设置为0才可以的
worker.controller.sticky_session=
worker.controller.sticky_session_force= worker.status.type=status
Tomcat配置【片段,域名多达20多个】:
<Host name="www.xxx.gov.cn" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="web" debug="" reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www_xxx_gov" suffix=".txt" timestamp="true"/>
</Host>
<!--yifen-->
<Host name="www.xxx.xxx.gov.cn" debug="" appBase="D:\\sfile\\Zh_CN\\yfy" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="." debug="" reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www_xxx_gov" suffix=".txt" timestamp="true"/>
</Host>
【原创】Apache和基于虚拟主机的Tomcat集群方案的更多相关文章
- apache、mod_jk负载均衡与tomcat集群
最近需要搭建apache和tomcat的集群,实现静态网站直接通过apache访问,动态网站转交给tomcat处理,实现负载均衡和tomcat集群配置. apache安装 wget http://ap ...
- 161028、Nginx负载均衡实现tomcat集群方案简要小结
重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. Nginx是一个常用的 ...
- Grafana+Telegraf+Influxdb监控Tomcat集群方案
前言 前一段时间自家养的几只猫经常出问题,由于没有有效的监控预警手段,以至于问题出现或者许久一段时间才会被通知到.凌晨一点这个锅可谁都不想背,为此基于目前的情况搭建了以下这么一套监控预警系统. 相关软 ...
- Centos下Apache+Tomcat集群--搭建记录
一.目的 利用apache的mod_jk模块,实现tomcat集群服务器的负载均衡以及会话复制,这里用到了<Cluster>. 二.环境 1.基础:3台主机,系统Centos6.5,4G内 ...
- Apache + Tomcat集群 + 负载均衡
Part I: 取经处: http://www.ramkitech.com/2012/10/tomcat-clustering-series-simple-load.html http://blog ...
- FineReport关于tomcat集群部署的方案
多台服务器集群后,配置权限.数据连接.模板.定时调度等,只能每台服务器一个个配置,不会自动同步到所有服务器. 针对上述情况,在FineReport中提供新集群部署插件,将xml配置文件.finedb/ ...
- 【转】Tomcat集群Cluster实现原理剖析
此文章来源:http://zyycaesar.iteye.com/blog/296606 此文章作者:zyycaesar 对于WEB应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保 ...
- Centos 7 环境下,如何使用 Apache 实现 SSL 虚拟主机 双向认证 的详细教程:
1. testing ! ... 1 1 原文参考链接: http://showerlee.blog.51cto.com/2047005/1266712 很久没有更新LAMP的相关文档了,刚好最近单位 ...
- 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
6月27日任务 16.4 配置Tomcat监听80端口16.5/16.6/16.7 配置Tomcat虚拟主机16.8 Tomcat日志扩展邱李的tomcat文档 https://www.linuser ...
随机推荐
- TCP基本概念
TCP协议是一个复杂的.可靠的字节流协议.不通用UDP协议. TCP提供客户与服务器之间的连接.TCP客户先与给定的服务器建立一个连接,再跨该连接与服务器交换数据,最后终止这个连接. TCP提供了可靠 ...
- 关于Android Studio更新后一直Refreshing的解决办法!
今天更新了一下studio一直是这个问题 查了很多资料终于解决了 造成这个问题的原因是要更新的gradle版本和studio安装路径中的gradle版本不一致导致的 把他们改成一致的即可 在这个目录里 ...
- web_测试用例注意点
测试是一种思维,包括情感思维和智力思维,情感思维主要体现在一句俗语:思想决定行动上(要怀疑一切),智力思维主要体现在测试用例的设计上.具有了这样的思想,就会找出更多的bug.(^_^个人认为,不代表官 ...
- Codeforces Round #493 (Div. 2) A. Balloons 贪心水题
由于是输出任意一组解,可以将价值从小到大进行排序,第一个人只选第一个,第二个人选其余的.再比较一下第一个人选的元素和第二个人所选元素和是否相等即可.由于已将所有元素价值从小到大排过序,这样可以保证在有 ...
- oralce存储过程实现不同用户之间的表数据复制
create or replace procedure prc_test123 is temp_columns ); sqltemp ); cursor cur is select table_nam ...
- 【XSY2689】王子 - 网络流
复活!qwq 题目来源:2018冬令营模拟测试赛(九) 题意: [背景描述] 不是所有王子都会遇见自己的中关村,主公,公主. 从前有个王子姓王,王王子遇到了一位美丽的公主,她的名字当然是公公主 ...
- css font-family 字体组
介绍图片来自: http://www.runoob.com/cssref/css-websafe-fonts.html
- 【NOI2001】食物链
[NOI2001]食物链 题意 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B ...
- Ajax兼容性问题
对于IE7及以上直接使用 XMLHttpRequest 就行,但对于过老版本IE建议直接提示用户下载新版浏览器更佳.或者用以下代码兼容IE6: function CreateXHR() { if(XM ...
- 工具-WIN7-内存占用过高解决办法
我的WIN7内存竟然吃到了7.6G,太不可思意了 第一步 看看网上的解决办法 http://jingyan.baidu.com/article/870c6fc31060eab03fe4beee.htm ...