背景
在实际生产环境中,很多软件或者很多任务对集群上的时间是否⼀致要求是很严格的。有的要求集群中
所有机器上的时间差不能大于10分钟,有的要求所有机器上的时间差不能大于30秒,接下来说说如何时间同步吧
*建议直接使用root账户
以下为两种同步方式:
1、同步网络的时间
- 确认是否安装了ntp
[root@master ~]# rpm -qa | grep ntp
如上未安装
-
搜索命令:
[root@master ~]# yum list ntp*
-
安装命令:
[root@master ~]# yum -y install ntp.x86_64
-
查看状态
[root@master ~]# service ntpd status
-
启动命令
[root@master ~]# service ntpd start
-
编写定时脚本(如下,实现每分钟从网络上同步)
[root@master ~]# crontab -e
*/1 * * * * /usr/sbin/ntpdate -u time.windows.com
-
测试
[root@master ~]# date
2020年 02月 24日 星期一 13:38:55 CST
[root@master ~]# date -s 2019-02-03
2019年 02月 03日 星期日 00:00:00 CST
[root@master ~]# date
2019年 02月 03日 星期日 00:00:01 CST
[root@master ~]# date
2020年 02月 24日 星期一 13:40:32 CST
同步过来了
2、自定义时间服务器
问题来了,要是网络挂了,那集群的时间就没法同步,保证节点时间的一致性了,此刻就得我们搭建自己的时间服务器了
- 如下,检查,安装,启动命令(集群各个节点都得安装ntp)
[root@master ~]# rpm -qa | grep ntp
[root@master ~]# yum -y install ntp.x86_64
[root@slave1 ~]# service ntpd start
[root@slave1 ~]# chkconfig ntpd on //设置开机自启动
-
配置主节点master的ntp.conf 文件
[root@master ~]# vi /etc/ntp.conf
-
slave1、slave2 定时器任务中添加如下,即每分钟从master节点同步时间
*/1 * * * * /usr/sbin/ntpdate -u master
-
测试
[root@slave1 ~]# date
2020年 02月 24日 星期一 14:35:26 CST
[root@slave1 ~]# date -s 2019-10-11
2019年 10月 11日 星期五 00:00:00 CST
[root@slave1 ~]# date
2020年 02月 24日 星期一 14:39:28 CST
您在 /var/spool/mail/root 中有新邮件
[root@slave2 ~]# date
2020年 02月 24日 星期一 14:35:48 CST
[root@slave2 ~]# date -s 2019-10-11
2019年 10月 11日 星期五 00:00:00 CST
[root@slave2 ~]# date
2020年 02月 24日 星期一 14:39:31 CST
您在 /var/spool/mail/root 中有新邮件
ok,测试成功,时间同步啦