zoukankan      html  css  js  c++  java
  • apache 负载均衡

    随着访问量的不断提高,以及对响应速度的要求,进行负载均衡设置就显得非常必要了。公司的系统在最初设计的时候就已经考虑到了负载均衡的规划,www静态服务器配置了两台,由于初期项目时间紧,并且访问量并不高,所以当时只用了一台,另一台在内网中,只是进行了同步,并为发挥出效用来。此次就是对负载均衡的一个简单测试。
           先介绍一下apache mod_proxy_balancer的几个配置规则(从网上找的):
    将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是:

    1 )轮询均衡策略的配置

    进入Apache的conf目录,打开httpd.conf文件,在文件的末尾加入:
    ProxyPass / balancer://proxy/         #注意这里以"/"结尾
    <Proxy balancer://proxy>
           BalancerMember http://192.168.6.37:6888/
           BalancerMember http://192.168.6.38:6888/
    </Proxy>
          我们来观察上述的参数“ProxyPass / balancer://proxy/”,其中,“ProxyPass”是配置虚拟服务器的命令,“/”代表发送Web请求的URL前缀,如:http://myserver/或者http://myserver/aaa,这些URL都将符合上述过滤条件;“balancer://proxy/”表示要配置负载均衡,proxy代表负载均衡名;BalancerMember 及其后面的URL表示要配置的后台服务器,其中URL为后台服务器请求时的URL。以上面的配置为例,实现负载均衡的原理如下:
          假设Apache接收到http://localhost/aaa请求,由于该请求满足ProxyPass条件(其URL前缀为“/”),该请求会被分发到后台某一个BalancerMember,譬如,该请求可能会转发到 http://192.168.6.37:6888/aaa进行处理。当第二个满足条件的URL请求过来时,该请求可能会被分发到另外一台BalancerMember,譬如,可能会转发到http://192.168.6.38:6888/。如此循环反复,便实现了负载均衡的机制。

    2) 按权重分配均衡策略的配置

    ProxyPass / balancer://proxy/         #注意这里以"/"结尾
    <Proxy balancer://proxy>
            BalancerMember http://192.168.6.37:6888/  loadfactor=3
            BalancerMember http://192.168.6.38:6888/  loadfactor=1
    </Proxy>
          参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。以上面的配置为例,介绍如何实现按权重分配的负载均衡,现假设Apache收到http://myserver/aaa 4次这样的请求,该请求分别被负载到后台服务器,则有3次连续的这样请求被负载到BalancerMember为http://192.168.6.37:6888的服务器,有1次这样的请求被负载BalancerMember为http://192.168.6.38:6888后台服务器。实现了按照权重连续分配的均衡策略。

    3) 权重请求响应负载均衡策略的配置

    ProxyPass / balancer://proxy/ lbmethod=bytraffic  #注意这里以"/"结尾
    <Proxy balancer://proxy>
             BalancerMember http://192.168.6.37:6888/  loadfactor=3
             BalancerMember http://192.168.6.38:6888/  loadfactor=1
     </Proxy>
           参数“lbmethod=bytraffic”表示后台服务器负载请求和响应的字节数,处理字节数的多少是以权值的方式来表示的。 “loadfactor”表示后台服务器处理负载请求和响应字节数的权值,该值默认为1,可以将该值设置在1到100的任何值。根据以上配置是这么进行均衡负载的,假设Apache接收到http://myserver/aaa请求,将请求转发给后台服务器,如果BalancerMember为http://192.168.6.37:6888后台服务器负载到这个请求,那么它处理请求和响应的字节数是BalancerMember为http://192.168.6.38:6888 服务器的3倍(回想(2)均衡配置,(2)是以请求数作为权重负载均衡的,(3)是以流量为权重负载均衡的,这是最大的区别)。

    看明白了没有,根据不同的需要,可以按这三种方式进行配置。我按照第三种配置的,感觉上这种对于负载的均衡更全面合理。我的配置很简单,如下:
    先配置均衡器:
    <Proxy balancer://proxy>
           BalancerMember ajp://127.0.0.1:8009/  loadfactor=1
           BalancerMember http://192.168.10.6:8083/  loadfactor=1
    </Proxy>
    其中http://192.168.10.6:8083实际上是另外一个端口启动的apache,为了测试,它就简单的直接转发所有请求到tomcat。
    对于上次的VirtualHost进行以下的修改即可:
    <VirtualHost *:80>
            ServerName www.test.com
            DocumentRoot /www
            DirectoryIndex index.html index.jsp
            <Directory "/www">
                Options Indexes FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
            </Directory>
            <Directory "/control">
                Options Indexes FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
            </Directory>
            ProxyPass /nxt/images/ !
            ProxyPass /nxt/js/ !
            ProxyPass /nxt/css/ !
            #ProxyPass / ajp://127.0.0.1:8009/
            #ProxyPassReverse / ajp://127.0.0.1:8009/
            ProxyPass / balancer://proxy/
            ProxyPassReverse / balancer://proxy/
    </VirtualHost>
    注释掉之前的ajp转发,而配置成通过balancer去处理。
    通过观察access log,的确有部分请求发送到了8083端口的apache上,而有部分是直接ajp转发到tomcat上了。对于更多的负载均衡的参数检测,待空了再做。

  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2630874.html
Copyright © 2011-2022 走看看