知识库 : UDH集群时间同步服务器配置指南

一、背景介绍

随着UDH集群节点数的增加,集群各节点之间时间不一致的问题会越来越严重,经常会引发故障,为避免类似问题出现,需要搭建独立的时间同步服务器来统一管理集群的标准时间,并设置所有节点定时与时间服务器进行同步。

下面对时间服务器的基本概念及设置方法进行逐一介绍。

二、NTP通信协议介绍

NTP通信协议原理:

  1. 首先时间服务器启动NTP服务。
  2. 客户端会向时间服务器发送调整时间的Message。
  3. 时间服务器会发送当前的标准时间给客户端。
  4. 客户端接收服务器发送的时间后,会根据这个信息对自己的时间进行调整,这样就实现了网络时间同步。

NTP服务使用UDP协议,使用的端口号为123 。

客户端使用ntpdata命令与服务端进行通信,获取服务器的时间信息并对自身的时间进行调整。

三、集群节点介绍

 

节点名称
节点IP
节点角色
kk-monitor192.168.122.167时间服务器、监控服务、web服务
kk-hadoop-manager192.168.122.249CDH manager、namenode、tasktracker、ganglia server、etc.
kk-hadoop-data1192.168.122.62datanode、jobtracker、ganglia agent、etc
kk-hadoop-data2192.168.122.229datanode、jobtracker、ganglia agent、etc
kk-hadoop-data3192.168.122.94datanode、jobtracker、ganglia agent、etc
kk-hadoop-data4192.168.122.250datanode、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、在其他节点重复执行第四步操作即可。