Linux集群时间同步服务器设置

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

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

一、NTP通信协议介绍

NTP通信协议原理:

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

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、在其他节点重复执行第四步操作即可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

文章导航