这里有最新的使用文档和教程
Linux同步时间的方法
强烈建议以下方案:
设置时区:timedatectl set-timezone Asia/Shanghai
设置硬件时间:hwclock --set --date="05/24/23 15:33"
查看硬件时间:hwclock --show
设置系统时间与硬件时间同步:hwclock --systohc
查看系统时间date
方法一:非生产时使用
第一种是在所有机器上,使用连接工具的并发命令功能,同时运行修改时间命令,比如执行date -s “2019-05-25 17:00:00” ,这个方法适合自己测试环境用
第二种就是安装了一个ntpdate命令,然后同步时间的master是一个所有人都可以用的master
安装工具
yum -y install ntp ntpdate
同步网络时间
ntpdate cn.pool.ntp.org
方法二:NTP服务
使用ntpd server,为多台机器同步时间,这里以三台机器为例
第一步:在三台机器上运行ntpdate命令,验证是否安装有ntpdate,如果没有运行yum -y install ntp安装该服务
第二步:选出一台机器,做master,编辑它的/etc/ntp.conf文件
进入配置文件之后,首先将配置文件中所有的restrict开头的行注释掉,如下面这种
其后另写一条生效的服务配置
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
格式:restrict 允许的ip范围一般默认就行 mask 允许同步的网段子网掩码 nomodify notrap
将所有server开头的行全部注释,添加如下的新信息
server 127.127.1.0
fudge 127.127.1.0 stratum 10
第三步:master启动ntp服务并开机自启
service ntpd restart
chkconfig ntpd on
第四步:所有子节点运行命令,同步master的时间。
ntpdate master节点ip
如果子节点运行命令之后,如果提示no server那就等两分钟左右在在运行
如果提示`the NTP socket is in use, exiting`说明当前子节点的ntp服务启动了,你要关掉它
第五步:让集群自己同步时间,有两种方式
第一种方式:通过crontab来完成同步,推荐这种,容易控制时间同步频率
所有子节点配置定时任务,半分钟同步一次,命令如下:
crontab -e
上面的命令会打开linux自带的定时任务列表在其中添加如下一条信息:
30 * * * * /usr/sbin/ntpdate master的ip或域名 >> /root/ntpdate.log 2>&1
后期需要观察一下/root/ntpdate.log中有没有定时同步时间的运行日志
说明一下:30 * * * * 代表了五个时间占位符,上面写的代表30分钟同步一次,你可以自己改,五个站位符号按顺序分别为分、时、日、月、天
* * * * *
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 一小时中的某分钟 (0 - 59)
一般情况下直接指定数字就够了,但是它可以指定表达式来完成更多变的事件指定,表达式很简单,网上搜索案例就行了
第二种方式:依赖于ntp服务
所有子节点同样配置/etc/ntp.conf文件,不过不需要master那样麻烦,只需要注释所有restrict和server配置,添加“server master节点ip”即可,最后保证所有节点启动并设置开机自启ntp服务
但是这个方法推荐,有时候不一定灵不灵,而且无法灵活的控制频率