免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5063 | 回复: 3
打印 上一主题 下一主题

[DNS] 基于DNS的多机均衡负载的实现-[第二版] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-01 17:22 |只看该作者 |倒序浏览
第一版请见:http://bbs.chinaunix.net/viewthread.php?tid=336646

因为时间的关系..上一篇文章已是二年前作品了..现在已经不再适用.
现在我就更新一下吧.希望能帮到有需要的人.

再次声明...该DNS负载功能.只是实现以下功能..要真正实现服务器群的负载均衡.还需要注意其它很多事情..

一\能根据各个服务器的负荷情况.动态分配DNS解释给访客访问.
二\基于PERL的DNS服务器.安装简单方便.

安装要求如下:
一\各个服务器都需要是*nix系统.因为服务器端需要运行一个简单的负荷检测程序.并向DNS服务器反回信息
二\DNS主服务器一台以上.用于运行PERL的DNS服务器.实现动态分配DNS.

我测试的最基本环境是二台CENTOS...二台都同时运行DNS服务器及检测程序..




软件下载:
一\检测程序:LBCD
网址:http://www.eyrie.org/~eagle/software/lbcd/
http://archives.eyrie.org/software/system/lbcd-3.3.0.tar.gz
ftp://ftp.eyrie.org/pub/software/system/lbcd-3.3.0.tar.gz
二\PERL版的DNS服务器程序
http://www.stanford.edu/~riepel/ ... rd-DNSserver.tar.gz
三\LBNAME    DNS主服务器的运行程序
http://www.stanford.edu/~riepel/lbnamed/lbnamed-2.3.2.tar.gz



软件安装.
一\LBCD
我会需要在各个网站服务器上下载LBCD并编译安装.并设置开机运行..
方法比较简单

  1. cd /tmp
  2. wget [url]http://archives.eyrie.org/software/system/lbcd-3.3.0.tar.gz[/url]
  3. tar zxvf lbcd-3.3.0.tar.gz
  4. cd lbcd-3.3.0
  5. ./configure
  6. make
  7. make install
  8. echo "/usr/local/sbin/lbcd" >>/etc/rc.d/rc.local
复制代码

安装完成后直接运行lbcd的就OK了.

二\Stanford-DNSserver
我们需要安装我们自己解释的DNS服务器..当然.网站服务器也可以做DNS服务的.这就取决你有多少台服务器了.
安装方法也很简单

  1. cd /tmp
  2. wget [url]http://www.stanford.edu/~riepel/lbnamed/Stanford-DNSserver/Stanford-DNSserver.tar.gz[/url]
  3. tar zxvf Stanford-DNSserver.tar.gz
  4. cd Stanford-DNSserver-1.2.0
  5. perl Makefile.PL
  6. make
  7. make test
  8. make install
复制代码

安装完成

三\LBNAME
这个就是我们今天最主要介绍的东西.刚才下载的DNS服务器只是一个运行库而已..具体运行的程序还是我们现在这个LBNAME
其实LBNAME只是一个PERL程序.
并不需要怎样安装..重要的是配置...

  1. cd /tmp
  2. wget [url]http://www.stanford.edu/~riepel/lbnamed/lbnamed-2.3.2.tar.gz[/url]
  3. tar zxvf lbnamed-2.3.2.tar.gz
  4. mv lbnamed-2.3.2 /usr/local/lbnamed
  5. cd /usr/local/lbnamed
复制代码

首先我们需要复制LBCD.pm到PERL库里面.[假设你的PERL版本是5.8.8]
cp LBCD.pm /usr/lib/perl5/5.8.8
然后我们需要配置lbnamed的主程序.[可能需要改动不少东西.我是将lbnamed程序复制回WINDOWS后才慢慢改的.]
我先说明几个东西.比较重要的几点,其实也不是很多.
一\将前面的那些程序路经改好.比如poller的程序是在/usr/local/lbnamed/poller  [这个是用来接爱网站服务器的负荷信息的]
二\$poller_sleep   这个值 是表示多久时间检测网站服务器一次...默认是120秒...
三\$poller_config  这个值 是表示我们配置服务器群的设置文件...我们就用/usr/local/lbnamed/lbnamed.config
四\@servers         这个值后面的()里面的表示我们运行多少台DNS服务器及具体名称...我使用二台.ns1.bendy.com ns2.bendy.com
五\将所有的stanford.edu都替换为bendy.com
这样LBNAME主程序基本上配置完毕.

跟着我们需要配置lbnamed.config这个文件了.
其实也很简单.
系统里面已经有一个lbnamed.config的配置文件了.E文好的可以慢慢研究.
我这里给个简单有效的应用介绍.

比如我有二台服务器..分别是www1.bendy.com和www2.bendy.com 具体的IP是192.168.0.1和192.168.0.2  现在我要使用统一的域名提供均衡负荷访问www.bendy.com
那我的lbnamed.config的文件内容就是

  1. www1.bendy.com  10  www
  2. www2.bendy.com  10  www
复制代码

中间这个10是表示this host's "server factor" in the range 0 to 10"  我的英文不是太好...好似是什么服务器因数之类的.

然后我们需要配置DNS了...为方便我自己的DNS服务器运行.我需要几个域名进行本地解释.也就是编辑/etc/hosts文件
主要有几个
www1.bendy.com   www2.bendy.com  ns1.bendy.com ns2.bendy.com
我自己的测试环境中就是
192.168.0.1 www1.bendy.com ns1.bendy.com
192.168.0.1 www2.bendy.com ns2.bendy.com


跟着我们就需要更改一个lbnamed的启动脚本lbnamed.rc ..我的改动如下面
#!/bin/sh
/usr/local/lbname/lbnamed -d -s -l /var/log/lbnamed.log -h ns1.bendy.com -p /tmp/lb

主程序lbnamed的运行参数如下:
-d            测试模式..在LOG记录文件里面会记录更多信息
-s            在记录文件里面会记录统计信息
-l             后面要跟着记录文件的地址...
-h            指定运行DNS程序的IP...在我的测试环境中..第一台就是NS1.BENDY.COM 第二台是NS2.BENDY.COM
-p            用于指定poller读取信息后的临时文件存放地址的前缀.用于LBNAME与POLLER交换数据的..我现在指定为/tmp/lb后.../tmp目录下运行程序时会生成lblb/lbstatus/lbunreach这三个文件  [在我的测试环境中,这个值一定要设定...否则会出错的...呵]

设置好后..我们就可以运行这个脚本来启动LBNAMED程序了..
/usr/local/lbnamed/lbnamed.rc
运行正常的话.我们可以看到/tmp/目录下会有生成那三个文件...还有要以看log文件看详细的记录....

至此..基本的DNS负荷均衡程序已经完成....
但具体的参数调节.就需要在实际应用中再慢慢设节.[主要需要调节的地方是lbnamed.config文件中那个"10"...]

最后我们需要配置域名上面的详细设置...
以bendy.com为例.我们需要作如下配置.
一\加上二个best.bendy.com的ns记录为ns1.bendy.com和ns2.bendy.com
二\加上www1/www2/ns1/ns2这些域名的A记录到具体的IP[公网IP]
三\加上www这个主域名的CNAME记录到www.best.bendy.com
设置完成..



这时.整个DNS解释的顺序如下.
访问www.bendy.com会CNAME到[url]www.best.bendy.com[/url]
由于我们设置了bendy.bendy.com这个域名的nameserver[域名解释服务器].那到best.bendy.com就不会再使用bendy.com原来的NAMESERVER了.就会用我们自已的DNS服务器了[负载均衡服务器]
www.best.bendy.com经过我们的DNS服务器选择到负荷较好的服务器[比如是www1.bendy.com]那www.best.bendy.com会马上CNAME到www1.bendy.com
这时.也就是说.我们访问www.bendy.com时.我们访问的服务器将会选择WWW1.bendy.com这台了...

本人的表达能力很差...可能有些事情我解释不清楚...
如果你需要有到本文介绍的方法...可以随时与我交流..我的QQ是67052.EMAIL用QQ里面的67052[at]qq.com

英文好的人..可以慢慢看一看lbnamed的说明文件..给本文补充说明..

[ 本帖最后由 Bendy 于 2008-1-1 20:20 编辑 ]

lbnamed.readme.rar

3.29 KB, 下载次数: 85

论坛徽章:
0
2 [报告]
发表于 2008-11-25 14:59 |只看该作者
写的有点乱,看了好几遍都看不出所以然

论坛徽章:
0
3 [报告]
发表于 2008-11-28 08:16 |只看该作者
使用实易智能DNS就可以满足这些功能了,而且用不着那么麻烦的配置。

介绍地址:
http://fedns.isyi.com/product/index.shtml

文档地址:
http://fedns.isyi.com/docs/index.shtml

论坛徽章:
0
4 [报告]
发表于 2008-12-03 00:54 |只看该作者
没接出过,了解了解
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP