文章目录
方法概括
时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时同步,如,每隔十分钟同步一次时间。
具体步骤
准备阶段:选择一台机器作为时间服务器,我的实验集群是3个,选择了namenode作为时间服务器。
1. 时间服务器(root)
(1)检查ntp是否安装
[终端输入]# rpm -qa|grep ntp
获得如下结果说明已经安装
fontpackages-filesystem-1.41-1.1.el6.noarch
ntp-4.2.4p8-3.el6.centos.x86_64
ntpdate-4.2.4p8-3.el6.centos.x86_64
(2)修改ntp配置文件
-
修改一
[终端输入]# vi /etc/ntp.conf
把找到下面的配置:
# Hosts on local network are less restricted.
# restrict 192.168.162.0 mask 255.255.255.0 nomodify notrap
把*注释去掉,并修改ip为自己的网段(ip地址前三个为网段):
# Hosts on local network are less restricted.
restrict 自己的网段 mask 255.255.255.0 nomodify notrap
作用:授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间
- 修改二
找到下面的配置,并且注释掉
# 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
作用:集群在局域网中,不使用其他互联网上的时间 / 由于是内网环境,就不需要这些服务配置,注释
- 修改三
添加如下内容(对于CentOS6.4之前,这参数是默认有的;6.5之后就没有了,要手动添加)
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
作用:当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步
(3)启动并且配置开机时启动
查看服务状态:service ntpd status
启动服务:service ntpd start
设置开机自启:chkconfig ntpd on
(4)更新本地时间
没有这一步的话,可能会出现这种情况:集群时间同步了,但时间服务器本身的时间不正确。
[终端输入] ntpdate -u us.pool.ntp.org
输出:24 Feb 15:24:11 ntpdate[2408]: step time server 202.112.10.60 offset 4.004597 sec
国内可选的时间服务器:
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
(5)查看本地硬件时钟时间,并进行更新
[终端输入]hwclock --localtime
[终端输入]hwclock --localtime -w //系统时间同步给硬件时间
(6)硬件时钟时间同步给系统时间
服务器关机或断电后,系统时间不准确,硬件时钟时间正常走动,设置服务器启动后自动将硬件时钟时间同步给系统时间
[终端输入]# vim /etc/sysconfig/ntpd
增加内容如下
SYNC_HWCLOCK=yes
作用:与系统BIOS进行时间同步 / 让硬件时间与系统时间一起同步
(7)自动同步网络时间
服务器重启启动或断网重新连接后,会自动同步网络时间,设置下让系统时间自动同步给本地硬件时钟时间
[终端输入]vi /etc/sysconfig/ntpdate
SYNC_HWCLOCK=yes
2. 其它机器配置(root)
对每台机器建立定时任务
[终端输入]crontab -e
添加以下内容:
## sync time
*/10 * * * * /usr/sbin/ntpdate 时间服务器主机名
作用:计划一个crontab定时任务,每十分钟执行一次时间同步
所有节点 启动ntpd服务
这一步似乎不用做,因为我做完上面就已经可以了
[终端输入] service ntpd restart
[终端输入] service crond restart
[终端输入] chkconfig ntpd on
关闭的命令(不用执行)
[终端输入] service ntpd stop
[终端输入] service crond stop
测试
通过date -s "2019-12-12 12:12:12"设置时间,十分钟后通过date查看机器是否与时间服务器同步