方案一:使用 date 命令调整时间
date #查看当前系统时间和日期
date -s 02/21/2019 #设置日期,例如将系统日期设定成 2019 年 02 月 21 日
date -s 19:21:45 #设置时分秒,例如将系统时间设定成 19 点 21 分 45 秒
hwclock -w #将当前时间和日期写入 BIOS,即设置为硬件时间,避免重启后失效
注意:手动设置时间会存在一定的误差,所以调整各个系统时间时,建议参照秒表设置,尽量降低误差值。
方案二:使用 NTP 调整系统时间
NTP(Network Time Protocol,网络时间协议),是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS 等等)做同步化,并提供高精准度的时间校正(LAN 上与标准间差小于1毫秒,WAN 上几十毫秒),且可通过加密确认的方式来防止恶毒的协议攻击。
1. 检测 ntp 是否已安装
rpm -qa | grep ntp #检查命令
若只有 ntpdate 而未见 ntp,则需删除原有 ntpdate:
rpm -e ntpdate-4.2.6p5-22.el7.x86_64 #删除 ntpdate
2. 联网环境——用ntpdate自动更新系统时间
2.1 采用微软的校时服务器调整系统时间
yum install -y ntp #安装 ntp 服务器
ntpdate time.windows.com #采用微软的校时服务器调整系统时间
出现如下图所示内容,说明已经同步成功了。
2.2 设置自动同步,同步频率:每十分钟同步一次
crontab -e #编辑crontab
*/10 * * * * /usr/sbin/ntpdate time.windows.com >> /tmp/crontab.log
3. 内网环境——用 ntp 搭建自己的时间服务器
3.1 安装ntp
示例环境:主节点 IP-192.168.61.250,子节点 IP-192.168.61.251。集群下各个节点均需要进行安装,RedHat&CentOS 的系统可直接使用以下 rpm 包:
autogen-libopts-5.18-5.el7.x86_64.rpm
ntpdate-4.2.6p5-25.el7.centos.x86_64.rpm
ntp-4.2.6p5-25.el7.centos.x86_64.rpm
下载安装包后,上传到服务器指定目录,例如上传到/usr/ntp目录下,然后执行以下安装命令:
cd /usr/ntp
rpm -Uvh *.rpm --nodeps --force #一键安装目录下所有的 rpm 包
3.2 修改所有节点的 /etc/ntp.conf
vi /etc/ntp.conf
restrict 192.168.6.2 mask 255.255.255.0 nomodify notrap #找到 #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 并去掉注释#修改其IP地址
# 192.168.6.2 为示例,请按照实际集群所在网段的网关IP填写,255.255.255.0 为子网掩码,查询网段网关的命令为 IP route show,查询结果中default via 后面的 IP 即是网关 IP
3.3 配置 ntp 服务器
选择一个节点作为主节点即 ntp 服务器,修改其/etc/ntp.conf
vi /etc/ntp.conf
#注释掉 server 0 ~ n,并在 server 部分添加 server 和 fudge行
#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 127.127.1.0 #使用本地时钟作为ntp服务器时间,这里的 127.127.1.0 在 ntp 中代表本机
fudge 127.127.1.0 stratum 10 #127.127.1.0 为第10层,ntp 和127.127.1.0同步完后,就变成了 11 层
3.4 配置ntp客户端
其他节点作为子节点,需要配置 ntp 客户端,修改其/etc/ntp.conf
vi /etc/ntp.conf
注释掉 server 0 ~ n,并在 server 部分添加 server 行,如下:
#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 192.168.61.250 #使用主节点 192.169.61.250 的时间作为基准更新时间
3.5 ntp 启动命令
1)主节点启动命令
service ntpd start #打开 ntpd 服务
chkconfig ntpd on #设置开机启动
2)子节点启动命令
ntpdate 192.168.61.250 #向主节点发送请求,同步时间
service ntpd start #打开 ntpd 服务
chkconfig ntpd on #设置开机启动
3)查看 ntp 服务器有无和上层 ntp 连通
使用 ntpstat 行查询,结果一般如下:
4)查看 ntp 服务器与上层 ntp 的状态
使用 ntpq -p 进行查询,结果一般如下:
4. 运维知识
4.1 常用命令
service ntpd status #查看 ntpd 服务状态
service ntpd start #启动 ntpd 服务
service ntpd stop #停止 ntpd 服务
service ntpd restart #重启 ntpd 服务
4.2 检查同步是否成功
查看与时间同步服务器的时间偏差,offset 偏差小,同步成功。
5. FAQ文档
5.1 内网环境安装后,使用 ntpstat 查看 ntp 服务器有无和上层 ntp 连通时,可能会出现,如下情况:
1)unsynchronised time server re-starting polling server every 8 s
2)unsynchronised polling server every 8 s
这种情况属于正常,ntp 服务器配置完毕后,需要等待 3~5 分钟才能与/etc/ntp.conf中配置的标准时间进行同步,等一段时间之后,再次使用 ntpstat 命令查看状态,就会变成正常结果。
5.2 ntp 启动命令,启动完主节点,再启动子节点时,可能出现如下情况 no server suitable for synchronization found:
在 ntp server上重新启动ntp服务后,ntp server 自身或者与其 server 的同步的需要一个时间段,大约三五分钟,在这个时间之内在客户端运行 ntpdate 命令时会产生 no server suitable for synchronization found 的错误。
5.3 手动更改主节点的时间,重启 ntp,子节点时间不同步,存在 3~5 分钟的生效时间。