前言
你的Linux服务器每运行一段时间,服务器时间就不准了,不是快就是慢。你经常需要登录服务器手动通过命令来设置服务器时间,这种操作即繁琐又低效。
一台还好,手动同步一下也不费什么时间,如果是好几台呢,那你就得掂量掂量手动同步的工作量了。
服务器时间同步在集群环境,数据库主从备份等场景非常有用,如果服务器时间不一致可能会导致各种各样的问题。那么如何同步时间,保持服务器时间一致在实际生产环境中就显得非常重要。
一、本文解决问题
1、修正时区,将EDT修改为CST。
2、Linux服务器如何进行时钟同步。
3、如何搭建自己的时钟服务器(NTP Server),其它服务器和该时钟服务器同步。
二、修正时区
通常,我们使用date命令可以查看当前服务器时间以及设置当前服务器时间。例如,终端中我们输入date命令,默认会输出如下内容:
[root@localhost ~]# date
Thu May 28 03:45:30 EDT 2020
有时候系统默认显示时区不对,显示为EDT时区,正好和北京时间相差12个小时,这时候我们就需要修改一下系统的时区,将其修改为CST时区。
修改方法如下:
mv /etc/localtime /etc/localtime.bak #备份原文件
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #修改为
date
输出结果如下:
Thu May 28 15:46:59 CST 2020
这时候时间就显示为正常的北京时间了。
三、同步Linux服务器时间
在Linux系统中同步时间时,你需要了解ntpdate这个命令,默认该命令在主流的Linux发行版中都有安装,默认安装路径/usr/sbin/ntpdate。
以下操作皆在root帐号下进行,如果使用非root帐号,则需要该帐号为sudo用户能进行root权限的操作。
1、安装ntpddate
如果你的Linux系统中没有安装,你可以通过如下命令进行安装:
#centos,redhat系列
yum install ntpdate
#debian,ubuntu系列
apt install ntpdate
#archlinux系列
pacman -S ntpdate
2、通过ntpdate命令从时钟服务器同步
我们这里选用中国ntp服务器cn.pool.ntp.org来作为时钟同步的来源。为能正常访问到cn.pool.ntp.org,你的Linux系统应该能访问外网才行。
执行命令如下:
ntpdate cn.pool.ntp.org
3、配置crontab自动执行同步
如果每次手动执行,显然是很麻烦的。这里,我们使用crontab定时任务来定期执行ntpdate同步命令,例如我们每10分钟或一小时执行一次,可以通过以下方式实现。
首先在命令终端中输入crontab -e命令,然后输入如下命令保存即可。
crontab -e
开始编辑文件内容,输入定时执行命令:
#每10分钟执行一次
*/10 * * * * /usr/sbin/ntpdate cn.pool.ntp.org
或者
#每一个小时执行一次
0 * * * * /usr/sbin/ntpdate cn.pool.ntp.org
四、如何搭建时钟服务器(NTP Server)
1、安装NTP服务
一条命令即可安装,这里以centos7下安装为例。
yum install -y ntp ntpdate
2、配置NTP服务
ntp配置文件的路径是/etc/ntp.conf,修改改配置文件时先进行备份。
cp /etc/ntp.conf /etc/ntp.conf.bak #备份
vim /etc/ntp.conf #vim编辑文件
配置文件中,增加如下内容:
# Hosts on local network are less restricted.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
这个是用来允许192.168.1.*这个网段的服务器都可以使用该ntp服务器同步时间。这里可以根据你实际情况来设定网段。
同时添加指定一台内网服务器作为本地时钟服务器用于无法链接外网时,其它服务器同步时间是以该服务器为准。
server 192.168.1.2
整体配置后的文件,主要内容如下:
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
# Hosts on local network are less restricted.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#定义上游使用的ntp服务器
server cn.pool.ntp.org prefer
#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.1.2
fudge 192.168.1.2 stratum 10
#broadcast 192.168.1.255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 autokey # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
...
3、启动NTP服务
配置文件配置好保存后,我们可以通过以下命令来启动ntp服务。
systemctl start ntpd
服务启动后可以通过ntpstat命令来验证服务是否正常。
[root@localhost ~]# ntpstat
synchronised to NTP server (162.159.200.123) at stratum 4
time correct to within 227 ms
polling server every 1024 s
4、客户端同步时间
客户端同步时间的方式可以以第三部分中讲到的方式进行同步,即通过ntpdate命令同步。
ntpdate 192.168.1.2
可以将该命令作为crontab任务进行定时运行即可完成客户端机器的时间同步。
Ubuntu时间同步
dpkg-reconfigure tzdata
选择 Asia
选择 Shanghai或Chongqing
date -s
按照提示进行选择时区,
然后防止系统重启后时区改变
sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime
网上同步时间
- 安装ntpdate工具
apt-get install ntpdate
- 设置系统时间与网络时间同步
#cn.pool.ntp.org是位于中国的公共NTP服务器
ntpdate cn.pool.ntp.org
- 将系统时间写入硬件时间
hwclock –systohc
参考链接 :
还在为Linux服务器时间不同步发愁吗,看完你就知道怎么做了 https://mp.weixin.qq.com/s/dx1CrkZxovkuAPNMBWATAg
ubuntu设置系统时间与网络时间同步 :https://blog.csdn.net/qq_38157006/article/details/89952415