日期:2014-05-17  浏览次数:20607 次

Apache+tomcat集群和负载均衡

1前言
??? 本文讲述了如何在Windows和Linux下进行Apahce+Tomcat集群的安装配置。
??? Windows下Tomcat 集群的安装配置与Linux下稍有区别,本文分别进行了讲解。采用的例子为使用Apache作为集群的代理服务器,同时负责负载均衡,然后在两台机器上分别安装两一个Tomcat。如果在一台机器上安装多个Tomcat,需要对端口进行修改,以避免冲突。
??? Apache接受用户的请求,并根据一定规则将请求转发到两台Tomcat中的一台。Tomcat执行请求后,将结果返回给Apache ,Apache再将结果返回给用户。

2 准备工作
2.1 需要的软件
2.1.1 Apache2.2

本文采用的版本为Apache HTTP Server (httpd) 2.2.19 ,即目前最好用的版本。下载地址http://httpd.apache.org/download.cgi,请分别下载windows和linux版本。
使用Apache2.0或者更低版本时,需要单独安装mod_jk,且配置起来比较繁琐。本文采用的Apache2.2版本已经内置了安装集群所必须的模块,配置更简单。
2.1.2 Tomcat6
本文使用的Tomcat版本,Windows是apache-tomcat-6.0.18,linux是apache-tomcat-6.0.32。
2.2 准备机器
实际应用中,每个Tomcat实例一般部署在单独的机器上,且这些机器需要在同一网段。
本文中两台机器情况如下:第一台机器操作系统Windows,IP为192.168.106.57,安装一个Tomcat,第二台机器操作系统linux,IP为192.168.106.14,安装一个Tomcat和 Apahce。
为了实现session复制,需要注意以下两点:
1. 各tomcat实例需在同一网段下。
2. 所有的session attributes必须实例java.io.Serializable接口。
3 安装软件
3.1 Apache安装
3.1.1 Windows下安装

把Apache安装为运行在80端口的Windows服务,安装成功后在系统服务列表中可以看到Apache2.2服务。服务启动后在浏览器中输入http://localhost进行测试,如果能看到"It works!"的页面就代表Apache已经正常工作了。
3.1.2 Linux下安装
1. 解压文件:
文件 httpd-2.2.18.tar.gz放置在/home/tools/下,我们首先解压它。

[root@localhost ~]#cd /home/tools/ 
[root@localhost tools]#tar xzvf httpd-2.2.19.tar.gz

2. 配置安装文件:
安装文件我们想把 apache安装到/opt/apache2目录下,让apache启用DSO ,同时启用“proxy proxy_http proxy_ftp proxy_connect proxy_balancer headers”这六个模块。其中 headers不是集群必须的,但是对今后 apache 的应用有好处。

[root@localhost tools]#cd httpd-2.2.18 
[root@localhost httpd-2.2.18]#./configure --prefix=/opt/apache2 --enable-so --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect proxy_balancer headers"

3. 编译安装:

[root@localhost httpd-2.2.18]#make 
[root@localhost httpd-2.2.18]#make install 

make命令读取配置文件进行编译,编译需要花费不短的时间。make install负责安装。
4. 测试一下:
通过命令启动:

Apache[root@localhost httpd-2.2.18]#cd /opt/apache2/bin 
[root@localhost bin]#./apachectl -k start

在浏览器中输入http://192.168.106.41,如果能看到"It works!"的页面就代表Apache已经正常工作了。
停止命令:[root@localhost bin]#./apachectl -k stop
3.2 Tomcat安装
3.2.1 Windows安装

解压apache-tomcat-6.0.18.zip即可。
3.2.2 Linux安装
首先,将文件 apache-tomcat-6.0.32.tar.gz 拷贝到/opt下:

[root@localhost opt]#cp /home/tools/apache-tomcat-6.0.32.tar.gz /opt 

解压:

[root@localhost opt]#tar xzvf apache-tomcat-6.0.32.tar.gz

4 配置过程
4.1 Apache配置

Apahce的配置包含两个方面:虚拟主机和集群配置。
4.1.1 虚拟主机
1. 在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_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
在linux环境中,此配置在Apache安装过程的第二步已经配置好。
2. 找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释符
3. 打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上如下内容:
<VirtualHost *:80>   
ServerAdmin 邮箱地址
ServerName 服务器名称
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On   
ProxyPassReverse / balancer://cluster/   
ErrorLog "logs/clustertest-error.log"  
CustomLog "logs/clustertest-access.log" common  
</VirtualHost>
其中的的virtualHost*:80为HttpServer监听端口。
ServerAdmin:管理员邮箱
ServerName: 服务器名称
ServerAlias: 配置服务器域名或IP,如果有多个域名或者域名和IP同时使用,则使用空格隔开。
ProxyPas