文档章节

apache做负载均衡器 配置

朱君
 朱君
发布于 2014/04/09 08:56
字数 2206
阅读 165
收藏 1

将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)是以流量为权重负载均衡的,这是最大的区别)。

注:每次修改httpd.conf,用apachectl –k restart重新启动Apache。



   apache功能其实很是强大,最近一段时间研究了下apache的反向代理和负载均衡,反向代理网协的外网出口和我的博客出口就是通过apache的反向代理实现的,总结一下,重点说说负载均衡的配置。
首先说先实验环境吧
操作系统:DEBIAN 5.03(Ubuntu也可以同理配置)

一、安装apache加载模块

apt-get install apache2
然后进入到apache的配置目录
cd /etc/apache2
apache的反向代理和负载均衡其实利用的都是反向代理的原理,至于什么叫做反向代理可以点此http://baike.baidu.com/view/1165595.htm

关键需要加载下面三个模块
LoadModule proxy_module modules/mod_proxy.so   
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   
LoadModule proxy_http_module modules/mod_proxy_http.so 

由 于Debian系统下apache所有的模块都是放在/usr/lib/apache2/modules/里面的,通过/etc/apache2 /mods-available里面的*.load加载的,如果要模块的话需要在/etc/apache2/mods-enabled里面用ln建立链 接,当然你也可以再/etc/apache2/apache2.conf里面直接把上面三句话写进入,但是不建议这样做。执行代码如下
ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
ln -s /etc/apache2/mods-available/proxy_balancer.load /etc/apache2/mods-enabled/proxy_banancer.load

做好上面几步之后我们重启下apache
/etc/init.d/apache2 restart

二、配置反向代理功能

加载完模块后可以建立一个虚拟主机来作为反向代理
vi /etc/apache2/sites_available/proxy
配置如下
Listen 202.xxx.xxx.xxx:80     (别人访问的IP和端口)
<VirtualHost 202.xxx.xxx.xxx:80> (同上)
ServerAdmin admin@bit.net
ProxyRequests Off             (说明开启的是反向代理)
ProxyMaxForwards 100
ProxyPreserveHost On
ProxyPass / http://10.x.xx.xxx/ (转发到url上的请求)
ProxyPassReverse / http://10.x.xx.xxx/
 <Proxy *>                (这段是访问的控制)
 Order Deny,Allow
 Allow from all
 </Proxy>
</VirtualHost>
然后再在/etc/apache2/sites_enabled/里面建立ln链接
ln -s /etc/apache2/sites_available/proxy /etc/apache2/sites_enabled/proxy
重启apache
/etc/init.d/apache2 restart

然后反向代理就开启了
当别人输入http://202.xxx.xxx.xxx时 就会通过反向代理转到http://10.x.xx.xxx上,这样简单的反向代理功能就开启了

三、apache负载均衡配置

a、简单的负载均衡

然后接着讲apache的负载均衡模块吧
同理建立一个虚拟主机来作为负载均衡
vi /etc/apache2/sites_available/balancer
配置如下
Listen 202.x.xx.xxx:80        (别人访问的IP和端口)
<VirtualHost 202.x.xx.xxx:80>

     ServerAdmin admin@bit.com
     ProxyRequests Off
     Proxypass / balancer://proxy/  
     <Proxy balancer://proxy>
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1
         BalancerMember http://10.0.0.2
     </Proxy>

</VirtualHost>
从上面的 ProxyRequests Off 这条可以看出,实际上负载均衡器就是一个反向代理,只不过它的代理转发地址不是某台具体的服务器,而是一个 balancer://协议地址
ProxyPass / balancer://proxy/ 协议地址可以随便定义。然后,在<Proxy>段中设置该balancer协议的内容即可。 BalancerMember指令可以添加负载均衡组中的真实服务器地址。

然后再在/etc/apache2/sites_enabled/里面建立ln链接
ln -s /etc/apache2/sites_available/balancer /etc/apache2/sites_enabled/balancer
重启apache
/etc/init.d/apache2 restart
这样apache的负载均衡就配置好了

如 果访问http://202.x.xx.xxx的时候会均匀地打开http://10.0.0.1和http://10.0.0.2,比如你两次打开 http://202.x.xx.xxx会又一次打开http://10.0.0.1一次打开http://10.0.0.2这样就是两台服务器接受的请 求平均了,达到了负载均衡的效果。

b、负载比例分配

当然如果你发现你的两台服务器配置不一样,一台较好,一台较差,那么就要开始配置不同比例的负载均衡了。如果两台服务器你想配置负载分配比为3:1则配置文件如下

Listen 202.x.xx.xxx:80        (别人访问的IP和端口)
<VirtualHost 202.x.xx.xxx:80>

     ServerAdmin admin@bit.com
     ProxyRequests Off
     Proxypass / balancer://proxy/  
     <Proxy balancer://proxy>
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1   loadfactor= 3
         BalancerMember http://10.0.0.2   loadfactor= 1
     </Proxy>

</VirtualHost>

c、负载分配算法

当然你可能想通过不同的算法实现负载均衡,比方说按照请求次数,或者按照流量均衡,这里用到的指令是lbmethod
lbmethod可能的取值有: 
lbmethod=byrequests 按照请求次数均衡(默认) 
lbmethod=bytraffic 按照流量均衡 
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

按照流量的均衡配置如下

Listen 202.x.xx.xxx:80        (别人访问的IP和端口)
<VirtualHost 202.x.xx.xxx:80>

     ServerAdmin admin@bit.com
     ProxyRequests Off
     Proxypass / balancer://proxy/  
     ProxySet lbmethod=bytraffic   (加上这句)
     <Proxy balancer://proxy>
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1   loadfactor= 3
         BalancerMember http://10.0.0.2   loadfactor= 1
     </Proxy>

</VirtualHost>
这样你的负载均衡就可以按照流量均衡了

d、热备份
在最后讲一讲热备份吧,热备份的实现很简单,只需添加 status=+H 属性,就可以把某台服务器指定为备份服务器,配置文件如下
Listen 202.x.xx.xxx:80        (别人访问的IP和端口)
<VirtualHost 202.x.xx.xxx:80>

     ServerAdmin admin@bit.com
     ProxyRequests Off
     Proxypass / balancer://proxy/  
     ProxySet lbmethod=bytraffic   (加上这句)
     <Proxy balancer://proxy>
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1   
         BalancerMember http://10.0.0.2   status=+H
     </Proxy>

</VirtualHost>
  从配置中可以看出请求总是流向http://10.0.0.1,一旦http://10.0.0.1挂掉, Apache会检测到错误并把请求分流给 http://10.0.0.2。Apache会每隔几分钟检测一下http://10.0.0.1的状况,如果http://10.0.0.1恢复,就 继续使用http://10.0.0.1,这样就可以实现热备份了


好了总结完了,最近发现apache的功能确实是很强大,各种模块都有待发掘,一直在听说Nginx的并发比apache要好,有时间再发个两者的比较的文章吧。


本文转载自:http://zhumeng8337797.blog.163.com/blog/static/100768914201242211633248/

共有 人打赏支持
朱君

朱君

粉丝 12
博文 4
码字总数 0
作品 7
上海
后端工程师
JBoss 系列二:使用Apache httpd(mod_cluster)和JBoss构架高可用集群环境

什么是企业应用集群 集群是指把不同的服务器集中在一起,组成一个服务器集合,这个集合给客户端提供一个虚拟的平台,使客户端在不知道服务器集合结构的情况下可以对这一服务器集合进行部署应...

无鸯
2014/02/04
0
0
F5负载均衡器的功能介绍和配置图示

基于庞大的网络结构,集群服务器的使用带来了不少流量等负载问题。那么相对的,负载均衡的技术也应运而生。每一种技术都需要产品的支持,那么现在我们来认识一下F5负载均衡器的一种。那么首先...

凡尘里的一根葱
2015/11/06
0
1
深入了解ApusicAS服务器配置系列之——AAS集群:使用第三方负载均衡器相关配置

ApusicAS集群对第三方的负载均衡(如:硬件负载均衡器F5,软件负载均衡器Apache Server,微软的IIS等)提供良好的支持。 当使用第三方的负载均衡器时,AAS的Session复制同样采用内存复制技术...

晨曦之光
2012/03/09
0
0
把Web集群由HTTP转换为HTTPS(LVS+HAProxy+SSL)

一、环境介绍 接到通知,要求网站由http改为使用https,目前我的网站前端架构如下图所示: 假设我们有两台物理机,每台物理机上面有很多的tomcat容器,前端使用的是haproxy进行的http层负载均...

English0523
01/12
0
0
apache+jk+tomcat集群配置

1集群配置介绍 Apache Tomcat可以说是当下最受欢迎的开源Java Web服务器。Tomcat的单个实例恐怕无法满足访问量日增的需要。这种情况下,需要考虑在“集群”环境下运行Tomcat;在这种环境下,...

bill2candy
2016/10/28
14
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
13
3
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部