一、背景介绍
随着UDH集群节点数的增加,集群各节点之间时间不一致的问题会越来越严重,经常会引发故障,为避免类似问题出现,需要搭建独立的时间同步服务器来统一管理集群的标准时间,并设置所有节点定时与时间服务器进行同步。
下面对时间服务器的基本概念及设置方法进行逐一介绍。
二、NTP通信协议介绍
NTP通信协议原理:
- 首先时间服务器启动NTP服务。
- 客户端会向时间服务器发送调整时间的Message。
- 时间服务器会发送当前的标准时间给客户端。
- 客户端接收服务器发送的时间后,会根据这个信息对自己的时间进行调整,这样就实现了网络时间同步。
NTP服务使用UDP协议,使用的端口号为123 。
客户端使用ntpdata命令与服务端进行通信,获取服务器的时间信息并对自身的时间进行调整。
三、集群节点介绍
节点名称 | 节点IP | 节点角色 |
---|---|---|
kk-monitor | 192.168.122.167 | 时间服务器、监控服务、web服务 |
kk-hadoop-manager | 192.168.122.249 | CDH manager、namenode、tasktracker、ganglia server、etc. |
kk-hadoop-data1 | 192.168.122.62 | datanode、jobtracker、ganglia agent、etc |
kk-hadoop-data2 | 192.168.122.229 | datanode、jobtracker、ganglia agent、etc |
kk-hadoop-data3 | 192.168.122.94 | datanode、jobtracker、ganglia agent、etc |
kk-hadoop-data4 | 192.168.122.250 | datanode、jobtracker、ganglia agent、etc |
四、时间服务器安装配置过程
1、在时间服务器kk-monitor上通过yum安装ntp:
1 | [root@kk -monitor ~] # yum -y install ntp |
2、查看当前的时区:
1 2 | [root@kk -monitor ~] # cat /etc/sysconfig/clock ZONE= "Asia/Shanghai" |
由于北京、上海、香港都属于同一时区,按照国际惯例,北京时间应该选择时区为Asia/Shanghai 。
3、修改/etc/ntp.conf配置文件,修改过的部分在该行后面用中文做了注释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #修改后的文件内容如下: # For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). driftfile /var/lib/ntp/drift # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 restrict -6 ::1 restrict 192.168.122.0 # hadoop集群属于192.168.122.0网段,在此设置允许该网段机器进行访问。 # Hosts on local network are less restricted. #restrict 192.168.122.0 mask 255.255.255.0 # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #server 0.centos.pool.ntp.org # 注释掉文件中默认设置的外网时间服务器 #server 1.centos.pool.ntp.org # #server 2.centos.pool.ntp.org # #broadcast 192.168.1.255 autokey # broadcast server #broadcastclient # broadcast client #broadcast 224.0.1.1 autokey # multicast server #multicastclient 224.0.1.1 # multicast client #manycastserver 239.255.254.254 # manycast server #manycastclient 239.255.254.254 autokey # manycast client # Undisciplined Local Clock. This is a fake driver intended for backup # and when no outside source of synchronized time is available. server 127.127.1.0 # local clock # 去掉行首的注释符号。当没有可用的外网时间服务器时,会访问本机的时间服务器。 fudge 127.127.1.0 stratum 10 # 去掉行首的注释符号 # Enable public key cryptography. #crypto includefile /etc/ntp/crypto/pw # Key file containing the keys and key identifiers used when operating # with symmetric key cryptography. keys /etc/ntp/keys # Specify the key identifiers which are trusted. #trustedkey 4 8 42 # Specify the key identifier to use with the ntpdc utility. #requestkey 8 # Specify the key identifier to use with the ntpq utility. #controlkey 8 # Enable writing of statistics records. #statistics clockstats cryptostats loopstats peerstats |
4、启动ntp服务
1 2 | [root@kk -monitor ~] # service ntpd start Starting ntpd: [ OK ] |
5、查看ntpd进程是否启动
1 2 3 | [root@kk -monitor ~] # ps -ef | grep ntp root 4446 1 0 11:29 ? 00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g root 4449 4350 0 11:29 pts/0 00:00:00 grep ntp |
6、查看123端口启用情况
1 2 3 4 5 6 7 8 | [root@kk -monitor ~] # netstat -an | grep 123 udp 0 0 192.168.2.100:123 0.0.0.0:* udp 0 0 127.0.0.1:123 0.0.0.0:* udp 0 0 0.0.0.0:123 0.0.0.0:* udp 0 0 fe80::20c:29ff:fe31:79a7:123 :::* udp 0 0 ::1:123 :::* udp 0 0 :::123 :::* unix 2 [ ] DGRAM 11236 |
五、客户端时间同步
1、在kk-haoop-manager上使用ntpdate从时间服务器同步时间
1 2 | [root@kk -hadoop -manager software] # ntpdate kk-monitor 27 Jun 13:30:20 ntpdate[4026]: adjust time server 192.168.122.167 offset 0.000139 sec |
2、更新bios时钟
1 | [root@kk -monitor ~] # hwclock -w |
3、将时间同步设置为定时任务
1 2 3 4 | [root@kk -monitor ~] # crontab -e # 输入如下内容后保存退出 * */1 * * * ntpdate kk -monitor && hwclock -w |
4、查看已经设置好的定时任务
1 | [root@kk -monitor ~] # crontab -l |
5、在其他节点重复执行第四步操作即可。