DNS負載均衡

     昨天一直在測試DNS輪詢,在CU上看到了有人推薦lbnamed而後就 google了一下,搜到不少文章,不是文章太老,根本不試用,就是些的很爛,讓人摸不到頭腦,寫的不詳細,讓人會暈,我語言表達能力也很差,我儘可能來寫 詳細一下,寫明瞭一些。首先聲明我是在內網測試與公網會有些不一樣!若是你是公網就要申請域名解析服務~web


域名: 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的地址。vim

相關文章
相關標籤/搜索