Apache2.2 + tomcat7 服务器集群配置
1.软件安装
1.1下载和安装apache
Apache 2.2 :http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本
1.2下载和安装tomcat7.0.37(略)
2.Apache配置
2.1启动自动加载代理模块
打开conf/httpd.conf去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。
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
2.2增加index.jsp(可选)
在下列节点中增加index.jsp,目的是能看到首页(conf/httpd.conf文件)
<IfModule dir_module> DirectoryIndex index.html index.jsp </IfModule>
2.3开启虚拟站点配置
去掉Includeconf/extra/httpd-vhosts.conf前面的注释(conf/httpd.conf文件)
2.4配置虚拟站点
在conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上
<VirtualHost *:80> ServerAdmin xxx@126.com ServerName localhost ServerAlias localhost ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ ErrorLog "logs/thc-error.log" CustomLog "logs/thc-access.log" common </VirtualHost>
说明:这里balancer://是告诉Apache需要进行负载均衡的代理,后面的cluster是集群名(可以随意取),两个日志引擎ErrorLog负责记录错误,CustomLog负责记录所有的http访问以及返回状态,日志名可以自己取。
2.5配置代理
回到httpd.conf,在文档最下面加上:
ProxyRequests Off <proxy balancer://cluster> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 # 如果第二个Tomcat放在另一台电脑上那么就输入那台电脑的ip BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2 </proxy>
说明:ProxyRequestsOff 是告诉Apache需要使用反向代理,<proxy balancer://cluster> 用于配置工作在tomcat集群中的所有节点,这里的"cluster"必须与上面的集群名保持一致。Apache通过ajp协议与tomcat进行通信,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。loadfactor是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。route参数对应后续tomcat配置中的引擎路径(jvmRoute)
重启Apache服务,如果此时访问http://localhost/将会返回503错误,打开刚才配置的错误日志logs/thc-error.log,可以看到错误原因是因为后台服务器没有响应,因为此时tomcat尚未配置和启动。
3.Tomcat配置
解压出两个Tomcat,名字分别为:tomcat7_1,tomcat7_2。如果tomcat7_1和tomcat7_2不在同一台服务器上运行,对于端口就不需做改动。打开两个Tomcat中的server.xml文件
3.1修改http端口
找到
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
在tomcat7_1中把8080改为7080,在tomcat7_2中把8080改为9080
3.2修改AJP端口
找到<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
这是tomcat接收从Apache过来的ajp连接请求时使用的端口,tomcat7_1保持不变,把tomcat7_2端口改为9009。注意,这里的端口对应Apache httpd.conf中BalancerMember中配置的ajp连接端口。
3.3修改shutdown端口,将8005改成9005
<Serverport="9005" shutdown="SHUTDOWN">
3.4修改jvmRoute
找到<Enginename="Catalina" defaultHost="localhost">
Tomcat7_1修改为: <Engine name="Catalina" defaultHost="localhost"jvmRoute="jvm1">
Tomcat7_2修改为: <Engine name="Catalina"defaultHost="localhost" jvmRoute="jvm2">
这里的jvmRoute对应步骤3.5Apache httpd.conf中BalancerMember中配置的route参数。
3.5共享Session
找到<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>,打开注释。
这里的配置是为了可以在集群中的所有tomcat节点间共享会话(Session)。如果仅仅为了获得一个可用的tomcat集群,Cluster只需要这么配置就可以了
3.6web.xml配置
在每个需要session共享的web项目中,需要在web.xml中增加
<distributable/>
4.启动
先启动apache服务
再启动tomcat服务
注意apache的网络监听端口和tomcat的不要相同
Apache2.2 + tomcat7 服务器集群配置的更多相关文章
- Mongo服务器集群配置【转】
http://www.cnblogs.com/wly923/tag/MongoDB/ 当前标签: MongoDB Mongo服务器集群配置学习三——分片 风行影者 2013-04-14 22:35 ...
- Apache+Tomcat服务器集群配置
在实际应用中,如果网站的访问量很大,为了提高访问速度,可以与多个Tomcat服务器与Apache服务器集成,让他们共同运行servlet/jsp 组件的任务,多个Tomcat服务器构成了一个集群(Cl ...
- Redis 之服务器集群配置
常见的集群架构如图: redis操作过程中数据同步的函数调用关系: 集群搭建: 1.修改3个redis.config 文件的: 2.启动2个redis服务器 当杀掉redis主进程Master时,由于 ...
- Nginx详解-服务器集群
Nginx是什么 代理服务器:一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端.应用比如:GoAgent,FQ神器. 一个完整的代理请求过程为:客户端首先 ...
- Hbase集群类型|集群配置|服务器选型|磁盘容量规划
HBase和Hadoop的集群类型 1.单机模式 主要用于开发工作,一台机器上运行所有的守护进程,或者一台机器运行多个虚拟机.一般用于评估和测试. 2.小型集群 20台机器以内的集群,不同的机器运行不 ...
- (转)Apache+Tomcat集群配置
本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apache是ht ...
- 1.Apache+Tomcat负载均衡+集群配置
1.本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apache是 ...
- FineReport如何部署Tomcat服务器集群
环境准备 Tomcat服务器集群中需要进行环境准备: Apache:Apache是http服务器,利用其对Tomcat进行负载均衡,这里使用的版本是Apache HTTP Server2.0.64: ...
- Tomcat集群配置学习篇-----分布式应用
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
随机推荐
- [转]创建一个 Microsoft Outlook 扩展插件
本文转自:https://coyee.com/article/10625-how-to-create-an-add-in-for-microsoft-outlook 下载示例 1.介绍 Visual ...
- Java使用Redisson分布式锁实现原理
本篇文章摘自:https://www.jb51.net/article/149353.htm 由于时间有限,暂未验证 仅先做记录.有大家注意下哈(会尽快抽时间进行验证) 1. 基本用法 添加依赖 &l ...
- 从mysql中dump数据到本地
方法一:使用mysqldump命令,如: mysqldump -h10.90.6.237 -uf_insplat2car_r -P3306 -pxxxxxxxxx nbmp tb_tag_log -- ...
- js实现unicode码字符串与utf8字节数据互转
js的string变量存储字符串使用的是unicode编码,要保存时必须选择其他编码后进行传输,比如转成utf-8,utf-32等.存储到数据库中为utf-8编码,读取出来如何转换成正确的字符串就成了 ...
- zookeeper 典型应用
一.发布/订阅 配置文件的集中管理. 问题:当分布式系统变多后,每个系统保存相应的配置文件,会造成同个文件有多份,修改起来非常麻烦. 解决方法:使用zk的发布/订阅功能,配合Watcher机制,在应用 ...
- SVN提交小结
在我们用VS进行项目合作开发的过程中,SVN的提交控制是至关重要的,由于版本冲突造成的各种麻烦咱们已经遇到的够多了.所以,总结他们的经验教训,给我们也给其他人做个提醒.下面的第一部分是需要在正式开发之 ...
- python中面向切片编程(AOP)和装饰器
@函数名(类的描述符)相当于fuc = decorator(fuc) 装饰器: def deco(fuc): print('============') return fuc @deco def fo ...
- LOJ#6271. 「长乐集训 2017 Day10」生成树求和 加强版
传送门 由于是边权三进制不进位的相加,那么可以考虑每一位的贡献 对于每一位,生成树的边权相当于是做模 \(3\) 意义下的加法 考虑最后每一种边权的生成树个数,这个可以直接用生成函数,在矩阵树求解的时 ...
- setInterval和setTimeout的区别以及setInterval越来越快问题的解决方法
setInterval()和setTimeout()方法都是js原生的定时方法,当然它们两个的作用也是不同的,并且最近在做上下滚动公告栏的时候,发现了setInterval()非常令人抓狂的问题,那就 ...
- sqlserver年月日转汉字大写--自定义函数--繁体
两个自定义函数结合 函数一: create function convertNumToChinese ()) ) as begin ) ' set @temStr = '壹' ' set @temSt ...