Apache + Tomcat实现负载均衡

自己在研究时,也Google了很多文章,要么写得不详细,要么按照说明进行配置有测试不成功。因此自己

测试通过写了篇详细说明,以帮助像我一样的人。

本文将使用mod_jk来实现负载均衡。我也有试过使用proxy_module,但总测试不成功,不知道原因。

另外按照网上文章进行集群配置也没成功。郁闷!

 

 

 

1. 软件准备

l  Apache 2.2 http://httpd.apache.org 下载apache_2.2.14-win32-x86-openssl-0.9.8k.msi,并进行安装。

l  Tomcat6:需要2Tomcat

l  jk_modmod_jk-1.2.28-httpd-2.2.3.so1.2.28jk的版本号,2.2.3指的是匹配Apache的版本号。jk_modhttp://tomcat.apache.org中,tomcat-connector分类里面下载,下载时注意版本号要对应Apache的版本号。将mod_jk-1.2.28-httpd-2.2.3.so拷贝到apache安装目录modules目录下。

l  Web应用:写一个test.jsp(往session写入内容,并显示)。将应用部署到两个tomcat服务器中,并保证两个应用的上下文路径(contextPath)相同。

 

 

1.1 Linux下安装

以下为在linux下面安装apachemod_jk的方法,安装好后,配置方法跟在windows下面是一样的.

解压apache:

# tar -xvf httpd-2.2.14.tar.gz

安装apache:

# cd httpd-2.2.14

# ./configure --prefix=/usr/local/Apache  指定安装主目录

# make

# make install

 

安装mod_jk:

# tar -xvf tomcat-connectors-1.2.28-src.tar.gz

# cd tomcat-connectors-1.2.28-src/native

# ./configure --with-apxs=/usr/local/Apache/bin/apxs

# make

# cp ./apache-2.0/mod_jk.so /usr/local/Apache/modules/

Linux下注意路径和目录名的大小写。

接下来的配置不区分操作系统,配置都是一样的。

2. 修改配置

2.1 Apache配置

修改安装目录/conf/httpd.conf,在文件末尾增加一行:

Include conf/mod_jk.conf  #引入jk模块的配置文件。

 

httpd.conf同目录下,新建文件mod_jk.conf,其内容为:

#加载mod_jk Module

LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so

#指定 workers.properties文件路径

JkWorkersFile conf/workers.properties

#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器

JkMount /*.jsp controller

 

httpd.conf同目录下,新建文件workers.properties,其内容为:

worker.list = controller,tomcat1,tomcat2  #server 列表

 

#========tomcat1========

worker.tomcat1.port=8011         #ajp13 端口号,在tomcatserver.xml配置,默认8009

worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多

 

#========tomcat2========

worker.tomcat2.port=8012       #ajp13 端口号,在tomcatserver.xml配置,默认8009

worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor = 1   #server的加权比重,值越高,分得的请求越多

 

#========controller,负载均衡控制器========

worker.controller.type=lb

worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat

worker.controller.sticky_session=true  #实现集群全局session复制,此处值要设置成false

 

注意:第1行的controller,tomcat1,tomcat2要同下面配置的名称要对应(类似log4j.properties)。其中tomcat1,tomcat2,还要同tomcat/conf/server.xml中配置的jvmRoute名称相同,porthost也要同server.xml中的配置对应起来(后面还会讲到)。

2.1.1 非必要配置

如果没有特殊原因,此部分可以不做修改。

修改httpd.conf

因为apache安装默认是80端口,如果80端口给其他程序占用,修改端口。

#Listen 80 修改为Listen IP:port Listen port

Listen 9090    # 或者Listen 12.34.56.78:9090    #ip是本机ip地址。

#修改默认页面:

<IfModule dir_module>

    DirectoryIndex default.html

</IfModule>

#修改默认域名,如果没有域名,也可指定ip地址。ServerName domain:port

ServerName apollo.company.com.cn:80

2.2 Tomcat配置

如果两个tomcat是在一台机器上,server.xml中一些端口要修改,以免冲突。

 

 

 

 

 

分别对两个Tomcat/conf/server.xml进行上述修改。

 

3. 完成并测试

先启动两个Tomcat,再启动Apache。打开两个IE,访问http://localhost/contextPath/test.jsp,查看Tomcat后台打印信息。发现两个IE分别访问两个Tomcat。关闭一个Tomcat再试,两个IE访问的是同一个Tomcat了,被断了服务的那个IE请求被转到另一个Tomcat,并重新创建了session

 

作者:Apollo  2009.12.08  百度空间: http://hi.baidu.com/apollo47 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值