tomcat负载集群部署
http://www.blogjava.net/pengo/archive/2011/04/15/348331.html
http://www.cnblogs.com/shiyangxt/archive/2009/02/26/1398902.html
1. 使用到的工具
a. httpd-2.2.25-win32-x86-no_ssl.msi
b. apache-tomcat-6.0.29
c. jdk1.6(1.7有问题)
2. 部署步骤
a.
安装好httpd-2.2.25-win32-x86-no_ssl.msi后在浏览器中输入http://localhost,如果输出Itworks!代表安装成功
apache的端口在conf/httpd.conf文件中修改:
#Listen 12.34.56.78:80
Listen 80
b.打开apache安装目录的conf/httpd.conf文件,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_modulemodules/mod_proxy_balancer.so
LoadModule proxy_connect_modulemodules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
c.
下拉文档找到Includeconf/extra/httpd-vhosts.conf,去掉前面的注释符
# Virtual hosts
Includeconf/extra/httpd-vhosts.conf
d.
打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上
ServerAdmin
管理员邮箱
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://sy/ stickysession=jsessionidnofailover=On
ProxyPassReverse / balancer://sy/
ErrorLog "logs/sy-error.log"
CustomLog "logs/sy-access.log" common
注意:1.上边80端口对应的是apache的端口,两个端口要一致
2.sy代理名称可自己定义
e.
然后回到httpd.conf,在文档最下面加上
ProxyRequests Off
BalancerMember ajp://127.0.0.1:8009 loadfactor=1route=jvm1
BalancerMember ajp://127.0.0.1:9009 loadfactor=1route=jvm2
注意:1.
上边sy代理名称需要与httpd-vhosts.conf配置的虚拟节点代理名称保持一致
2.127.0.0.1是真实的服务器地址,如果是在不同的机器上集群部署,这里的IP需要与服务器地址一致
3.8009端口是tomcat中protocol="AJP/1.3"配置项的port端口保持一致
4.route路由名称与tomcat中server.xml文件中Engine节点的jvmRoute值保持一致
f.
配置tomcat
1.
打开server.xml配置文件,修改端口 如果是在同一个机器上部署多个tomcat做负载,这里要保证每个tomcat上的端口都不一样,否则在启动时会报端口被占用的错误,如果是在不同的机器上做集群部署,这里可以不用修改
2.
修改端口 同上一样,如果同一台机器上有多个tomcat,需要保证每个tomcat的此端口都不一样,同样如果集群部署多台机器,每台机器上一个tomcat,这里可不做修改,注意此端口需要与httpd.conf文中配置的ajp://127.0.0.1:8009端口保证一致
3.
,去掉这段或改为注释,把上方紧挨的
注释符去掉,此处jvmRoute值需要与httpd.conf文中配置的ajp://127.0.0.1:8009loadfactor=1
route=jvm1中的route值保持一致
4.
向下找到,去掉注释
这里的配置是为了可以在集群中的所有tomcat节点
5.
在应用系统的web.xml文件中的节点下加入,
这一步非常重要,是为了通知tomcat服务器
当前应用需要在集群中的所有节点间实现Session共享间共享会话(Session)
也可以把conf/context.xml中的改为。这两个文件配置一个就可以了
g.
虚拟目录配置(可选)
配置虚拟目录,可以方便部署项目,共享同目录资源,便于维护和日常项目更新和管理。
1.
在E:\ide目录下新建webRoot目录做为tomcat虚拟目录。
2.
配置tomcat1和tomcat2配置文件server.xml 在节点里边添加(此项可以多次添加,如果有多个应用的话)
访问工程的别名" docBase="E:\ide\webRoot"reloadable="false">
path:指定访问该Web应用的URL入口
docBase:指定Web应用的文件路径如果Web应用采用开放目录结构,则指定Web应用的根目录(到WEB-INF所在目录的地址),如果Web应用是个war文件,则指定war文件的路径
reloadable:监测到有class文件被更新的,服务器会自动重新加载Web应用,开发阶段设置成true,正式发布为false
3.
启动apache服务和各个tomcat服务,就OK了
至此所有配置结束
先启动Apache服务,在先后启动两台tomcat,分别点startup.bat批处理。如果一切顺利的话,就会启动成功。再次访问http://localhost/工程名,这样就可以通过负载均衡的模式访问了