日期:2014-05-16 浏览次数:21290 次
本文是看了几位前辈关于Apache+Tomcat 负载均衡、集群的相关文章整理出的一份以便查阅的文章。
?
有关说明是负载均衡,集群以及他们的优点在这里就不加论述了。
?
在Apache2以前的版本中是没有集成和tomcat通信的jk模块,所以要单独下载mod_jk.so文件,再加以配置
?
准备:apache(1个)、tomcat(2个或2个以上)、mod_jk.so文件
?
这种配置方式见 http://www.iteye.com/topic/615307
?
Apache2之后的版本中集成了mod_jk后配置简单了许多,准备的东西和上面一样。
?
安装好apache后,找到\conf下的httpd.conf? 用文本编辑器打开
在110行处将
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
这6行的注释放开(即去掉#)
?
在462行附近把
Include conf/extra/httpd-vhosts.conf 行前的注释放开
?
然后再该文档的最下方加入
ProxyRequests Off <proxy balancer://jqname> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=tomcat1 BalancerMember ajp://127.0.0.1:7009 loadfactor=1 route=tomcat2 </proxy>
?配置apache的反向代理
?
balancer://jqname 配置在集群中所有的tomcat节点
?
下面配置2个集群的tomcat apache与tomcat通信是通过ajp协议,由于我是在一台机器上部署的2个tomcat
所以这里都是127.0.0.1,后面是ajp通信端口在tomcat里面配置,下面会提到。
?
loadfactor是类似一个权值的东西1:1就是各处理50%的请求,以此类推
?
route对应在tomcat中配置的通道路径
?
这样httpd.conf就配置完毕了
?
?
然后打开\conf\extra下的httpd-vhosts.conf 在最后加入
<VirtualHost *:80> ServerAdmin zhanghaifeng212@yahoo.com.cn ServerName 192.168.12.65 ServerAlias localhost ProxyPass / balancer://jqname/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://jqname/ ErrorLog "logs/zhanghf-error.log" CustomLog "logs/zhanghf-access.log" common </VirtualHost>
ServerAdmin 管理员邮箱
ServerName 域名(可以用ip)
ServerAlias 别名
balancer://jqname 需要负载均衡 “jqname” 集群名称,需要和httpd.conf中的集群名称一致
?
httpd-vhosts.conf 配置完毕
?
?
tomcat的配置(这里用的是2个tomcat在同一台机器)
?
分别将tomcat1和tomcat2的conf 中的 server.xml 修改如下
?
在99行附近把
<!-- You should set jvmRoute to support load-balancing via AJP ie : <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> -->
放开注释,把下面的<Engine name="Catalina" defaultHost="localhost"> 加上注释;
或直接在这句上加入 jvmRoute节点
?
jvmRoute和httpd.conf中的route保持一致
?
再将107行附近的
<!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> 放开注释
?放开注释,这个是配置集群的,我们测试用的是tomcat 的默认集群配置
?
?
因为我用的是同一台机器放2个tomcat,需要改一个tomcat 的配置 (如tomcat2的server.xml修改如下)
?
22行附近
<Server port="8005改为7005或其他" shutdown="SHUTDOWN">
?
69行附近
?<Connector port="8080改为7080或其他" protocol="HTTP/1.1"
?????????????? connectionTimeout="20000"
?????????????? redirectPort="8443" />
?
90行附近
<Connector port="8009改为7009或其他" protocol="AJP/1.3" redirectPort="8443" />
?
这里的ajp端口要和httpd.conf中的端口对应。
?
tomcat配置完毕
?
?
最后将项目分别部署到tomat1,和tomcat2中,启动 apache,tomcat1,tomcat2
?
访问http://localhost/yourProjectName/index.jsp 如果加了后台输出语句即可看到,每次请求是轮流使用
tomcat1和tomcat2,在session中保存几个变量输出,也可看见session的同步。把其中一个tomcat关闭,也不
影响另一个。
?
欢迎大家批判!
?