Linux集群系统时间同步


环境准备:


1. 查看系统当前时间和时区

# 查看时间
[root@hadoop01 ~]# date
Thu Nov 23 04:37:46 CST 2017
[root@hadoop01 ~]# date -R # 显示时区
Thu, 23 Nov 2017 04:37:40 +0800
[root@hadoop01 ~]# date '+%Y-%m-%d %H:%M:%S' # 按照指定格式显示日期时间
2017-11-23 04:38:15

# 查看时区
[root@hadoop01 ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"

2. 修改时区

要做到服务器集群的时间同步,集群中各台机器的时区必须相同的,我们在国内就使用中国时区,如果你的机器的时区不是"Asia/Shanghai",需要修改时区

CentOS 中时区是以文件形式存在,当前正在使用的时区文件位于
/etc/localtime,其他时区文件则位于/usr/share/zoneinfo下,中国时区的文件全路径是/usr/share/zoneinfo/Asia/Shanghai

(1) 如果系统中有/usr/share/zoneinfo/Asia/Shanghai这个文件

要更改时区,直接使用如下命令就OK

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

(2) 如果没有 Asia/Shanghai 时区文件

需要使用 tzselect 命令去生成时区文件,生成好的时区文件就在/usr/share/zoneinfo 目录下,具体步骤去下:

<1> 执行tzselect命令

[root@hadoop01 ~]# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 5 # 选亚洲
Please select a country.
 1) Afghanistan       18) Israel            35) Palestine
 2) Armenia       19) Japan         36) Philippines
 3) Azerbaijan        20) Jordan            37) Qatar
 4) Bahrain       21) Kazakhstan        38) Russia
 5) Bangladesh        22) Korea (North)     39) Saudi Arabia
 6) Bhutan        23) Korea (South)     40) Singapore
 7) Brunei        24) Kuwait            41) Sri Lanka
 8) Cambodia          25) Kyrgyzstan        42) Syria
 9) China         26) Laos          43) Taiwan
10) Cyprus        27) Lebanon           44) Tajikistan
11) East Timor        28) Macau         45) Thailand
12) Georgia       29) Malaysia          46) Turkmenistan
13) Hong Kong         30) Mongolia          47) United Arab Emirates
14) India         31) Myanmar (Burma)       48) Uzbekistan
15) Indonesia         32) Nepal         49) Vietnam
16) Iran          33) Oman          50) Yemen
17) Iraq          34) Pakistan
#? 9 # 选中国
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1 # 只能选择北京时间和新疆时间,但即使选择了北京时间,最后生成的也是上海时区的文件

The following information has been given:

    China
    Beijing Time

Therefore TZ='Asia/Shanghai' will be used.
Local time is now:  Thu Nov 23 04:44:37 CST 2017.
Universal Time is now:  Wed Nov 22 20:44:37 UTC 2017.
Is the above information OK?
1) Yes
2) No
#? 1 # 确认

You can make this change permanent for yourself by appending the line
    TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai # 很无奈,不是北京,但问题不大

<2> 执行cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime这个命令

<3> 执行cat /etc/sysconfig/clock命令验证,如果ZONE的值不是Asia/Shanghai,手动改为这个值,注意,不执行第<1>步直接手动修改是无效果的

3. 集群时间同步方法一:手动修改

使用date -s命令来修改系统时间

[root@node01 ~]# date -s 12/25/2016
[root@node01 ~]# date -s 19:57:30
[root@node01 ~]# date -s "2017-11-22 20:50:30"

# 手动修改后,使用以下命令,把系统时间写入主板,这样,即使服务器关机或断电,时间也会更新
[root@node01 ~]# hwclock -w

让集群所有的服务器的时间同步,就用远程连接工具连接所有服务器,然后在所有的服务器中同时执行date -s命令设置时间,然后在所有的服务器中执行hwclock -w命令即可

4. 集群时间同步方法二:自动同步网络时间(需要网络)

(1) 通过外网同步时间

[root@node01 ~]# ntpdate time.nist.gov
# 或者
[root@node01 ~]# ntpdate 192.43.244.18

美国标准技术院时间服务器:time.nist.gov(192.43.244.18)
上海交通大学网络中心NTP服务器地址:ntp.sjtu.edu.cn(202.120.2.101)
中国国家授时中心服务器地址:cn.pool.ntp.org(210.72.145.44)

若以上提供的网络时间服务器不可用,请自行上网寻找可用的网络时间服务器

(2)设置自动执行任务,定时更新时间

<1> 使用命令:crontab -e

[root@node01 ~]# crontab -e

<2> 然后往里加入一行内容

*/10 * * * * ntpdate 202.120.2.101

上面的配置表示,每隔十分钟从 202.120.2.101该时间服务器同步一次时间。

<3> 保存退出

(3) 说明

以上两步操作可以让node01这个服务器每隔10分钟去指定的服务器同步时间,如果需要让集群中的所有服务器(hadoop01-hadoop04)时间同步,那么每台服务器都要做以上两步操作。

5. 集群时间同步方法三:局域网内选一台服务器作为时间服务器,其他服务器从局域网内的时间服务器更新时间,同时局域网内的时间服务器向外网时间服务器同步时间

node01的IP为192.168.21.101,让它作为时间服务器,192.168.21.0局域网内的所有服务器都向它同步时间,而node01这台时间服务器本身,向外网时间服务器同步时间(比如中国国家授时中心服务器)

(1) 选择一台服务器作为NTP服务器

我用node01

(2) 给局域网所有需要同步时间的服务器安装ntp服务

yum install ntp -y

(3) 给所有的需要同步时间的机器(包括node01)设置ntp服务开机自启动,但不要启动服务

chkconfig ntpd on

(4) 修改node01的配置文件/etc/ntp.conf

我去掉了所有的默认注释,对其中的修改写了自己的注释,没有写注释的是默认配置

driftfile /var/lib/ntp/drift

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1

# 允许192.168.21.0网段内所有机器从node01同步时间
restrict 192.168.21.0 mask 255.255.255.0 nomodify notrap

# node01通过外网同步时间的服务器列表,注释掉的是默认的
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst

# 中国国家授时中心服务器地址
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org

# 允许上层时间服务器主动修改本机时间
restrict 0.cn.pool.ntp.org nomodify notrap noquery
restrict 1.cn.pool.ntp.org nomodify notrap noquery
restrict 2.cn.pool.ntp.org nomodify notrap noquery
restrict 3.cn.pool.ntp.org nomodify notrap noquery

# 外部时间服务器不可用时,以本地时间作为时间服务
server  127.127.1.0
fudge   127.127.1.0 stratum 10

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

# 同步时间后,写到硬件中
SYNC_HWCLOCK=yes

(5) 启动ntpd服务之前,手动同步一下时间

因为ntpd服务开启之后,就不能手动同步时间了,那么为什么要先手动同步时间呢?
当server(中国国家授时中心服务器)与client(node01)之间的时间误差过大时(可能是1000秒),node01去同步时间可能对系统和应用带来不可预知的问题,node01将停止时间同步!所以如果发现node01启动之后时间并不进行同步时,应该考虑到可能是时间差过大引起的,此时需要先手动进行时间同步!

(6) 启动node01的ntpd服务

[root@node01 ~]# service ntpd start

(7) 检查ntp端口是否已经开启

[root@node01 ~]# netstat -unlnp | grep ntpd

看到红色框中的内容,表示连接和监听已正确

(7) 查看网络中的NTP服务器,显示客户端和每个服务器的关系

[root@node01 ~]# ntpq -p

这里的前4行就是我们配置的4个中国国家授时中心的服务器的信息

# 中国国家授时中心服务器地址
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org

最后一行就是本地时间服务的信息

# 外部时间服务器不可用时,以本地时间作为时间服务
server  127.127.1.0
fudge   127.127.1.0 stratum 10

下面对每个列的意义进行说明:

  • 每个remote地址前的符号
    *:响应的NTP服务器和最精确的服务器
    +:响应这个查询请求的NTP服务器
    blank(什么都没有):没有响应的NTP服务器
    说明
    ntp服务启动后,一般需要5-10分钟左右的时候才能与外部时间服务器开始同步时间,所以需要等待几分钟才能看到正常的现象,否则你看到的是响应的NTP服务器和最精确的服务器是LOCAL(0),最后一行前面是*符号,其他都是空白
  • remote
    响应这个请求的NTP服务器的名称
  • refid
    NTP服务器使用的更高一级服务器的名称
  • st
    正在响应请求的NTP服务器的级别
  • when
    上一次成功请求之后到现在的秒数
  • poll
    本地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小
  • reach
    用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加
  • delay
    从本地机发送同步要求到ntp服务器的往返时间
  • offset
    主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近
    jitter 统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确

(8) 查看node01的ntp服务状态

[root@node01 ~]# ntpstat
synchronised to NTP server (203.135.184.123) at stratum 2 
   time correct to within 699 ms
   polling server every 64 s

同样,服务启动后需要等待5-10分钟才能看到这个正常的信息
到这里,我们局域网内的时间服务器node01就已经配置完毕了

(9) 配置客户端(node02-node04)向node01同步时间

<1> 修改每台客户端的/etc/ntp.conf配置文件

文件内容如下:
同样,没有写注释的都是默认的配置

driftfile /var/lib/ntp/drift

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1

# 默认的服务器列表注释掉
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst

# 从node01中同步时间
server 192.168.21.101

# 允许node01修改本地时间
restrict 192.168.21.101 nomodify notrap noquery

# 如果node01不可用,用本地的时间服务
server 127.127.1.0
fudge 127.127.1.0 stratum 10

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

# 同步时间后写到硬件中
SYNC_HWCLOCK=yes

<2> 每台客户端在启动ntpd服务之前,手动同步一下时间

原因同(5)

[root@node02 ~]# ntpdate -u node01
[root@node03 ~]# ntpdate -u node01
[root@node04 ~]# ntpdate -u node01

<3> 启动每台客户端的ntpd服务

[root@node02 ~]# service ntpd start
[root@node03 ~]# service ntpd start
[root@node03 ~]# service ntpd start

<4> 等待5-10分钟后,查看每个客户端的状态


到这里,利用局域网内一台时间服务器来同步整个集群时间的全部配置就已经完成

(10) 测试,在4台服务器同时执性date命令

[root@node01 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32
[root@node02 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32
[root@node03 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32
[root@node04 ~]# date '+%Y-%m-%d %H:%M:%S'
2017-12-21 20:10:32

说明:若以上提供的网络时间服务器不可用,请自行上网寻找可用的网络时间服务器,另外需要关闭各服务器的防火墙,才能进行时间同步

参考文章:
内网环境NTP服务及时间同步(CentOS6.x)配置和部署
配置NTP服务ntpd/ntp.conf(搭建Hadoop集群可参考)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 内外网集群的时间同步① server端:可以访问外网的机器client端:在内网里的机器一、server端安装nt...
    米开朗基乐阅读 6,618评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 生产集群不会每台都有访问外网的权限,一般管理员会有master的外网访问权限,为了保证hadoop或spark程序...
    0过把火0阅读 1,769评论 0 0
  • 1.虚拟机VMware Tools安装: 安装VMWare Tools非常简单,右键一个虚拟机,选择“安装VMwa...
    奉先阅读 664评论 0 3
  • 第一章 OpenStack基础 OpenStack管理的资源及提供的服务OpenStack做为一个操作系统,...
    sgt_tiger阅读 12,900评论 4 72