tomcat_Apache实现多服务器网络负载平衡

    在开发大型的网络应用时,有时一台服务器往往不能满足客户端的要求,此时只能通过增加服务器来解决问题,也就是使用多台服务器平衡网络的负载。通过网络负载平衡将多台服务器以一个IP地址公布给网络,对外界而言看到的就像是一台服务器一样,如果网络负载平衡中的一台或几台服务器不可用时或繁忙时,服务不会中断,能够迅速在剩余的服务器中重新指派客户机通讯,帮助你为关键的业务程序提供不中断的服务。
    针对于不同类型的应用程序,实现网络负载平衡的方式也不相同,在Windows Server 2003中,可以很容易完成在网络负载平衡管理(这是它自带的组件),当配置完负载平衡后,只要支持负载平衡的服务都可以自动实现负载平衡,如:Internet信息服务 (IIS)、ISA Server 2000防火墙与代理服务器、VPN虚拟专用网、终端服务器、Windows Media Services(Windows视频点播、视频广播)等服务。
    如果想要架设上述以外的服务,那就需要服务自身对网络负载平衡的支持,下文讲述怎样用Apathe服务器+tomcat实现网络负载平衡。
    tomcat实现网络负载平衡的方式有两种,第一种是依赖于Windows Server 2003,这种方式的原理是:在多台服务器上安装内容相同的tomcat服务器,通过配置文件使其与Windows Server 2003的心跳相关,这样多个tomcat之间可以通过Windows Server 2003的心跳联系起来实现sessin的同步与共享。这种方式比较简单,但有很大的缺点,它需不断的读Windows Server 2003的平衡处理信息,在效率上不理想,而且无法跨平台。
    理想的方式是不依赖于OS,tomcat本身就具备集群管理的能力。以这种方式实现需要按照以下几个步骤进行。
    一、准备
        Apache服务器
 下载地址:http://httpd.apache.org
 Apache HTTP服务器(下文简称Apache服务器或者Apache)是由Apache软件组织提供的开放源代码软件,它是一个非常优秀的专业的Web服务器,为网络管理员提供了丰富多彩的Web管理功能,包括目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID功能、子进程资源管理、服务器端图像映射、重写URL、URL拼写检查及联机手册等。Apache 服务器本身没有提供 Servlet/JSP 容器。因此,在实际应用中,把 Tomcat与Apache服务器集成,可以建立具有实用价值的商业化的Web平台。
 JK插件(mod_jk.so)
   下载地址:http://tomcat.apache.org/download-connectors.cgi
 JK插件是用来使Apache服务器连接到tomcat的插件。该插件的版本要与Apache服务器版本统一,不然加载不上(我用的是2.0.63版,这里一定要注意,我已经被折磨了)。
  tomcat5.5这个版本不限。
    二、安装与配置
 1.在两台服务器上安装tomcat,假设IP分别为192.168.0.2,192.168.0.3,端口都是8080,并网络畅通。
 2.在其中的一台机器上或第三台机器上安装Apache2.0.63,只要按默认设置进行安装即可。如果安装成功,会自动在Windows中加入Apache HTTP服务,并且采用默认的80端口作为HTTP端口,注意在安装前确认80端口没有被占用,或安装时使用其它的端口。<APACHE_HOME>/conf子目录下有一个配置文件httpd.conf。找到Listen 80 ,可以在这里重新修改端口号。
 3.把mod_jk.so复制到<APACHE_HOME>/modules目录下。
 4.在<APACHE_HOME>/conf目录下创建如下的tomcats.properties文件,内容如下:
worker.list=tomcat1,tomcat2,loadbalancer  #表示连接的服务列表
worker.tomcat1.port=8009  #tomcat中用于连接管理的端口,tomcat中默认是这个端口,可以在tomcat/conf/server.xml中改成别的
worker.tomcat1.host=192.168.0.2  #Tomcat服务器的地址
worker.tomcat1.type=ajp13  #类型
worker.tomcat1.lbfactor=100  #负载平衡因数

worker.tomcat2.port=8009 
worker.tomcat2.host=192.168.0.2 
worker.tomcat2.type=ajp13  #类型
worker.tomcat2.lbfactor=100  #负载平衡因数

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1,tomcat2 #在tomcat1和tomcat2中平衡
worker.loadbalancer.sticky_session=1#0表示不锁定session,1表示锁定
worker.loadbalancer.sticky_session_force=false
 5.在<APACHE_HOME>/conf/httpd.conf文件的最后加入:
LoadModule  jk_module  modules/mod_jk.so
JkWorkersFile  conf/tomcats.properties
JkLogFile  logs/mod_jk.log
JkLogLevel debug   #日志级别debug,info,error,war
JkMount  /*.jsp  loadbalancer #当访问*.jsp时先会启动loadbalancer,然后通过该服务自动平衡到具体的comcat服务器上。
    三、运行
 在两台tomcat服务器的webapps/root下分别建立一个test.jsp文件,里面分别写上tomcat1和tomcat2.
 重新启动Apahe服务器与两台tomcat服务器,在地址栏输入:http://Apache服务器地址/test.jsp。会发现当 worker.loadbalancer.sticky_session=0时,显示结果每次刷新可能会不同,证明它已平衡到不同的tomcat上了,而得1时,在同一个session中它会强行的绑定到同一个tomcat上。

  
 

       

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值