- 所需软件:
- Apache 2.2.11
- Tomcat 6.x压缩版(.zip, .tar等压缩格式的版本)。
2. 配置步骤:
1) 安装Apache 2.2.11。tomcat 集群负载均衡需要apache服务器来配合实现,所以我们需要安装apache。另外,由于apache 2.2.11已经集成了jk2等负载工具,这将简化我们的配置。可以用安装版或解压版安装apache。
-
- 如果用windows下安装版安装,根据向导填写相应参数即可完成。
-
- 如果用压缩版,需要将apache解压到一个目录下面,然后打开$APACHE_HOME/conf/httd.conf, 根据实际配置下面参数:
#apache安装根目录 ServerRoot "D:/devCenter/cluster_lab/Apache2.2 " #端口 Listen 80 # ServerAdmin 邮件 #http文档根目录 DocumentRoot "D:/devCenter/cluster_lab/Apache2.2/htdocs" # # This should be changed to whatever you set DocumentRoot to. # <Directory "D:/devCenter/cluster_lab/Apache2.2/htdocs"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* — "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None
# # Controls who can get stuff from this server. # Order allow,deny Allow from all </Directory> <IfModule alias_module> # directives as to Alias. ScriptAlias /cgi-bin/ "D:/devCenter/cluster_lab/Apache2.2/cgi-bin/" </IfModule> # # "D:/devCenter/cluster_lab/Apache2.2/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory "D:/devCenter/cluster_lab/Apache2.2/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> |
2) 启动apache, 然后通过http://localhost/来测试,检查apache是否已经启动。
3) 启用负载均衡相关的module, 打开$APACHE_HOME/conf/httd.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 |
4)配置IfModule dir_module节点:找到<IfModule dir_module>节点,在DirectoryIndex index.html后加上index.jsp,这一步只是为了待会配置完tomcat后能看到小猫首页,可以不做。
5)配置httpd-vhosts.conf中的虚拟主机:打开$APACHE_HOME/conf/extra/httpd-vhosts.conf, 在最下面添加以下信息:
<VirtualHost *:80> ServerAdmin 管理员邮箱 ServerName localhost ServerAlias localhost ProxyPass / balancer://sy/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://sy/ ErrorLog "logs/sy-error.log" CustomLog "logs/sy-access.log" common </VirtualHost> |
然后在$APACHE_HOME/conf/httd.conf, 启用下面配置:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
6)打开$APACHE_HOME/conf/httd.conf,在最下面添加以下信息:
ProxyRequests Off <proxy balancer://sy> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2 </proxy> |
ProxyRequests Off 是告诉Apache需要使用反向代理,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。loadfactor是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。这样就可以使配置更灵活,例如可以给性能好的服务器增加处理工作的比例,如果采取多台服务器,只需要修改ip地址和端口就可以了。route参数对应后续tomcat配置中的引擎路径(jvmRoute)。
7) 解压tomcat 到一个目录,并复制一份。然后打开两个tomcat下面conf/server.xml。
注意:如果tomcat在不同机器上面,端口可以使用默认值。
o 配置关闭端口:其中一个tomcat的<Server port="8005" shutdown="SHUTDOWN">保持不变,将另一个的端口修改为9005.
o 配置Connector的端口:找到non-SSL HTTP/1.1 Connector,即tomcat单独工作时的默认Connector,保留第一台默认配置,在8080端口侦听,而把第二台设置为在9080端口侦听。往下找到AJP 1.3 Connector,<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />,这是tomcat接收从Apache过来的ajp连接请求时使用的端口,保留第一台默认设置,把第二台端口改为9009。
o 配置jvmRoute:第一台tomcat的server.xml中找到<Engine name="Catalina" defaultHost="localhost">,去掉这段或改为注释,把上方紧挨的<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">注释符去掉,对于第二台,去掉注释符并把jvm1改为jvm2。
o 配置Cluster:将两个tomcat的server.xml中<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />的注释去掉。这里的配置是为了可以在集群中的所有tomcat节点间共享会话(Session)。如果仅仅为了获得一个可用的tomcat集群,Cluster只需要这么配置就可以了。
8) 测试:
只需要简单的几步就配置完成,然后可以测试一下是否配置成功。引用网上的一个测试方法,就是在webapps目录下新建test目录,在test目录下新建test.jsp文件,代码我稍作改动如下:
out.print("<b>Session 列表</b><br />"); |
在test目录下继续新建WEB-INF目录和web.xml,在<web-app>节点下加入<distributable />
其它更加详细的配置可以参考 http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html 和 http://tomcat.apache.org/tomcat-6.0-doc/balancer-howto.html
作者:豆博草堂