分享
 
 
 

基于DNS的多机均衡负载的实现

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

基于DNS的多机均衡负载的实现-

前二天为一个客户添加了一台服务器。共同承担一个论坛的运作。但是。要实现负载均衡。的确是件难事。

之前有试过几个方法,

一、DNS轮值。。优点:简单实现。缺点:无法检测各个服务器的负荷。难控制访客的访问地址(一般DNS服务器都有缓存,所以。效果不明显)

二、前台程序。。使用了一个类似Zeus Load Balancer的服务程序。在前台接受访问请求。再分流到各个实际的服务器。

但以上二个方法都不太适用我的情况。。

第一种。无法正确分配访客流量。。。常发生一台服务器的负荷很大。而另一台就很低。。。

第二种。会占用更多的流量。资源也占用较大。

最好。我还是采用了一个DNS均衡负载的方法---lbname。

它的主要效果介绍:

一、基于perl的dns服务端。应用简单。

二、自动检测各个服务器的负荷。然后再按结果优先分配DNS解析。

三、DNS解析实时生效。不会被DNS服务器缓存。

四、安装方法简单。。。

lbname网页介绍

http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.html

http://www.stanford.edu/~riepel/lbnamed/

下载:

http://www.stanford.edu/~riepel/lbnamed/lbnamed-1.2.1.tar.gz

http://www.stanford.edu/~schemers/dist/lb.tar

.

.

下载包说明:

内存数个目录

1)lbcd的源代码。。。。lbcd是lbnamed所用到的服务器端检测服务器负荷程序。。每个需要均衡负荷的服务器都需要安装、运行它的。。。

建议下载使用最新的lbcd编译包。http://www.stanford.edu/~riepel/lbnamed/lbcd-3.1.0.tar.gz

之前的常有编译错误的。(这个也有的。嘻。)

编译这个包时。常会出错的。如何成功安装。就看你的本事了。(编辑util.c第123行。在前面加上//)

编译lbcd成功后。将它复制到/usr/sbin。那你就可以运行它了。。不用加什么参数了。(运行后要停止它就是lbcd -s)

2)lbnamed的服务器程序perl..分有二个版本。一个是perl4.另一个是perl5.我是使用perl5的。所以用它来说明。

进入perl5目录。。。。。先要配置好lbnamed和poller程序。

说明一下:

lbnamed程序是主程序。提供dns动态解析。严格来说。它已是一个dns服务器端程序了。

poller是为lbnamed提供各个均衡服务器的负荷情况。(配合我们之前安装的lbcd程序使用)

但二个程序可能都需要更改,请看程序第一行的perl程序地址。。改为你的perl地址。

然后就需要更改程序的配置文件了。

1,lbnamed.conf

要更改的地方有几个

一、$hostmaster = "schemers.leland.stanford.edu";

将schemers.leland.stanford.edu改为你服务器的域名。。比如host.abc.com 这个无太大关系

二、将所有stanford改为你域名的中段(比如bendy.com,就改为bendy),将所有edu改为域名的后缀(比如bendy.com,就改为com)。。这个很重要。。我建议不要更改best。当然你也可以改

2,sweet.config

这个文件可以是用其它文件名的,具体在lbnamed.conf有设置。我建议大家先清空这文件。再重新建立新的。

这个文件的配置方法是

负荷服务器host 负重

比如。我自己的情况。有二台服务器。分别是bbs1.bendy.com和bendy2.bendy.com那我的配置文件就是

bbs1 1 bbs

bbs2 2 bbs

配置好这个文件后。你需要一个能对bbs1这个域名进行解析的方法。就是修改/etc/hosts文件。我的情况就是

192.168.1.1

bbs1

192.168.1.2 bbs2

这样的话。poller程序就会检测111.222.333.001、111.222.333.002的负荷情况了

至此,DNS服务器和均衡负载的服务器的程序已完成。可能我的说明不太清楚。现在我就一一列表说明

bbs1服务器 lbserver1 192.168.1.1 编译运行lbcd

bbs2服务器 lbserver2 192.168.1.2 编译运行lbcd

dns服务器 dnsserver 10.0.0.1 配置lbnamed 在/etc/hosts配置bbs1、bbs2域名解析

这样的情况下。。在dns服务器运行lbnamed程序。系统就开始动作了。。lbnamed的启动参数主要是 -l logfile和-d(debug)

./lbnamed -l lb.log -d

查看记录(类似)

cat lb.log

-=====

05/30 00:59 21442 lbnamed starting poller

05/30 00:59 21442 lbnamed load_config

loading 1452 bbs2 192.168.1.2 bbs

loading 837 bbs1 192.168.1.1 bbs

05/30 00:59 21442 lbnamed ready to answer requests

05/30 00:59 21442 lbnamed do_maint

05/30 00:59 21442 lbnamed reloading config

05/30 00:59 21442 lbnamed load_config

loading 1671 bbs2 192.168.1.2 bbs

loading 1086 bbs1 192.168.1.1 bbs

如果你没有那些记录。看文件sweet.config.unreach这是代表poller程序无法接收到对方服务器的负荷信息。。请检查lbcd程序是否运行。。

如果程序运行正常。那你的DNS服务器就正常运行了。

如果检查程序是否正常。。。用我们的nslookup就可以了。。。

C:\Documents and Settings\Administrator.XINGKONG-SERVER>nslookup

Default Server: ns.guangzhou.gd.cn

Address: 202.96.128.143

> server 10.0.0.1 //直接使用dns服务器

Default Server: [10.0.0.1]

Address: 10.0.0.1

> set type=all //设置查询类型

> bbs.best.bendy.com //bbs是sweet.config设置的组名,best.bendy.com是在lbnamed.conf设置的

Server: [10.0.0.1]

Address: 10.0.0.1

bbs.best.bendy.com canonical name = bbs2.bendy.com //返回的信息。是DNS系统分配了bbs2给你这次的查询(按二台服务器返回的负荷情况来分配的,并非随便分配的)

bbs2.bendy.com internet address = 192.168.1.2 //而bbs.bendy.com在该在DNS系统的A记录是192.168.1.2//最后结果bbs.best.bendy.com得到的IP地址是 192.168.1.2

====

自此。。服务器方面的配置已经完成。

跟着是我们配置具体域名的dns解析。。。

方法也是很简单,以bendy.com为例,在bendy.com的DNS管理加上以下记录

一、加上二个best.bendy.com的ns记录为ns1.bendy.com和ns2.bendy.com(也可以不止二个的.取决你有多少台服务器运行lbnamed

二、加上第一条添加的ns记录的实际指向iP,分别指向各个运行lbnamed的服务器,比如ns1.bendy.com address 10.0.0.1/ns2.bendy.com address 10.0.0.2等。

三、添加bbs1.bendy.com和bbs2.bendy.com等的实际ip地址。。。正如刚才所说... bbs.best.bendy.com只将DNS记录转移为bbs1.bendy.com或者bbs2.bendy.com。而lbnamed是没权对 bbs1.bendy.com和bbs2.bendy.com进行解析的。。。所以。需要bendy.com的NAMESERER对它进行解析。

(ps:bbs1.bendy.com的记录并不一定要求与lbnamed程序的相同。。。)

四、最后。。添加bbs.bendy.com

cname to

bbs.best.bendy.com。。。哈哈。。。大功告成。。。

DNS解析完成后,我们就完成本次任务了。。。。

小弟的表达能力有限。如有什么不明白的地方。请到http://www.discuz.net/forumdisplay.php?fid=34&page=1这里发表意见

Bendy

原创于2004.5.30

Email & msn: Bendy@etang.com

发表于Discuz Unix 茶馆http://www.discuz.net/forumdisplay.php?fid=34&page=1

转载请保留版权和说明出处

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有