Apache + Tomcat 集群的配置
公司最近新接了一个项目,客户要求WEB SERVER 必须是APACHE,,由于之前的项目一直都是NGINX,,无奈啊,,由于对方的IT又是在三哥的过度,经过一番的争执只能顺应三哥三姐的要求。。😔
好吧,,即然话语怼不了对方,那就用技术来好好怼一怼三哥三姐,,配置走起。。。
1.首先了解一下APACHE + TOMCAT 组合的概念
其实如果不使用APACHE 直接使用TOMCAT 也可以正常使用,但是单个tomcat的负载数量是有限的,而且一旦挂了就导致整个服务无法访问;所以APACHE+tomcat的集群架构成为必然趋势,需要一个WEB服务器来直接面对用户,然后将所有用户的动态请求比如.java .do的全部转发给不同的tomcat,实现负载的均衡。
2.安装版本
apache2.2.4
tomcat7 2个
3.配置详细
apache 支持三种方式链接 tomcat ,,mod_JK、http_proxy和ajp_proxy
今天我们来详细学习一下http_proxy,链接方式;
Tomcat配置:
一台机器里面如果要启动2台或者多台的tomcat,需要在tomcat/conf/server.xml 下面做一个端口的修改;
1.需改shutdown端口,端口号自定义
2.不同的Tomcat需要不一样的启动端口号,自定义
3.AJP 协议是apache 跟tomcat 链接的协议,这里的端口号也是要自定义
4.jvmRoute 也是apache 链接tomcat的配置项之一
5.有的情况下还需要配置Catalina_home地址,针对每个tomcat做一个配置,比如 tomcat2,,key: catalina_home_2 value: /root/tomcat2 ,,然后在tomcat2下面的catalina.sh 里面都需要将catalina_home 改为catalina_home_2, 第三第四个tomcat依此类推。
Apache 配置
/etc/httpd.conf/http.d 配置
1.http.d配置 添加如下模块导入的配置,或者删除#注释;从apache2.2版本开始安装后会自带下面的模块,更早的版本需要自行安装模块。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.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
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule speling_module modules/mod_speling.so
LoadModule ssl_module modules/mod_ssl.so
2.增加虚拟主机的配置文件,(apache 虚拟主机知识自行百度学习)
在/etc/httpd/conf/extra/下面创建 httpd-vhosts.conf
<VirtualHost *:8090>
ProxyVia on #反向代理必须开启
ProxyRequest off # 正向代理必须关闭
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On 填写下面BalancerMember 的信息
ProxyPassReverse / balancer://cluster/
</VirtualHost>
<proxy balancer://cluster>
BalancerMember ajp://localhost:8009 loadfactor=1 route=tomcat1 smax=5 max=20 ttl=120 retry=300 timeout=15
BalancerMember ajp://localhost:8010 loadfactor=1 route=tomcat2 smax=5 max=20 ttl=120 retry=300 timeout=15
BalancerMember ajp://192.168.3.100:9009 loadfactor=1 route=tomcat3 smax=5 max=20 ttl=120 retry=300 timeout=15
ProxySet lbmethod=byrequests
#lbmethod=byrequests 按照请求次数均衡(默认)
#lbmethod=bytraffic 按照流量均衡
#lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)
</proxy>
#localhost 后面的端口号是第一个tomcat AJP的端口号,route=tomcat1是jvm里面的配置的jvmRoute,timeout有的时候需要做适当调整,如果tomcat反应慢一旦超过15S,apache就会返回service unavailable
3.在http.d文件里面导入虚拟主机的配置文件
Include /etc/httpd/conf/extra/httpd-vhosts.conf
配置完毕重启tomcat和 apache ,,尝试从apache 80端口访问tomcat。下回学习一下不同的tomcat之间会话保持的功能。。。。