Apache的ReWrite的应用mod_rewrite模块使用(8)
来源:asp之家 时间:2010-04-04 18:44:00
负载的均衡
说明:
如何均衡www.foo.com的负载到www[0-5].foo.com(一共是6个服务器)?
方案:
这个问题有许多可能的解决方案,在此,我们讨论通称为“基于DNS(DNS-based)的”方案,和特殊的使用mod_rewrite的方案:
DNS循环(DNS Round-Robin)
最简单的方法是用BIND的DNS循环特性,只要按惯例设置www[0-9].foo.com的DNS的A(地址)记录,如:
代码:
www0 IN A 1.2.3.1
www1 IN A 1.2.3.2
www2 IN A 1.2.3.3
www3 IN A 1.2.3.4
www4 IN A 1.2.3.5
www5 IN A 1.2.3.6
然后,增加以下各项:
代码:
www IN CNAME www0.foo.com.
IN CNAME www1.foo.com.
IN CNAME www2.foo.com.
IN CNAME www3.foo.com.
IN CNAME www4.foo.com.
IN CNAME www5.foo.com.
IN CNAME www6.foo.com.
注意,上述看起来似乎是错误的,但事实上,它的确是BIND中的一个预期的特性,而且也可以这样用。无论如何,现在www.foo.com已经被解析,BIND可以给出www0-www6 - 虽然每次在次序上会有轻微的置换/循环,客户端的请求可以被分散到各个服务器。可是,这并不是一个优秀的负载均衡方案,因为,DNS解析信息可以被网络中其他名称服务器缓冲,而一旦www.foo.com被解析为wwwN.foo.com,则其后继请求都将被送往www.foo.com。但是最终结果是正确的,因为请求的总量的确被分散到各个服务器了
DNS 负载均衡
一种成熟的基于DNS的负载均衡方法是使用http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.html的lbnamed程序,它是一个Perl 5程序,带有若干辅助工具,实现了真正的基于DNS的负载均衡。
代理吞吐循环(Proxy Throughput Round-Robin)
这是一个使用mod_rewrite及其代理吞吐特性的方法。首先,在DNS记录中,将www0.foo.com固定为www.foo.com,如下:
代码:
www IN CNAME www0.foo.com.
其次,将www0.foo.com转换为一个专职代理服务器,即,由这个机器把所有到来的URL通过内部代理分散到另外5个服务器(www1-www5)。为此,必须建立一个规则集,对所有URL调用一个负载均衡脚本lb.pl。
代码:
RewriteEngine on
RewriteMap lb prg:/path/to/lb.pl
RewriteRule ^/(.+)$ $ [P,L]
以下是lb.pl:
代码:
#!/path/to/perl
##
## lb.pl -- load balancing script
##
$| = 1;
$name = "www"; # the hostname base
$first = 1; # the first server (not 0 here, because 0 is myself)
$last = 5; # the last server in the round-robin
$domain = "foo.dom"; # the domainname
$cnt = 0;
while () {
$cnt = (($cnt+1) % ($last+1-$first));
$server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
print "http://$server/$_";
}
##EOF##
标签:apache,mod_rewrite,url,rewrite,虚拟主机,服务器
0
投稿
猜你喜欢
新手教程:Dedecms栏目自定义字段的方法
2011-09-22 20:27:07
Google adsence推介快速启动指南
2007-09-23 08:19:00
详解CentOS 6.5搭建Redis3.2.8单机分布式集群
2023-07-16 09:54:01
VMware虚拟机提示以独占方式锁定此配置文件失败的解决方法
2022-08-07 02:22:02
linux中mkdir命令使用详解
2023-08-20 23:19:18
详细全面介绍什么是 Apache服务器
2010-05-08 17:50:00
.Net Framework 4.0 功能介绍
2009-10-28 16:45:00
动易提示“当前没有生成任务在执行”的问题
2009-12-20 18:06:00
站长你为什么做网站这么累?
2008-10-10 12:06:00
WordPress中Ping、Pingback、Trackback三者之间的定义与区别
2012-01-17 15:57:26
如何查看服务器一个端口的占用情况(netstat -an)
2010-08-12 18:27:00
日本推出最新恋爱游戏 玩家拥有虚拟体感女友
2009-11-27 12:33:00
VMware虚拟机安装Linux系统图文教程
2023-12-04 04:42:14
动易SiteWeaver6.6转换DEDECMS案例
2009-05-05 11:15:00
Linux查看进程的所有信息的方法示例
2022-01-20 22:51:42
在Centos上搭建Maven中央仓库的方法
2022-05-30 19:32:24
centos7.0之Lnmp和Lamp详细介绍
2022-09-26 04:37:59
Godaddy主机:使用Domain Manager管理域名
2010-05-05 13:02:00
windows远程桌面端口修改
2010-04-14 18:42:00
在Fedora上建立自己的邮件服务器(4)
2007-09-12 13:51:00