将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要好,有时间再发个两者的比较的文章吧。

apache做负载均衡器 配置的更多相关文章

  1. linux下安装apache与php;Apache+PHP+MySQL配置攻略

    1.apache   在如下页面下载apache的for Linux 的源码包    http://www.apache.org/dist/httpd/;   存至/home/xx目录,xx是自建文件 ...

  2. nginx做负载均衡器以及proxy缓存配置 - SegmentFault

    nginx做负载均衡器以及proxy缓存配置 - SegmentFault nginx做负载均衡器以及proxy缓存配置

  3. apache虚拟主机配置及解析

    Apache虚拟主机配置及解析 1.修改httpd-vhosts.conf 打开apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虚拟主机信息,可以这 ...

  4. Apache安装及配置ssl

    目录 1.windows安装 软件准备 安装apache 开启ssl(Https访问) 打开httpd.conf,解除下面配置的注释 查看ssl模块使用哪一个配置文件 配置https虚拟主机 简单配置 ...

  5. Apache虚拟主机配置(多个域名访问多个目录)

    Apache虚拟主机配置(多个域名访问多个目录) 为了方便管理虚拟主机,我决定使用一种方法,那就是修改httpd-vhosts.conf文件. 第一步首先要使扩展文件httpd-vhosts.conf ...

  6. apache 多域名配置

    一直不明白apache多域名配置的问题,所以只能用不同的端口来配置,现在终于搞懂了一点 首先,开启apache的vhost模块 找到配置文件httpd.conf中的下面两行 #LoadModule v ...

  7. AWS EC2服务器的HTTPS负载均衡器配置过程

    AWS EC2服务器配置负载均衡器步骤:   1.普通负载均衡器   至少两台EC2实例,这里以Centos6.7系统为例 启动之后先安装个apache的httpd服务器默认80端口,或者使用其他服务 ...

  8. Windows 的Apache支持SSI配置

    配置SSI什么是shtml? 使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或 ...

  9. windows下apache+https环境配置

    windows下apache+https环境配置 转 https://www.cnblogs.com/sandaizi/p/7519370.html 1.修改配置文件conf/httpd.conf,去 ...

  10. apache做反向代理

    实验目的 通过apache实现反向代理的功能,类似nginx反向代理和haproxy反向代理 环境准备 逻辑架构如下 前端是apche服务器,监听80端口,后端有两台web服务器,分别是node1和n ...

随机推荐

  1. 一个开源、跨平台的.NET UI框架 - Avalonia UI

    前言 今天大姚给大家分享一个开源.免费(MIT License).跨平台的.NET UI框架:Avalonia UI. Avalonia是一个成熟稳定的平台,用于构建桌面.嵌入式.移动的和Web应用程 ...

  2. Codes 开源研发项目管理平台——创新的敏捷测试解决方案

    前言 Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证.本地部署.全部功能开放,并且对 30 人以下团队免费.它通过整合迭代.看板.度量和自动化等功能,简化测试协同工作, ...

  3. 使用Minio Clinet将老版本Minio的数据迁移到新版本的Minio

    1. 关于Minio Client: MinIO Client是一个命令行工具,用于与Minio或云存储服务进行交互.它支持文件系统和Amazon S3兼容的云存储服务(AWS Signature v ...

  4. Tomcat——IDEA中创建 Maven Web 项目

    IDEA中创建 Maven Web 项目    首先创建一个新的空项目        1.使用骨架      新建模块-找到如下骨架-创建              删除pom.xml中多余的坐标   ...

  5. 视频剪辑过于卡顿,让Pr更流畅的技巧 ( 待测试 )

    事件起因: 项目组某后期同事,使用Pr剪辑视频非常卡顿,但是机器配置是完全满足他的办公需求的 解决办法: 1. 降低回放分辨率 如果你的视频预览卡顿,首先应该考虑的,就是当前回放分辨率是否过高.通常在 ...

  6. 如何增加kasan 出现问题 重启

    要通过启动参数启用或配置 Kernel Address Sanitizer (KASAN) 并设置相关的行为,你可以在启动 Linux 内核时添加以下参数: 启用 KASAN:使用 kasan=1 来 ...

  7. Java日期时间API系列22-----Jdk8中java.time包中的新的日期时间API类,Month月份和DayOfWeek星期的计算。

    Java8中为月份和星期新增的了,Month和DayOfWeek,来处理月份和星期的特殊问题,这2个类都是枚举类,对Month.DayOfWeek源码说明和简单应用,月份英文,月份英文简称,月份中文, ...

  8. 墨天轮访谈 | IvorySQL王志斌—IvorySQL,一个基于PostgreSQL的兼容Oracle的开源数据库

    分享嘉宾:王志斌 瀚高IvorySQL产品经理 整理:墨天轮社区 导读 大家好,我是瀚高IvorySQL产品经理王志斌,IvorySQL是基于PostgreSQL的衍生开源项目. 我今天分享的内容主要 ...

  9. 58. vue常用的api

    1. nextTick  使用场景:通过异步渲染的页面解构不能直接dom操作,要使用 nextTick (延迟回调)等待一下 :nextTick 的作用:感知dom的更新完成,类似于 updated ...

  10. Blazor Hybrid 实战体验:那些你可能没预料到的坑没预料到的坑

    前言 昨天写了一篇介绍 Blazor Hybrid 技术的文章,但限于篇幅,一些问题未能深入探讨.今天,我想继续记录使用 Blazor Hybrid 过程中遇到的几个问题,以及这个技术目前的一些局限性 ...