|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果自己想放弃,暴力一点的话,就自己抽自己一个嘴巴。 </p> 第一次看到这个题目时我也很惊奇,Apache竟然还能做负载平衡?真是太壮大了。经由一番查询拜访后发明切实其实可以,并且功效一点都不差。这都归功于 mod_proxy 这个模块。不愧是壮大的Apache啊。
空话少说,上面就来注释一下负载平衡的设置办法。
普通来讲,负载平衡就是将客户真个恳求分流给后真个各个真实办事器,到达负载平衡的目标。还有一种体例是用两台办事器,一台作为主办事器(Master),另外一台作为热备份(Hot Standby),恳求全体分给主办事器,在主办事器当机时,当即切换到备份办事器,以进步体系的全体牢靠性。
负载平衡的设置
Apache可以应对下面这两种需求。先来会商一下若何做负载平衡。起首需求启用Apache的几个模块:
法式代码 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
mod_proxy供应代办署理办事器功效,mod_proxy_balancer供应负载平衡功效, mod_proxy_http让代办署理办事器能撑持HTTP协定。假如把mod_proxy_http换成其他协定模块(如mod_proxy_ftp),也许能撑持其他协定的负载平衡,有乐趣的伴侣可以本人测验考试一下。
然后要添加以下设置装备摆设:
法式代码 ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080
BalancerMember http://node-b.myserver.com:8080
</Proxy>
ProxyPass / balancer://mycluster
# 正告:以下这段设置装备摆设仅用于调试,毫不要添加到临盆情况中!!!
<Location /balancer-manager>
SetHandler balancer-manager
order Deny,Allow
Deny from all
Allow from localhost
</Location>
从下面的 ProxyRequests Off 这条可以看出,实践上负载平衡器就是一个反向代办署理,只不外它的代办署理转发地址不是某台详细的办事器,而是一个 balancer:// 协定:
ProxyPass / balancer://mycluster协定地址可以随意界说。然后,在<Proxy>段中设置该balancer协定的内容便可。 BalancerMember指令可以添加负载平衡组中的真实办事器地址。
上面那段<Location /balancer-manager>是用来监督负载平衡的任务情形的,调试时可以加上(临盆情况中制止利用!),然后会见 http://localhost/balancer-manager/ 便可看到负载平衡的任务情况。
OK,改完以后重启办事器,会见你的Apache地点办事器的地址,便可看到负载平衡的后果了。翻开 balancer-manager 的界面,可以看到恳求是均匀分派的。
假如不想均匀分派怎样办?给 BalancerMember 加上 loadfactor 参数便可,取值局限为1-100。好比你有三台办事器,负载分派比例为 7:2:1,只需如许设置:
法式代码 ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
</Proxy>
ProxyPass / balancer://mycluster
默许情形下,负载平衡会尽可能让各个办事器承受的恳求次数知足预设的比例。假如要改动算法,可使用 lbmethod 属性。如:
法式代码 ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080 loadfactor=7
BalancerMember http://node-b.myserver.com:8080 loadfactor=2
BalancerMember http://node-c.myserver.com:8080 loadfactor=1
</Proxy>
ProxyPass / balancer://mycluster
ProxySet lbmethod=bytraffic
lbmethod能够的取值有:
lbmethod=byrequests 依照恳求次数平衡(默许)
lbmethod=bytraffic 依照流量平衡
lbmethod=bybusyness 依照忙碌水平平衡(老是分派给活泼恳求数起码的办事器)
各类算法的道理请拜见Apache的文档。
热备份(Hot Standby)
热备份的完成很复杂,只需添加 status=+H 属性,就能够把某台办事器指定为备份办事器:
法式代码 ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://node-a.myserver.com:8080
BalancerMember http://node-b.myserver.com:8080 status=+H
</Proxy>
ProxyPass / balancer://mycluster
从 balancer-manager 界面中可以看到,恳求老是流向 node-a ,一旦node-a挂失落, Apache会检测到毛病并把恳求分流给 node-b。Apache会每隔几分钟检测一下 node-a 的情况,假如node-a恢复,就持续利用node-a。在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。 |
|