青蛙学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

转载于:https://www.cnblogs.com/yu2006070-01/p/10313055.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值