博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop运维记录系列(十五)
阅读量:6542 次
发布时间:2019-06-24

本文共 4038 字,大约阅读时间需要 13 分钟。

早期搭建Hadoop集群的时候,在做主机和IP解析的时候,通常的做法是写hosts文件,但是Hadoop集群大了以后做hosts文件很麻烦,每次加新的服务器都需要整个集群重新同步一次hosts文件,另外,如果在同一个域下面做两个集群,做distcp,也需要把两个集群的hosts文件全写完整并完全同步,很麻烦。那么,一劳永逸的办法就是做DNS。DNS我这边已经用了很长时间了,几年前为了学这个还专门买了一本巨厚的BIND手册。

做DNS服务器最常用的就是BIND,ISC开发并维护的开源系统。

以centos6为例,使用BIND 9.8.2,在域名解析服务器上安装bind和域名正反向查询工具

yum install bind bind-utils

安装完成后,配置文件在 /etc/named.conf,域名数据文件通常我们会放在 /var/named,配置文件不是很复杂。留一个小问题,172.16.0.0/18写成子网掩码应该写多少?在该子网内可用的IP地址范围是多少?

/etc/named.conf

//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a caching only nameserver (as a localhost DNS resolver only).//// See /usr/share/doc/bind*/sample/ for example named configuration files.//options {        listen-on port 53 { 172.16.0.2; }; //监听内网地址53端口, ns1要改成172.16.0.1//      listen-on-v6 port 53 { ::1; }; //不监听IPv6        directory       "/var/named"; //DNS数据文件存储目录        dump-file       "/var/named/data/cache_dump.db";        statistics-file "/var/named/data/named_stats.txt";        memstatistics-file "/var/named/data/named_mem_stats.txt";        allow-query     { 172.16.0.0/18; }; //允许172.16.0.0/18的子网IP主机进行查询,任意主机写any;        recursion yes; //允许递归查询        dnssec-enable yes;        dnssec-validation yes;        dnssec-lookaside auto;        /* Path to ISC DLV key */        bindkeys-file "/etc/named.iscdlv.key";        managed-keys-directory "/var/named/dynamic";};logging {        channel default_debug {                file "data/named.run";                severity dynamic;        };};zone "." IN {        type hint;        file "named.ca";};zone "hadoop" IN { //我们的hadoop域        type master;        file "hadoop.zone"; };zone "16.172.in-addr.arpa" IN {         type master;        file "172.16.zone"; };include "/etc/named.rfc1912.zones";include "/etc/named.root.key";

然后是正向解析文件 /var/named/hadoop.zone

$TTL 600$ORIGIN hadoop.@       IN      SOA     ns1     root ( ;SOA部分必写        0; Serial        1D; Refresh        1H; Retry        1W; Expire        3H); Negative Cache TTL@       IN      NS      ns1.hadoop.@       IN      NS      ns2.hadoop.;用两台namenode同时担负nameserver,反正namenode平时也没什么具体事干,DNS查询走udp端口,不会对 namenode造成压力;另外一个原因是namenode基本不会挂,而DN等服务器比较容易挂,所以NN同时做NS也更稳定,当然,有钱可以单独购置NS服务器,土豪请随意。;两台namenode一起ns1             IN      A       172.16.0.1ns2             IN      A       172.16.0.2;两台正向解析服务器的A记录,至于A, CNAME, MX等含义不解释了。namenode-01     IN      A       172.16.0.1namenode-02     IN      A       172.16.0.2;服务器的A记录

反向解析文件 /var/named/172.16.zone

反向解析文件里需要把IP地址的顺序倒过来写,例如,172.16.0.1在反向文件里要写成1.0.16.172,所以,文件名命名为16.172.zone更符合规则。

$TTL 600@ IN SOA namenode-01.hadoop. root.namenode-01.hadoop. ( //SOA部分必写        0; Serial        1D; Refresh        1H; Retry        1W; Expire        3H); Negative Cache TTL; 反向解析文件里不能有$ORIGIN,所以在下面先写上全部主机名@       IN      NS      ns1.hadoop.@       IN      NS      ns2.hadoop.1.0     IN      PTR     ns1.hadoop. 2.0     IN      PTR     ns2.hadoop.1.0     IN      PTR     namenode-01.hadoop.2.0     IN      PTR     namenode-02.hadoop.

全部完成后执行

chkconfig --add namedservice named restart

接下来在所有主机的/etc/resolv.conf文件中添加

nameserver 172.16.0.1nameserver 172.16.0.2

然后删除所有主机中的hosts文件内容,只保留127.0.0.1

用nslookup测试一下

[root@namenode-01 named]# nslookup > set q=A> namenode-02.hadoopServer:         172.16.0.1Address:        172.16.0.1#53#正向查询Name:   namenode-02.hadoopAddress: 172.16.0.2> set q=PTR> 172.16.0.2Server:         172.16.0.1Address:        172.16.0.1#53#反向查询2.0.16.172.in-addr.arpa name = namenode-02.hadoop.####然后关闭ns1的DNS服务进行测试。[root@namenode-01 named]# service named stop停止 named:.                                              [确定][root@namenode-01 named]# nslookup          > set q=A> namenode-01.hadoopServer:         172.16.0.2Address:        172.16.0.2#53Name:   namenode-01.hadoopAddress: 172.16.0.1> set q=PTR> 172.16.0.1Server:         172.16.0.2Address:        172.16.0.2#531.0.16.172.in-addr.arpa name = namenode-01.hadoop.

这样,做好了Namenode高可用,也勉强算是做好了DNS的高可用,集群中任意一台Namenode挂机,也不会影响整个集群的正常服务,新买的服务器只需要装好操作系统,在/etc/resolv.conf里面设置两个nameserver的IP地址即可,这就比hosts文件方便多了。

转载地址:http://jqado.baihongyu.com/

你可能感兴趣的文章
远离云计算风险三步走
查看>>
Silverlight 游戏开发小技巧:技能冷却效果2(Cool“.NET研究”down)2
查看>>
Mysql的优化一则
查看>>
An Introduction to Asynchronous Programming and Twisted (2)
查看>>
vue 组件编码规范
查看>>
IEC61850与MMS的服务映射
查看>>
Java 泛型: 什么是PECS(Producer Extends, Consumer Super)
查看>>
软件包管理-打包解包压缩解压
查看>>
maven构建scala项目
查看>>
linux 高级编程看的书
查看>>
Memcached分布式缓存-windows上初步使用-网摘
查看>>
IIS无法启动的问题
查看>>
如何通过结构中的某个变量获取结构本身的指针?(container_of详解)
查看>>
Android 关于mnt/sdcard和sdcard的区别
查看>>
特征变换(7)总结
查看>>
网络工程师之路怎么走?
查看>>
go语言unix域套接字发送udp报文
查看>>
2.并发和并行
查看>>
OpenGL学习(二)用户与交互
查看>>
神奇的代码-常见错误代码注意点
查看>>