Linux同步时间的方法

方法一:非生产时使用

第一种是在所有机器上,使用连接工具的并发命令功能,同时运行修改时间命令,比如执行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服务

但是这个方法推荐,有时候不一定灵不灵,而且无法灵活的控制频率

方法三:chrony 不推荐用

a) 所有节点,执行rpm -qa | grep chrony检查是否已经安装chrony,若没有执行yum -y install chrony安装

b) vi /etc/chrony.conf修改如下
Linux同步时间的方法_第1张图片
c) scp命令分发各节点,同步各节点的chrony.conf配置

d) 启动chrony服务并设为开机启动

systemctl enable chronyd.service
systemctl start chronyd.service
systemctl status chronyd.service

e) 查看时间同步源:chronyc sources -v
Linux同步时间的方法_第2张图片
f) 查看时间同步源状态:chronyc sourcestats -v
Linux同步时间的方法_第3张图片
g) 检查是否已经同步过:timedatectl(NTP synchronized)
Linux同步时间的方法_第4张图片

之所以不推荐使用改服务,是因为它的运行需要时区的设置,默认的时区不是中国时区,可是想改时区特别麻烦,多数时候改了之后无效,作者本人之前用的时候是将系统时区,再到服务时区全部改了才生效的,中间折腾了很久,所以用过一次以后再也不用这个服务了

先改服务时区:
timedatectl status
timedatectl list-timezones
timedatectl set-timezone "Asia/Shanghai"
chronyc -a makestep

--------------------------------------------

后改系统时区:
先查看服务器时区用的那个
ls -l /etc/localtime

如果要修改运行 tzselect 命令
之后依次选择 Asia -> Shanghai

设置完还没完,要手动更改时区文件
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

你可能感兴趣的:(Linux操作系统,服务器)