实现的软件是lbnamed,主要特征介绍如下:
一、基于perl的dns服务端。应用简单。
二、自动检测各个 服务器的负荷。然后再按结果优先分配DNS解析。
三、DNS解析实时生效。不会被DNS 服务器缓存。
四、安装方法简单。
一、基于perl的dns服务端。应用简单。
二、自动检测各个 服务器的负荷。然后再按结果优先分配DNS解析。
三、DNS解析实时生效。不会被DNS 服务器缓存。
四、安装方法简单。
下载地址是:
http://archives.eyrie.org/software/system/lbcd-3.3.0.tar.gz
http://www.stanford.edu/~riepel/lbnamed/lbnamed-1.2.1.tar.gz
lbnamed目前最新版本是lbnamed-2.3.2,这里采用lbnamed-1.2.1版本。
官方网站是 http://www.stanford.edu/~riepel/lbnamed/
1、lbcd是lbnamed所用到的 服务器端检测 服务器负荷 程序,每个需要均衡负荷的 服务器都需要安装、运行它的。上面给出的lbcd是最新版本的,编译安装如下:
# tar -xvzf lbcd-3.3.0.tar.gz
# cd lbcd-3.3.0
# ./configure
# make;make install
完了后lbcd程序存在与/usr/local/sbin/目录下,不用加什么参数就可以运行,停止则是lbcd -s。
2、lbnamed是由perl编写的,在安装前请确定你安装了perl软件,1.2.1版本里包含了perl4和perl5两种,我这里用的是perl5.
# tar -xvzf lbnamed-1.2.1.tar.gz
# cd lbnamed-1.2.1
# cd perl5
注意:
lbnamed 程序是主 程序。提供dns动态解析。严格来说。它已是一个dns 服务器端 程序了。
poller是为lbnamed提供各个均衡 服务器的负荷情况。(配合我们之前安装的lbcd 程序使用)
但二个 程序可能都需要更改,请看 程序第一行的perl 程序地址。改为你的perl地址。
poller是为lbnamed提供各个均衡 服务器的负荷情况。(配合我们之前安装的lbcd 程序使用)
但二个 程序可能都需要更改,请看 程序第一行的perl 程序地址。改为你的perl地址。
下来编辑程序的配置文件:
1、lbnamed.conf 修改以下几处:
$hostmaster = "schemers.leland.stanford.edu"; 将schemers.leland.stanford.edu改为你 服务器的名字。比如server1.rhel5.net。
将所有stanford.edu改为你的域名(比如rhel5.net),这个很重要。我建议不要更改best,当然你也可以改,根据具体情况而定吧。
2、sweet.config
这个 文件可以是用其它 文件名的,具体在lbnamed.conf有设置。我建议大家清空这个 文件。它的配置方法如下:
负荷 服务器host 负重 组
例如,我的如下:
server1.rhel5.net 1 server1
server2.rhel5.net 2 server2
找个文件配置完后,在/etc/hosts文件里加入上述两个服务器的地址,如下:
192.168.1.10 server1.rhel5.net server1
192.168.1.20 server2.rhel5.net server2
这样poller程序就能检测192.168.1.10和192.168.1.20的负荷情况了。
到此,配置完毕!分别在server1和server2上运行lbcd程序,完了后启动lbnamed程序,如下:
# ./lbnamed -l lb.log -d
-d 意为debug
-l 在运行时加上logfile文件参数,这里我用的lb.log文件作为lbnamed的日志文件。
检查下lb.log文件:
# cat lb.log
06/26 10:27 7175 lbnamed starting poller
06/26 10:27 7175 lbnamed load_config
loading server1 1 server1.rhel5.net
loading server2 2 server2.rhel5.net
06/26 10:27 7175 lbnamed load_config
loading server1 1 server1.rhel5.net
loading server2 2 server2.rhel5.net
如果你没有那些记录,请查看 文件sweet.config.unreach,这是代表poller 程序无法接收到对方 服务器的负荷信息,请检查lbcd 程序是否运行!
在windows下测试:
C:\Documents and Settings\jacky.lee>nslookup
Default Server: perl-doc.rhel5.net
Address: 192.168.1.10
Default Server: perl-doc.rhel5.net
Address: 192.168.1.10
> server 192.168.1.20
Default Server: dns2.rhel5.net
Address: 192.168.1.20
Default Server: dns2.rhel5.net
Address: 192.168.1.20
> set type=all
> www.rhel5.net
Server: dns2.rhel5.net
Address: 192.168.1.20
> www.rhel5.net
Server: dns2.rhel5.net
Address: 192.168.1.20
www.rhel5.net canonical name = www2.rhel5.net
rhel5.net nameserver = dns1.rhel5.net
rhel5.net nameserver = dns2.rhel5.net
dns1.rhel5.net internet address = 192.168.1.10
dns2.rhel5.net internet address = 192.168.1.20
> mail.rhel5.net
Server: dns2.rhel5.net
Address: 192.168.1.20
rhel5.net nameserver = dns1.rhel5.net
rhel5.net nameserver = dns2.rhel5.net
dns1.rhel5.net internet address = 192.168.1.10
dns2.rhel5.net internet address = 192.168.1.20
> mail.rhel5.net
Server: dns2.rhel5.net
Address: 192.168.1.20
mail.rhel5.net canonical name = mail2.rhel5.net
rhel5.net nameserver = dns2.rhel5.net
rhel5.net nameserver = dns1.rhel5.net
dns1.rhel5.net internet address = 192.168.1.10
dns2.rhel5.net internet address = 192.168.1.20
> bind.rhel5.net
Server: dns2.rhel5.net
Address: 192.168.1.20
rhel5.net nameserver = dns2.rhel5.net
rhel5.net nameserver = dns1.rhel5.net
dns1.rhel5.net internet address = 192.168.1.10
dns2.rhel5.net internet address = 192.168.1.20
> bind.rhel5.net
Server: dns2.rhel5.net
Address: 192.168.1.20
bind.rhel5.net canonical name = bind-doc.rhel5.net
rhel5.net nameserver = dns1.rhel5.net
rhel5.net nameserver = dns2.rhel5.net
dns1.rhel5.net internet address = 192.168.1.10
dns2.rhel5.net internet address = 192.168.1.20
rhel5.net nameserver = dns1.rhel5.net
rhel5.net nameserver = dns2.rhel5.net
dns1.rhel5.net internet address = 192.168.1.10
dns2.rhel5.net internet address = 192.168.1.20