Apache服务器实现负载均衡策略配置详解

 更新时间:2016年1月28日 00:50  点击:1399

随着访问量的不断提高,以及对响应速度的要求,进行负载均衡设置就显得非常必要了。公司的系统在最初设计的时候就已经考虑到了负载均衡的规 划,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上了。

[!--infotagslink--]

相关文章

  • 分享一段php获取linux服务器状态的代码

    简单的php获取linux服务器状态的代码,不多说-直接上函数:复制代码 代码如下:function get_used_status(){ $fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r");//获取某一时刻系统cpu和内存使用情况 $rs =...2014-05-31
  • Springboot+TCP监听服务器搭建过程图解

    这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-28
  • 服务器 UDP端口占用几千个的解决办法

    前一段时间使用NetStat命令查看服务器端口时,发现服务器udp端口开放了好多,最少在1000个以上,当时事情比较多,没有管它,今天终于有点时间,仔细检查了一下,排除了这个问题. ...2016-01-27
  • PHP连接公司内部服务器的MYSQL数据库的简单实例

    “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
  • 解决HttpPost+json请求---服务器中文乱码及其他问题

    这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22
  • docker swarm外部验证负载均衡时不生效的解决方案

    这篇文章主要介绍了docker swarm外部验证负载均衡时不生效的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-27
  • Java Spring Cloud 负载均衡详解

    这篇文章主要介绍了Spring Cloud负载均衡及远程调用实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-09-18
  • Hyper-V尝试连接到服务器出错无效类的解决方法

    这篇文章主要介绍了Hyper-V尝试连接到服务器出错无效类的解决方法,需要的朋友可以参考下...2016-09-28
  • mac使用Shell(终端)SSH连接远程服务器的方法

    这篇文章主要介绍了mac使用Shell(终端)SSH连接远程服务器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-11
  • js实现上传图片到服务器

    这篇文章主要为大家详细介绍了js实现上传图片到服务器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-11
  • uploader秒传图片到服务器完整代码

    这篇文章主要为大家详细介绍了uploader秒传图片到服务器的完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-04-27
  • c# HttpWebRequest通过代理服务器抓取网页内容应用介绍

    在C#项目开发过程中可能会有些特殊的需求比如:用HttpWebRequest通过代理服务器验证后抓取网页内容,要想实现此方法并不容易,本文整理了一下,有需求的朋友可以参考下...2020-06-25
  • 图文详解本地Windows 7/8上IIS服务器搭建教程

    这篇文章主要以图文结合的方式详细介绍了本地Windows 78上IIS服务器搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...2017-07-06
  • Linux环境下nginx搭建简易图片服务器

    这篇文章主要介绍了Linux环境下nginx搭建简易图片服务器,需要的朋友可以参考下...2016-01-27
  • Windows 2016 服务器安全设置

    最近公司的网站升级Windows 2016服务器,选择安装了最新版的Windows 2016,以前使用Windows服务器还是Windows 2003系统,发现变化还是挺多的,依次记录下来以备后面查阅...2020-10-05
  • 使用node-media-server搭建一个简易的流媒体服务器

    这篇文章主要介绍了使用node-media-server搭建一个简易的流媒体服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • 阿里云免费套餐再次升级: 含云服务器、云数据库等35+产品

    阿里云免费套餐再次升级,提供更多产品,更久时长的使用,本次活动针对个人用户和企业用户,不过仅限新用户申请,想要了解更多,下面就来简单地了解一下活动规则 阿里云免费...2017-07-06
  • ECMall支持SSL连接邮件服务器的配置方法详解

    首先,主要是ecmall使用的phpmailer版本太低,不支持加密连接。然后,得对相应代码做一定调整。1. 覆盖phpmailer请从附件进行下载: 复制代码 代码如下:http://cywl.jb51.net:81/201405/yuanma/ecmall_phpmailer_lib(jb51.n...2014-05-31
  • golang DNS服务器的简单实现操作

    这篇文章主要介绍了golang DNS服务器的简单实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-01
  • C#如何连接服务器共享文件夹

    这篇文章主要为大家详细介绍了C#如何连接服务器共享文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25