• 青蛙学Linux—Apache负载均衡的实现


    1、负载均衡需要的模块

    Apache实现负载均衡也与Nginx一样,通过反向代理进行负载均衡,将请求从前端代理到后端定义的负载均衡服务器组。所以负载均衡也需要打开反向代理需要的模块,另外需要打开以下负载均衡需要的模块:

    # 在Apache主配置文件httpd.conf中取消以下行的注释
    LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
    LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
    LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so

    2、Apache负载均衡算法

    Apache支持以下三种负载均衡算法:

    • byrequests:Apache默认负载均衡算法,基于请求数量计算权重
    • bytraffic:基于I/O流量大小计算权重
    • bybusyness:基于繁忙程度(挂起的请求,即排队暂未处理的请求)数量计算权重

    3、设置后端负载均衡服务器组

    使用如下配置设置一组负载均衡服务器:

    <Proxy balancer://自定义组名>
        BalancerMember 后端URL1 [loadfactor=n] [timeout=n]
        BalancerMember 后端URL2 [loadfactor=n] [timeout=n]
        ...
        BalancerMember 后端URLn [loadfactor=n] [timeout=n]
        ProxySet lbmethod=负载均衡算法
    </Proxy>
    • loadfactor:定义后端服务器的权重,默认为1,可设置1到100之间的任何值,值越大权重越高。比如某台后端服务器该值设置为3,则前端访问四次会有三次请求转给该服务器
    • timeout:定义等待后端节点返回数据的超时时间,单位为秒

    4、通过反向代理指定后端负载均衡组

    ProxyPass "URL路径" "balancer://自定义负载均衡组名" 

    5、Apache负载均衡状态页

    Apache提供了负载均衡状态页,可以让我们很方便的通过网页来查看负载均衡服务器组的负载状态。使用以下配置打开状态页:

    <Location "自定义URI">
        SetHandler balancer-manager
        [Require host|not host xxx]
        [Require ip|not ip xxx.xxx.xxx.xxx]
    </Location>

    此时通过http://xxx/自定义URI即可访问负载均衡状态页。

    6、一个例子

    实验环境:

    • 主机A:IP地址为192.168.0.88,为前端服务器,设置虚拟主机www.abc.com
    • 主机B:IP地址为192.168.0.110,无虚拟主机设置,通过IP可直接访问
    • 主机C:IP地址为192.168.0.106,无虚拟主机设置,通过IP可直接访问
    • 主机D:IP地址为192.168.0.61,无虚拟主机设置,通过IP可直接访问

    主机A做为前端服务器提供客户端访问,主机BCD为后端服务器,提供负载均衡功能;主机A设置域名www.abc.com。

    在未配置负载均衡之前,我们首先访问各主机:

    主机A,www.abc.com

    1

    主机B,http://192.168.0.110

    2

    主机C,http://192.168.0.106

    3

    主机D,http://192.168.0.61

    4

    在主机A的虚拟主机www.abc.com配置文件中添加如下内容(设置负载均衡并打开状态页):

    <Proxy balancer://servers>
        BalancerMember http://192.168.0.110
        BalancerMember http://192.168.0.106
        BalancerMember http://192.168.0.61
        ProxySet lbmethod=byrequests
    </Proxy>
    ProxyPass "/status" !    # 因为做了全站转发,所以必须排除掉状态页
    ProxyPass "/" "balancer://servers/"
    ProxyPassReverse "/" "balancer://servers/"
    <Location /status>
        SetHandler balancer-manager
        Require all granted
    </Location>

    重启Apache后访问www.abc.com(使用的是byrequests且没有设置权重,所以将依次访问三台后端服务器):

    1

    2

    3

    负载均衡状态页www.abc.com/status:

    4

  • 相关阅读:
    [转]ion-slide-box
    [转]Ionic 实现双击返回键退出功能
    [转]highcharts图表入门之:如何让highcharts图表自适应浏览器窗体的大小或者页面大小
    [转]ionic Accordion list three levels
    [转]ionic $state.go passed $stateParams
    [转]ionic tab view hide tab bar
    [转]Ionic + AngularJS angular-translate 国际化本地化解决方案
    [转]Ionic Datepicker
    [转]通过AngularJS directive对bootstrap日期控件的的简单包装
    [转]轻松学习Ionic (四) 修改应用图标及添加启动画面(更新官方命令行工具自动生成)
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/10313055.html
Copyright © 2020-2023  润新知