昨天一直在测试DNS轮询,在CU上看到了有人推荐lbnamed然后就 google了一下,搜到很多文章,不是文章太老,根本不试用,就是些的很烂,让人摸不到头脑,写的不详细,让人会晕,我语言表达能力也不好,我尽量来写详细一下,写明了一些。首先声明我是在内网测试与公网会有些不同!如果你是公网就要申请域名解析服务~
域名: ludy.com
域名解析服务: ns1.ludy.com //公网的话,要去你的域名服务商去申请的
software : bind-9.5.0-P2.tar.gz lbcd-3.3.0.tar.gz lbnamed-2.3.2.tar.gz Stanford-DNSserver.tar.gz
bind9 服务器:192.168.6.3
lbnamed 服务器:192.168.6.105
web1 :192.168.6.101
web2 :192.168.6.102
安装步骤:
一.分别在两台 web服务器上安装 lbcd-3.3.0.tar.gz
tar zxvf lbcd-3.3.0.tar.gz
cd lbcd-3.3.0
./configure --prefix=/usr/local/lbcd
make
make install
运行 lbcd 不需要任何参数
/usr/local/lbcd/sbin/lbcd
二.安装配置 bind9
1.安装域名服务器 bind9
tar zxvf bind-9.5.0-P2.tar.gz
cd bind-9.5.0-P2
./configure --prefix=/usr/local/bind --enable-threads --enable-largefile --disable-openssl-version-check --disable-ipv6
make
make install
2.配置bind9
因为我是在内网作测试,不是合法的 域名解析服务,所以我要欺骗bind 修改/etc/hosts
vim /etc/hosts
192.168.6.3 ns1.ludy.com
cd /usr/local/bind
sbin/rndc-confgen > etc/rndc.conf
生成rndc控制命令的key文件
cd etc
tail -10 rndc.conf |head -9|sed s/#\//g > named.conf
生成 named.conf
dig > named.root
生成named.root 文件
建立 正向 localhost.zone
vim localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ;serial
3H ;refresh
15M ;retry
1W ;expiry
1D ) ;minimum
1D IN NS @
1D IN A 127.0.0.1
建立named.local反向解析文件
$TTL 86400
@ IN SOA localhost. root.localhost. (
2008121617 ;Serial
28800 ;Refresh
14400 ;Retry
3600000 ;Expire
86400 ) ;Minimum
IN NS localhost.
1 IN PTR localhost. ;不要忘记此处有点
建立 ludy.com 正向解析文件
vim ludy.com
$TTL 300
$ORIGIN ludy.com.
@ IN SOA ns1.ludy.com. root.ludy.com. (
2008041001 ;serial number YYMMDDNN
28800 ;Refresh
7200 ;Retry
864000 ;Expire
300 ); ;Min TTL
ludy.com. IN NS ns1.ludy.com.
best.ludy.com. IN NS ns1.ludy.com. ;是为lbnamed 准备的
ns1 IN A 192.168.6.3
ludy.com. IN MX 10 mail.ludy.com.
ludy.com. IN A 192.168.6.3
mail IN A 192.168.6.188
www1 IN A 192.168.6.101 ; web服务器1
www2 IN A 192.168.6.102 ; web服务器2
www IN CNAME [url]www.best.ludy.com.[/url] ;是为lbnamed 准备的
因为我之需要 域名解析服务,所以我就不建反向解析了
配置 named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "uKQKHQrih/M81kiqkwy62g==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
options {
directory "/usr/local/bind/etc/namebd";
forwarders { 192.168.6.105; };
notify no;
pid-file "/usr/local/bind/var/run/named.pid";
auth-nxdomain no;
version "server 2008 dns 8.0";
blackhole { none; };
allow-recursion{ any; };
#设置允许查询IP列表。
listen-on port 53 {192.168.6.3;};
#如果是双IP可以指定其中一个IP,作为服务当然双网卡也可以用
max-cache-size 50M; #设置缓存大小
allow-query { any; };
#允许递归查询的IP列表,也就是自己的域名列表中没有要查询的DNS,可以转发到转发器
allow-transfer { 192.168.6.3/24; 127.0.0.1/8; };
#transfer 是主辅DNS服务器之间域名zone数据传输许可
};
zone "." in {
type hint;
file "/usr/local/bind/etc/named.root";
};
zone "localhost" in {
type master;
file "/usr/local/bind/etc/localhost.zone";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "/usr/local/bind/etc/named.local";
allow-update { none; };
};
zone "ludy.com" in {
type master;
file "/usr/local/bind/etc/ludy.com";
allow-update { none; };
};
配置完成 可以启动 bind9了
/usr/local/bind/sbin/named -g 可以看到启动日志,如果有错误 在慢慢排查,一般都是那里空格没有加或者是 没有加 “.”
在 web1 web2 lbnamed 服务器的 /etc/resolv.conf 都改为
vim /etc/resolv.conf
nameserver 192.168.6.3
然后作测试 nslookup ns1.ludy.com
Server: 192.168.6.3
Address: 192.168.6.3#53
Name: ns1.ludy.com
Address: 192.168.6.3
好 bind9 OK,下面来安装 重要的 lbnamed
三,安装 lbnamed
tar zxvf lbnamed-2.3.2.tar.gz
mv lbnamed-2.3.2 /usr/local/lbnamed
cd /usr/local/lbnamed
配置 lbnamed.config
mv lbnamed.config lbnamed.config.bak
vim lbnamed.config
www1.ludy.com 10 www
www2.ludy.com 10 www
www 5 0 [url]www.best.ludy.com[/url]
注意,如果想把哪台服务器设置为优先负载的话,就把 默认的 10改低就优先分到哪台服务器了。
配置 lbnamed 我之列出我修改的地方~
vim lbnamed
$poller = "/usr/local/lbnamed/poller";
$poller_config = "/usr/local/lbnamed/lbnamed.config";
$hostmaster = "best.ludy.com";
@servers = qw(ns1.ludy.com);
$ns->add_static("best.ludy.com", T_SOA, $soa);
$ns->add_static("best-a.ludy.com", T_SOA, $soa);
$ns->add_dynamic("best.ludy.com" => \&handle_lb_request);
$ns->add_dynamic("best-a.ludy.com" => \&handle_lb_request);
$ns->add_static("localhost.best.ludy.com",T_A,rr_A(0x7f000001));
$ns->add_static("localhost.best-a.ludy.com",T_A,rr_A(0x7f000001));
foreach (@servers) {
$ns->add_static("best.ludy.com", T_NS, rr_NS($_));
$ns->add_static("best-a.ludy.com", T_NS, rr_NS($_));
}
好保存退出
执行
./lbnamed -l 1.log -d -h 192.168.6.105
-l 是 日志 -d debug -h 是 监听IP 地址(本机器地址)
netstat -ant
tcp 0 0 192.168.6.105:53 0.0.0.0:* LISTEN
启动成功~
四,测试
在 web1 , web2 上 分别执行
nslookup [url]www.ludy.com[/url]
Server: 192.168.6.3
Address: 192.168.6.3#53
[url]www.ludy.com [/url] canonical name = [url]www.best.ludy.com.[/url]
[url]www.best.ludy.com [/url] canonical name = www1.ludy.com.
Name: www1.ludy.com
Address: 192.168.6.101
都返回的是 www1.ludy.com
好的 看下 lbnamed 服务器
cd /usr/local/lbnamed
ls
1.log README lbnamed.config.lb lbnamed.config slbcd
LBCD.pm lbnamed lbnamed.config.status lbnamed.rc
Makefile lbnamed.config lbnamed.config.unreach poller
多了三个文件 lbnamed.config.lb lbnamed.config.status lbnamed.config.unreach
查看 lbnamed.config.unreach 如果 为空说明两台 web的lbcd都 执行了,都从两台服务器上 获取了 负载信息。下来我们把 lbnamed.config
的 www2.ludy.com 10 www
默认的 10 该低一点 改为5
vim lbnamed.config
www1.ludy.com 10 www
www2.ludy.com 5 www
www 5 0 [url]www.best.ludy.com[/url]
在 其中一台web 服务器上 测试
root@fdfs:/home/ludy# nslookup [url]www.ludy.com[/url]
Server: 192.168.6.3
Address: 192.168.6.3#53
[url]www.ludy.com [/url] canonical name = [url]www.best.ludy.com.[/url]
[url]www.best.ludy.com [/url] canonical name = www2.ludy.com.
Name: www2.ludy.com
Address: 192.168.6.102
到这里就 结束了。
提几点要 注意的地方 就是 lbnamed 服务器 web1 web2的服务器 一定要保证 三台服务器的 /etc/resolv.conf
namedserver 地址一定要是 bind9的地址。
域名: ludy.com
域名解析服务: ns1.ludy.com //公网的话,要去你的域名服务商去申请的
software : bind-9.5.0-P2.tar.gz lbcd-3.3.0.tar.gz lbnamed-2.3.2.tar.gz Stanford-DNSserver.tar.gz
bind9 服务器:192.168.6.3
lbnamed 服务器:192.168.6.105
web1 :192.168.6.101
web2 :192.168.6.102
安装步骤:
一.分别在两台 web服务器上安装 lbcd-3.3.0.tar.gz
tar zxvf lbcd-3.3.0.tar.gz
cd lbcd-3.3.0
./configure --prefix=/usr/local/lbcd
make
make install
运行 lbcd 不需要任何参数
/usr/local/lbcd/sbin/lbcd
二.安装配置 bind9
1.安装域名服务器 bind9
tar zxvf bind-9.5.0-P2.tar.gz
cd bind-9.5.0-P2
./configure --prefix=/usr/local/bind --enable-threads --enable-largefile --disable-openssl-version-check --disable-ipv6
make
make install
2.配置bind9
因为我是在内网作测试,不是合法的 域名解析服务,所以我要欺骗bind 修改/etc/hosts
vim /etc/hosts
192.168.6.3 ns1.ludy.com
cd /usr/local/bind
sbin/rndc-confgen > etc/rndc.conf
生成rndc控制命令的key文件
cd etc
tail -10 rndc.conf |head -9|sed s/#\//g > named.conf
生成 named.conf
dig > named.root
生成named.root 文件
建立 正向 localhost.zone
vim localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ;serial
3H ;refresh
15M ;retry
1W ;expiry
1D ) ;minimum
1D IN NS @
1D IN A 127.0.0.1
建立named.local反向解析文件
$TTL 86400
@ IN SOA localhost. root.localhost. (
2008121617 ;Serial
28800 ;Refresh
14400 ;Retry
3600000 ;Expire
86400 ) ;Minimum
IN NS localhost.
1 IN PTR localhost. ;不要忘记此处有点
建立 ludy.com 正向解析文件
vim ludy.com
$TTL 300
$ORIGIN ludy.com.
@ IN SOA ns1.ludy.com. root.ludy.com. (
2008041001 ;serial number YYMMDDNN
28800 ;Refresh
7200 ;Retry
864000 ;Expire
300 ); ;Min TTL
ludy.com. IN NS ns1.ludy.com.
best.ludy.com. IN NS ns1.ludy.com. ;是为lbnamed 准备的
ns1 IN A 192.168.6.3
ludy.com. IN MX 10 mail.ludy.com.
ludy.com. IN A 192.168.6.3
mail IN A 192.168.6.188
www1 IN A 192.168.6.101 ; web服务器1
www2 IN A 192.168.6.102 ; web服务器2
www IN CNAME [url]www.best.ludy.com.[/url] ;是为lbnamed 准备的
因为我之需要 域名解析服务,所以我就不建反向解析了
配置 named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "uKQKHQrih/M81kiqkwy62g==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
options {
directory "/usr/local/bind/etc/namebd";
forwarders { 192.168.6.105; };
notify no;
pid-file "/usr/local/bind/var/run/named.pid";
auth-nxdomain no;
version "server 2008 dns 8.0";
blackhole { none; };
allow-recursion{ any; };
#设置允许查询IP列表。
listen-on port 53 {192.168.6.3;};
#如果是双IP可以指定其中一个IP,作为服务当然双网卡也可以用
max-cache-size 50M; #设置缓存大小
allow-query { any; };
#允许递归查询的IP列表,也就是自己的域名列表中没有要查询的DNS,可以转发到转发器
allow-transfer { 192.168.6.3/24; 127.0.0.1/8; };
#transfer 是主辅DNS服务器之间域名zone数据传输许可
};
zone "." in {
type hint;
file "/usr/local/bind/etc/named.root";
};
zone "localhost" in {
type master;
file "/usr/local/bind/etc/localhost.zone";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "/usr/local/bind/etc/named.local";
allow-update { none; };
};
zone "ludy.com" in {
type master;
file "/usr/local/bind/etc/ludy.com";
allow-update { none; };
};
配置完成 可以启动 bind9了
/usr/local/bind/sbin/named -g 可以看到启动日志,如果有错误 在慢慢排查,一般都是那里空格没有加或者是 没有加 “.”
在 web1 web2 lbnamed 服务器的 /etc/resolv.conf 都改为
vim /etc/resolv.conf
nameserver 192.168.6.3
然后作测试 nslookup ns1.ludy.com
Server: 192.168.6.3
Address: 192.168.6.3#53
Name: ns1.ludy.com
Address: 192.168.6.3
好 bind9 OK,下面来安装 重要的 lbnamed
三,安装 lbnamed
tar zxvf lbnamed-2.3.2.tar.gz
mv lbnamed-2.3.2 /usr/local/lbnamed
cd /usr/local/lbnamed
配置 lbnamed.config
mv lbnamed.config lbnamed.config.bak
vim lbnamed.config
www1.ludy.com 10 www
www2.ludy.com 10 www
www 5 0 [url]www.best.ludy.com[/url]
注意,如果想把哪台服务器设置为优先负载的话,就把 默认的 10改低就优先分到哪台服务器了。
配置 lbnamed 我之列出我修改的地方~
vim lbnamed
$poller = "/usr/local/lbnamed/poller";
$poller_config = "/usr/local/lbnamed/lbnamed.config";
$hostmaster = "best.ludy.com";
@servers = qw(ns1.ludy.com);
$ns->add_static("best.ludy.com", T_SOA, $soa);
$ns->add_static("best-a.ludy.com", T_SOA, $soa);
$ns->add_dynamic("best.ludy.com" => \&handle_lb_request);
$ns->add_dynamic("best-a.ludy.com" => \&handle_lb_request);
$ns->add_static("localhost.best.ludy.com",T_A,rr_A(0x7f000001));
$ns->add_static("localhost.best-a.ludy.com",T_A,rr_A(0x7f000001));
foreach (@servers) {
$ns->add_static("best.ludy.com", T_NS, rr_NS($_));
$ns->add_static("best-a.ludy.com", T_NS, rr_NS($_));
}
好保存退出
执行
./lbnamed -l 1.log -d -h 192.168.6.105
-l 是 日志 -d debug -h 是 监听IP 地址(本机器地址)
netstat -ant
tcp 0 0 192.168.6.105:53 0.0.0.0:* LISTEN
启动成功~
四,测试
在 web1 , web2 上 分别执行
nslookup [url]www.ludy.com[/url]
Server: 192.168.6.3
Address: 192.168.6.3#53
[url]www.ludy.com [/url] canonical name = [url]www.best.ludy.com.[/url]
[url]www.best.ludy.com [/url] canonical name = www1.ludy.com.
Name: www1.ludy.com
Address: 192.168.6.101
都返回的是 www1.ludy.com
好的 看下 lbnamed 服务器
cd /usr/local/lbnamed
ls
1.log README lbnamed.config.lb lbnamed.config slbcd
LBCD.pm lbnamed lbnamed.config.status lbnamed.rc
Makefile lbnamed.config lbnamed.config.unreach poller
多了三个文件 lbnamed.config.lb lbnamed.config.status lbnamed.config.unreach
查看 lbnamed.config.unreach 如果 为空说明两台 web的lbcd都 执行了,都从两台服务器上 获取了 负载信息。下来我们把 lbnamed.config
的 www2.ludy.com 10 www
默认的 10 该低一点 改为5
vim lbnamed.config
www1.ludy.com 10 www
www2.ludy.com 5 www
www 5 0 [url]www.best.ludy.com[/url]
在 其中一台web 服务器上 测试
root@fdfs:/home/ludy# nslookup [url]www.ludy.com[/url]
Server: 192.168.6.3
Address: 192.168.6.3#53
[url]www.ludy.com [/url] canonical name = [url]www.best.ludy.com.[/url]
[url]www.best.ludy.com [/url] canonical name = www2.ludy.com.
Name: www2.ludy.com
Address: 192.168.6.102
到这里就 结束了。
提几点要 注意的地方 就是 lbnamed 服务器 web1 web2的服务器 一定要保证 三台服务器的 /etc/resolv.conf
namedserver 地址一定要是 bind9的地址。
如果有什么问题 在问我 呵呵 ~~
本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/120811,如需转载请自行联系原作者