红联Linux门户
Linux帮助

Hadoop通过bind9配置DNS替代hosts的IP映射(ubuntu版)

发布时间:2016-08-01 15:31:23来源:linux网站作者:sz-lcw
最开始搭建hadoop集群时,我是用hosts的ip映射实现的各个主机名与IP之间的映射关系。
但是,hosts的ip映射的缺点是,当我们在集群里面增加一个机器时,所有机器都要更新他们的hosts文件,这样就显得很繁琐。
通过查找资料,可以使用bind9配置DNS来替代原先的hosts的IP映射,当需要添加新主机时,只需要更改DNS服务器中bind的正向解析文件和反向解析文件即可。大大减轻了操作负担。
 
具体实现如下:
环境:Ubuntu 14.04.4 LTS 
以三台主机为例:
192.168.1.200   delab-master-01
192.168.1.201   delab-slave-01
192.168.1.202   delab-slave-02
首先,如果你已经配置了hosts的ip映射,应该把各台机器上的ip映射删除。
 
1、安装bind9
选择一台主机作为DNS服务器(这里以delab-master-01),安装bind9:
sudo apt-get install bind9  
 
2、配置bind文件
bind9默认安装在/etc/bind/目录下,我们打开named.conf 可以看见:
include "/etc/bind/named.conf.options";  
include "/etc/bind/named.conf.local";  
include "/etc/bind/named.conf.default-zones";
它将本机的需要的配置独立在name.conf.local这个文件里面,在name.conf里面用include把name.conf.local包含进来,所以我们只需要修改named.conf.local即可。
配置如下:
zone "hadoop.com"{  
type master;  
file "/etc/bind/db.hadoop.com";  
};  
zone "1.168.192.in-addr.arpa"{  
type master;  
file "/etc/bind/db.192.168.1";  
};
这里hadoop.com是自己设置的域名,可以自行修改。这里的db.hadoop.com 对应着正向解析文件。
db.192.168.1对应反向解析文件。注意: 1.168.192 和db.192.168.1是刚好反过来的。
在/etc/bind/目录下分别新建db.hadoop.com和db.192.168.1文件。
在db.hadoop.com 中增加:
@       IN      SOA     localhost. root.localhost. (  
1       ; Serial  
604800  ; Refresh  
86400   ; Retry  
2419200 ; Expire  
604800 )        ; Negative Cache TTL  
;  
@       IN      NS      localhost.  
@       IN      A       127.0.0.1  
delab-master-01 IN      A       192.168.1.200  
delab-slave-01  IN      A       192.168.1.201  
delab-slave-02  IN      A       192.168.1.202
在db.192.168.1中增加:
;  
$TTL 604800  
@ IN SOA hadoop.com. root.hadoop.com. (  
1 ; Serial  
604800 ; Refresh  
86400 ; Retry  
2419200 ; Expire  
604800 ) ; Negative Cache TTL;  
@       IN      NS      hadoop.com.  
200     IN      PTR     delab-master-01.hadoop.com.  
201     IN      PTR     delab-slave-01.hadoop.com.  
202     IN      PTR     delab-slave-02.hadoop.com.  
 
3、修改所有机器中的dns服务器指向我们的dns服务器(即delab-master-01)
注意:每台机器的dns服务器指向都需要修改。
这里可以直接修改/etc/resolv.conf文件,增加nameserver 192.168.1.200 (这里的ip是我们DNS服务器的IP地址)
但是,在重新启动机器后,/etc/resolv.conf文件会被复写,所以不建议这么做。
建议直接修改/etc/network/interfaces文件。
重要:如果你使用的是ubuntu桌面版,网络配置可能是通过Network-Manager完成的,那么,应该先关掉Network-Manager(sudo stop network-manager),并将 /etc/NetworkManager/nm-system-settings.conf 文件中的managed=false:
[ifupdown]  
managed=false  
最后在interfaces文件中添加,dns-nameservers 192.168.1.200和dns-search hadoop.com
auto eth0  
iface eth0 inet static  
address 192.168.1.200  
netmask 255.255.255.0  
gateway 192.168.1.1  
dns-nameservers 192.168.1.200  
dns-search hadoop.com
这里dns-search hadoop.com作用很重要,如果没有这个,那么我们访问各个主机时,需要把完整输入对应域名,如:delab-slave-01.hadoop.com ,配置了dns-search之后,我们就可以直接输入delab-slave-01来访问相应主机。这样的话,配置完DNS后,我们hadoop的相关配置文件就都不修改即可使用。
配置完后,我们应该更新一下网络配置:
sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0  
 
4、重启bind
sudo /etc/init.d/bind9 restart  
我们可以通过nslookup来查看配置是否成功:(正向解析和反向解析)
Hadoop通过bind9配置DNS替代hosts的IP映射(ubuntu版)
通过ping 主机名:
Hadoop通过bind9配置DNS替代hosts的IP映射(ubuntu版)
 
至此,我们DNS服务器就已经配置完成了,如果有新的主机加入集群,我们只需要配置DNS服务器中的bind的正向解析文件和反向解析文件即可。
当然,如果我们dns服务器挂了,整个集群就没法通信了,所以可以配置主从DNS服务器来实现HA(High Available)。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/22918.html