Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,Apache 反应速度快,运行效率高,但只支持HTML等静态页面(加载插件后也可支持 PHP 页面)。Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器,它除了支持HTML等静态页面外,还支持JSP、Servlet 。在相同的运行环境下,Tomcat 对静态页面的反应速度没有 Apache 灵敏,生产环境使用 Apache 与 Tomcat 搭建负载均衡集群,可以提高网站并发。Apache+Tomcat搭建集群连接有三种方式:JK、http_proxy、ajp_proxy
在开始下文之前,需要已安装了apache和tomcat,可参考:安装配置apache 、安装配置tomcat
1.准备两套tomcat环境
cp -a /usr/local/tomcat /usr/local/tomcat1 cp -a /usr/local/tomcat /usr/local/tomcat2 vim /usr/local/tomcat1/conf/server.xml #修改tomcat1的标识名,这一步必须做 <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> vim /usr/local/tomcat2/conf/server.xml #修改tomcat2的远程停止服务端口,如果两台tomcat在不同机器上就不用修改 <Server port="8006" shutdown="SHUTDOWN"> #修改tomcat2的HTTP监听端口,如果两台tomcat在不同机器上就不用修改 <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> #修改tomcat2的AJP监听端口,如果两台tomcat在不同机器上就不用修改 <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> #修改tomcat2的标识名,这一步必须做 <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2"> vim /usr/local/tomcat2/conf/context.xml #要实现session复制,还需要在Context添加属性distributable="true" <Context distributable="true"> vim /usr/local/tomcat1/conf/context.xml #同理,还需tomcat1的Context添加属性distributable="true" <Context distributable="true"> vim /usr/local/tomcat1/webapps/ROOT/test.jsp #在tomcat1的wed路径下创建一个用于测试的页面 tomcat1 SessionID: <%=session.getId() %> vim /usr/local/tomcat2/webapps/ROOT/test.jsp #在tomcat2的wed路径下创建一个用于测试的页面 tomcat1 SessionID: <%=session.getId() %>
2.修改apache配置文件
vim /usr/local/apache2/conf/httpd.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 slotmem_shm_module modules/mod_slotmem_shm.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so Include conf/extra/httpd-vhosts.conf #增加默认主页index.jsp DirectoryIndex index.html index.jsp #再到最后添加:关闭正向代理、负载均衡的地址、权重等信息 ProxyRequests Off <proxy balancer://cluster> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=jvm2 </proxy> #修改apache虚拟机配置文件如下 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ServerAdmin admin@qq.com ServerName localhost ServerAlias localhost ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ </VirtualHost>
3.测试
重启tomcat和apache后(如果启动不起来会在相应日志里打印,查询并排除即可),在浏览器地址栏输入http://<server IP>/test.jsp,可以看到使用的是tomcat1或者tomcat2下的test.jsp文件,一直刷新页面也是固定不变的,说明黏性Session设置没问题。