设为首页 收藏本站
查看: 1418|回复: 0

[经验分享] 利用mod_proxy实现Apache和Tomcat整合负载均衡

[复制链接]

尚未签到

发表于 2015-8-1 12:38:29 | 显示全部楼层 |阅读模式

  • 在项目实施过程中,我们经常需要将Web应用服务器与外网隔离,或者需要多台Web应用服务器作负载平衡。通过apache与tomcat整合配置,我们可以很容易实现这些需求。负载均衡就是将客户端的请求分流给后端的各个真实服务器,达到负载均衡的目的。还有一种方式是用两台服务器,一台作为主服务器(Master), 另一台作为热备份(Hot Standby),请求全部分给主服务器,在主服务器当机时, 立即切换到备份服务器,以提高系统的整体可靠性。如下图所示:
    DSC0000.png
    在实际操作中,主要是Apache作为主服务器运行,当监听到有jsp或者servlet的请求时,将请求转发给tomcat服务器,由tomcat服务器进行解析后,发回apache,再由apache发回用户。一般情况下将静态文件部署在Apache web服务器,相关JSP文件部署在tomcat容器。
      Apache 2.1版本以上,可以通过mod_proxy和mod_proxy_balance结合,通过简单配置,不用下载mod_jk即可实现负载均衡。
      参考:
      mod_proxy:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
      mod_proxy_balance:http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
    本文在同一台windows7下运行两个tomcat和一apache进行负载均衡测试。
    软件安装:
  • 1 下载Tomcat到D:\web_server,并拷贝一副本,形成两个节点,如图; DSC0001.png 。为了能在同一台PC上运行多个tomcat,必须保证两者的启动端口、关闭端口、和AJP端口均不一样。
  • 修改tomcat6_1\conf\server.xml,主要修改三个地方:


    //修改Engine,添加jvmRoute="lb1"标识
       

  • 修改tomcat6_2\conf\server.xml,主要修改三个地方:




    //修改Engine,添加jvmRoute="lb2"标识
      
    2 下载并安装apache 2.2软件包,
      2.1 查找Apache2.2\conf\httpd.conf中去掉如下几行的注释
      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
      LoadModule proxy_http_module modules/mod_status.so
    2.2 修改Apache2.2\conf\httpd.conf,在文本最后面添加如下文本:
    ProxyRequests Off #,关闭正向代理,负载均衡器就是一个反向代理
    #loadfactor设置是否平均分配,如下是1:1;

      BalancerMember ajp://127.0.0.1:7009 route=lb1 loadfactor=1
    BalancerMember ajp://127.0.0.1:9009 route=lb2 loadfactor=1
      #ProxyPass / balancer://testcluster/是协议地址,前后都应该有斜杠 /
    ProxyPass / balancer://testcluster/ lbmethod=byrequests stickysession=JSESSIONID
      # lbmethod 提供了三种负载方法,分别是byrequest、bytraffic、bybusyness;见下面的表格

    #负载均衡会尽量让各个服务器接受的请求次数满足预设的比例。如果要改变算法,可以使用 lbmethod 属性
    lbmethod=byrequests
    按照请求次数均衡(默认)
    lbmethod=bytraffic
    按照流量均衡
    lbmethod=bybusyness
    按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)


    PS:Apache2默认端口号是80,最后修改成其它端口号,以免和其它app发生冲突,在Apache2.2\conf\httpd.conf查找Listen 修改为8011
    #Listen 12.34.56.78:80
    Listen 8011
    配置完后,重新启动apache、和两个tomcat,在浏览器中输入:http://localhost:8011/examples/
    DSC0002.png
    此时,您可以任意关闭其中一个tomcat,测试可以发现系统照样运行正常。

    2.3 负载均衡监控
    修改Apache2.2\conf\httpd.conf,在文本最后加入如下语句;
    SetHandler balancer-manager
    Order deny,
    allowDeny from all
    Allow from all

请确保已经去掉如下两行的注释:
  LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_status.so //之前因为忽略了这行,找原因找了一天,后来啃官方文档才发现缺失了这个模块。
接下来就可以访问http://localhost:8011/balancer-manager监控负载均衡
DSC0003.jpg
3 这是备份服务器设置(这个没做实验,引自apache官方网站):
  ProxyPass / balancer://hotcluster/
      
        BalancerMember ajp://1.2.3.4:8009 loadfactor=1
        BalancerMember ajp://1.2.3.5:8009 loadfactor=2
        # The below is the hot standby
        BalancerMember ajp://1.2.3.6:8009 status=+H //此为备份服务器,只需添加status=+H
        ProxySet lbmethod=bytraffic           
     
  ps:负载均衡监控迁移到linux下环境,balancer-manager环境又起不来了,今天请教了下池烨师兄,只需要再添加一行
  ProxyPass /balancer-manager  ! //直接访问apache,而不要转发到tomcat
接下来就是利用LoadRunner进行压力测试咯。~~
Detail.lee
福建省空间信息工程研究中心
2011.05.17

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-93011-1-1.html 上篇帖子: http://ibatis.apache.org/dtd/ibatis-3-config.dtd Cause: java.net.ConnectExcepti 下篇帖子: Data Collection with Apache Flume(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表