預備:相關概念掃盲
DNS,
Domain Name System,即域名解析系統,用於實現「域名」與「ip」地址之間的相互解析。
正向解析(正解):將Domain解析爲ip。
反向解析(反解):將ip解析爲域名。
Zome(區域):一個正解或反解的設定爲一個zone。
安裝bind9
hadoop@ubuntu:~$
sudo apt-get install bind9
安裝完成後,會在/etc/bind目錄下生成以下的配置文件
root@ubuntu:/etc/bind# ls -l
total 52
-rw-r--r-- 1 root root 2389 Feb 18 05:45 bind.keys
-rw-r--r-- 1 root root 237 Feb 18 05:45 db.0
-rw-r--r-- 1 root root 271 Feb 18 05:45 db.127
-rw-r--r-- 1 root root 237 Feb 18 05:45 db.255
-rw-r--r-- 1 root root 353 Feb 18 05:45 db.empty
-rw-r--r-- 1 root root 270 Feb 18 05:45 db.local
-rw-r--r-- 1 root root 3048 Feb 18 05:45 db.root
-rw-r--r-- 1 root bind 463 Feb 18 05:45 named.conf
-rw-r--r-- 1 root bind 490 Feb 18 05:45 named.conf.default-zones
-rw-r--r-- 1 root bind 165 Feb 18 05:45 named.conf.local
-rw-r--r-- 1 root bind 890 Apr 3 23:55 named.conf.options
-rw-r----- 1 bind bind 77 Apr 3 23:55 rndc.key
-rw-r--r-- 1 root root 1317 Feb 18 05:45 zones.rfc1918
重要配置文件解釋:
named.conf:name參數的設置,配置服務器使用的域數據庫信息源。該文件內容以下:
能夠看到該文件主要指定了幾個named相關配置文件的位置。
named.conf.options:全局選項配置,一般不用修改。
named.conf.local:用於用戶配置dns時,添加Zone的配置信息
named.conf.default-zones:正解和反解Zone的配置,該文件的主要格式以下:
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
其中,localhost zone表示正解zone,其中的type表示定義域名服務器的類型,可爲以下值:
master:主域名服務器
slave:輔助域名服務器
hint:互聯網中的根域名服務器
其中,file選項用於指定zone配置文件的位置。
db.local:localhost正向zone文件,用於將localhost解析爲127.0.0.1。該文件的內容以下:
其中,幾個重要的配置說明:
SOA:主要用戶主服務器和從服務器之間的dns數據庫資料的同步。該行「@」表示該文件對應的zone,後面指定的是這個zone的
受權主機和
管理者的郵箱。因爲「@」在DNS記錄中是一個保留字符,因此SOA中用「.」來代替「@」,因此管理者郵箱爲「root@localhost」。
Serial:主服務器的序列號,當從服務器發現主服務器的序列號比自身的大時,就會進行DNS數據庫的同步。
Refresh:從服務器請求DNS數據庫同步的時間間隔。
Retry:當從服務器進行同步失敗,再次進行重試的時間間隔。
Expire:記錄的逾期時間,當從服務器一直沒法與主服務器取得聯繫,那麼過了該時間後,資料將標識爲過時。
NS:表示localhost這個域的主機是localhost
A:標明瞭IP地址與域名之間的對應關係。
db.127:localhost反向區文件,用於將127.0.0.1解析爲localhost。
其中的PTR表示的是反向解析。
實踐例子:
假設如今,咱們有三臺主機來構建hadoop集羣,三臺主機之間的域名與ip的對於關係以下:
namenode.hadoop 192.168.3.150
slave1.hadoop 192.168.3.151
slave2.hadoop 192.168.3.152
根據上面的域名與ip之間的對應關係,這裏假設咱們將192.168.3.150也即咱們namenode節點設置爲域名服務器,咱們須要經過以下三步來構建該dns服務器:
① 首先添加正向區域"hadoop"和反向區域「3.168.192.in-addr.arpa」相對應的文件。
② 在"hadoop"區域中添加A記錄:namenode對於150,slave1對應151,slave2對應152。
③ 在
「3.168.192.in-addr.arpa」區域中添加151對於namenode,151對應slave1,152對應slave2。
1、修改全部機器的/etc/network/interfaces文件,設置各自靜態的ip和指定dns-server。以下爲slave1節點的該文件的配置信息:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.3.151
netmask 255.255.255.0
gateway 192.168.3.1
dns-nameservers 192.168.3.150
說明:網上說指定dns能夠經過設置
/etc/resolv.conf文件,可是發現該文件在系統重啓後,由恢復爲系統默認設置了,雖然網上又有人說能夠將dns服務器信息加在
/etc/resolvconf/resolv.conf.d/base文件後,重啓後就不會改變了,可是我嘗試了,仍是不行。
2、編輯/etc/bind/named.conf.local文件,該文件的內容以下:
zone "hadoop" {
type master;
file "/etc/bind/db.hadoop";
};
zone "3.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.3";
};
3、建立並編輯db.hadoop文件,該文件的內容以下:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA namenode.hadoop. root.namenode.hadoop. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS namenode.hadoop.
namenode IN A 192.168.3.150
slave1 IN A 192.168.3.151
slave2 IN A 192.168.3.152
4、建立並編輯
db.192.168.3文件,該文件內容以下:
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA namenode.hadoop. root.namenode.hadoop. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS namenode.hadoop.
150 IN PTR namenode.
151 IN PTR slave1.
152 IN PTR slave2.
5、重啓系統並使用nslookup命令測試
首先咱們在namenode機器(192.168.3.150)上測試:
而後,咱們在slave1機器(192.168.3.151)上測試:
說明:咱們的bind9軟件只需僅安裝在做爲dns服務器的一臺機器上,其餘機器不須要安裝.
利用DNS在搭建Hadoop集羣就更方面了,利用host文件來管理域名到ip地址之間的映射關係,當咱們的集羣須要增長一臺機器時,須要修改全部機器的host文件,而利用DNS的話,咱們只須要修改dns服務器下/etc/bind/db.hadoop和/etc/bind/db.3.168.192以及新增機器
/etc/network/interfaces文件便可。
附件列表