随着集群节点数的增加,集群各节点之间时间不一致的问题会越来越严重,经常会引发故障,为避免类似问题出现,需要假设独立的时间同步服务器,并设置所有节点定时与时间服务器进行同步。
下面对时间服务器的基本概念及设置方法进行逐一介绍。
一、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、在其他节点重复执行第四步操作即可。
近期评论