简单测试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.tsingyuan.cn
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上了。

以上是本文关于Apache 如何完成负载均衡策略配置的详细叙述,希望本文对广大php开发者有所帮助,感谢阅读本文。

(0)

相关推荐

  • 简单测试Apache是如何完成负载均衡策略配置

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

  • Nginx/Httpd负载均衡tomcat配置教程

    在前一篇博客中我们聊了下用Nginx和httpd对后端tomcat服务做反代相关配置,回顾请参考https://www.jb51.net/article/191277.htm:今天我们来聊一聊用Nginx和httpd对tomcat集群做负载均衡的配置以及需要注意的点:在前边的演示和配置都是以单台tomcat来配置使用:但是在生产中单台tomcat实在支撑不了大规模的访问,这个时候我们就需要考虑把多台tomcat做成集群对外提供服务:多台tomcat做成集群对外提供服务就必然要有一个调度器来对客户

  • 详解Nginx服务器之负载均衡策略(6种)

    一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器.详情请查看我的另一篇博客. 二.Nginx负载均衡策略 负载均衡用于从"upstream"模块定义的后端服务器列表中选取一台服务器接受用户的请求.一个最基本的upstream模块是这样的,模块内的server是服务器列表: #动态服务器组 upstream dynamic_zuoyu { server localhost:8

  • Spring Cloud Ribbon 中的 7 种负载均衡策略的实现方法

    目录 Ribbon介绍 负载均衡设置 7种负载均衡策略 1.轮询策略 2.权重策略 3.随机策略 4.最小连接数策略 5.重试策略 6.可用性敏感策略 7.区域敏感策略 项目源码 总结 负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器. 服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使用不同负载均衡策略的场景确实是存在的,所以客户端负载均衡就

  • Apache实现Web Server负载均衡详解(不考虑Session版)

    至少需三台服务器:服务器A:控制服务器服务器B和服务器C:实际执行服务器负载均衡原理:将访问服务器A的请求分发至服务器B和服务器C修改服务器A上apache的http.conf文件: 首先,加载相应的代理模块,去掉以下模块前面的#号:LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modu

  • Nginx四层负载均衡的配置指南

    一.四层负载均衡介绍 什么是四层负载均衡 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器. 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器.TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作.在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,

  • Keepalived+HAProxy实现MySQL高可用负载均衡的配置

     Keepalived 由于在生产环境使用了mysqlcluster,需要实现高可用负载均衡,这里提供了keepalived+haproxy来实现. keepalived主要功能是实现真实机器的故障隔离及负载均衡器间的失败切换.可在第3,4,5层交换.它通过VRRPv2(Virtual Router Redundancy Protocol) stack实现的. Layer3:Keepalived会定期向服务器群中的服务器.发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的

  • Nginx负载均衡/SSL配置的实现

    什么是负载均衡? 当一个域名指向多台web服务器时,添加一台nginx负载均衡服务器,通过nginx负载均衡即可将来自于客户端的请求均衡的发送给每台web服务器,避免单台服务器负载过高而其余服务器较为空闲的不均衡情况出现 配置nginx负载均衡: 在nginx机器上新建配置文件: [root@centos02 ~]# vi /etc/nginx/conf.d/test.conf 添加如下内容: upstream test { ip_hash; server 192.168.0.10:80 wei

  • haproxy+keepalived实现高可用负载均衡(实例配置)

    作者:split_two 环境四台机器都是RedHat4.8(64位)版本: IP地址             用处192.168.5.55       MASTER192.168.2.73       BACKUP192.168.5.54       负载A192.168.5.57       负载B192.168.2.100      VIP 1.MASTER上安装haproxy 复制代码 代码如下: wget http://haproxy.1wt.eu/download/1.3/src/h

  • Java加权负载均衡策略实现过程解析

    加权轮询 后端集群每台机器都分配一个权重,权重高得会承担更多的流量,相反权重低的分配的流量也会少,这种策略允许后端集群机器配置差异化 java实现 import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.springframework.s

随机推荐