Apache+tomcat负载均衡的入门配置

这份文档只是一个初步的配置负载均衡的文档,没有涉及过多的性能优化的东西。

所以也就不多言了,直接切入主题。

一、准备工作

安装JDK 并配置环境变量。这里要求至少 1.5 以上版本。

安装apache2.2 。我的安装目录为: D:\Apache 2.2

安装tomcat6 。为了端口不起冲突,建议直接解压。我这里只使用了两台 tomcat 作为集群服务器。其路径分别为 D:\apache-tomcat-6.0.20_v1 D:\apache-tomcat-6.0.20_v2

二、配置Apache

这里说明一下,我在网上找到的一些资料都在介绍mod_JK 的方式配置负载均衡。但是从 apache2.X 版本之后其自身已经集成了 mod_jk 可以直接使用 mod_proxy 的方式进行负载均衡的配置,所以下面介绍的也即是这种方式。

D:\Apache2.2\conf 目录下找到 httpd.conf 文件,并进行修改。修改步骤:

1、打开相关的模块。

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

LoadModule rewrite_module modules/mod_rewrite.so

在配置文件里找到上述模块,将前边的“# ”去掉 .

2 配置 tomcat 集群

在该配置文件的最后加上:

ProxyRequests Off

ProxyPass / balancer://cluster/

<proxy balancer://cluster> 

BalancerMember ajp:// localhost:8009  loadfactor=1 route= jvm1

BalancerMember ajp:// localhost:9009  loadfactor=1 route= jvm2

</proxy>

注意红色部分,因为这里我只使用了一台物理机器作为集群的配置,所以就直接使用了localhost 指向本地的集群服务器,你也可以使用 127.0.0.1 。如果这里你使用多台机器一起配合的话,只需要将 localhost 修改为其他机器的 IP 地址就行。

另外需要注意的就是上面配置的端口,为什么要这么配置?将在后边结合tomcat 一起做一个详细的说明。

三、配置tomcat

D:\apache-tomcat-*\conf 找到 server.xml ,然后着手修改。

1、配置 server 的关闭。

因为我是在同一台机器上配置两台tomcat ,所以为了使 tomcat 关闭不出现端口被占用的情况,需要修改关闭端口。

<Server port=" 8005 " shutdown="SHUTDOWN">

修改为:

<Server port=" XXXX " shutdown="SHUTDOWN">

注意,我这里用了两台tomcat ,所以第一个 tomcat 我就选择了默认的端口 8005 ,第二个 tomcat 我将此端口修改为了 9005 。总之,如果你有多台 tomcat 服务器群,都需要将它们的端口修改为互不冲突的端口号。

2、配置 Connector

这里又两个地方需要修改, 第一个就是 tomcat 监听的 http 端口,另一个就是 tomcat 监听的 AJP 端口:

<Connector port=" 8080 " protocol="HTTP/1.1" 

               connectionTimeout="20000" 

               redirectPort="8443" />

<Connector port=" 8009 " protocol="AJP/1.3" redirectPort="8443" />

注意,蓝色部分是tomcat http 端口,因为我在同一台机器上配置了两个 tomcat ,为了使它们的 http 端口不冲突,我将第一个 tomcat 使用默认的端口即 8080 ,第二个 tomcat http 端口我修改为了 8081 。同样的道理,如果你还有其他的 tomcat ,记得将它们的 http 端口修改为互不冲突的端口号即可。

另一个需要修改的端口,红色部分的端口, 这里是apache tomcat 链接的关键,前台 apache 就是通过 AJP 协议与 tomcat 进行通信的,以完成负载均衡的作用。 现在回过头去看看 apache httpd.conf 配置,

<proxy balancer://cluster> 

BalancerMember ajp:// localhost:8009  loadfactor=1 route= jvm1

BalancerMember ajp:// localhost:9009  loadfactor=1 route= jvm2

</proxy>

那么,另一个tomcat AJP 端口你知道要配置成什么了吗?对了,就是 9009

3、配置 Engine

<Engine name="Catalina" defaultHost="localhost">,这个是原来的配置,现在将这个配置修改为: <Engine name="Catalina" defaultHost="localhost" jvmRoute=" jvm1 ">,然后另一个 tomcat 修改为 <Engine name="Catalina" defaultHost="localhost" jvmRoute=" jvm2 ">

现在再回过头去看看apache 的配置:

<proxy balancer://cluster> 

BalancerMember ajp:// localhost:8009  loadfactor=1 route= jvm1

BalancerMember ajp:// localhost:9009  loadfactor=1 route= jvm2

</proxy>

这里再说明一点,loadfactor 相当于一种加权策略, loadfactor 的值越大,对应的 tomcat 服务器分到的请求就越多。像上面的这种设置就说明两台 tomcat 将平均负载。

4、配置 Session 的复制

Tomcat里的  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 这个配置默认是被注释掉的,如果想要开启取消注释就 OK ,这也是 tomcat 默认的会话同步和复制配置。一般的情况下,使用默认配置就可以。

关于session 的复制我还没来得及验证过,有需要的同学可以自己去网上找一下相关资料。

猜你喜欢

转载自changkunyang.iteye.com/blog/763816