侧边栏壁纸
博主头像
运维匠-运维工程师知识分享经验和最佳实践博主等级

生活百般滋味,人生需要笑对

  • 累计撰写 60 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

时间同步服务

运维匠
2022-09-07 / 0 评论 / 0 点赞 / 10 阅读 / 8579 字
温馨提示:
本文最后更新于 2024-07-15,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

时间同步服务

多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等, 利用NTP(Network Time Protocol) 协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一

时间同步服务

时间同步软件

  • ntpdate
  • chrony

ntp:

将系统时钟和世界协调时钟UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以
达到1-50ms
项目官网:

http://www.ntp.org

范例:ubuntu同步时间

  • 安装ntpdate
apt install ntpdate
  • 同步时间
# ntp.aliyun.com阿里云时间同步服务器地址
ntpdate ntp.aliyun.com

扩展:

阿里云公共NTP服务器
Unix/linux类:ntp.aliyun.com,ntp1-7.aliyun.com
windows类: time.pool.aliyun.com
腾讯公共NTP
time1-5.cloud.tencent.com
大学ntp服务
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
国家授时中心服务器:210.72.145.44
美国标准技术院: time.nist.gov

注意:CentOS 8上已经没有ntpdate命令,因此该种时间同步方式不建议使用

chrony:
实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表
和键盘的手动输入进行同步。还可以作为NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机
提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算
机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。
通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬
件时间戳或硬件参考时钟,可实现亚微秒的精度

chrony

chrony介绍

chrony 的优势:

  • 更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,对于并非全天24 小时运行的虚拟计算机而言非常有用

  • 能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节
    能技术而言非常有用

  • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响

  • 在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性

  • 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟
    chrony官网:

https://chrony.tuxfamily.org
chrony官方文档:https://chrony.tuxfamily.org/documentation.html

chrony 文件组成

包:chrony
两个主要程序:chronyd和chronyc

  • chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算
    机增减时间的比率,并对此进行补偿
  • chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计
    算机上工作,也可在一台不同的远程计算机上工作
    服务unit 文件: /usr/lib/systemd/system/chronyd.service
    监听端口: 服务端: 123/udp,客户端: 323/udp
    配置文件: /etc/chrony.conf

配置文件chrony.conf

官网文档:

https://chrony.tuxfamily.org/doc/3.5/chrony.conf.html 
server #可用于时钟服务器,iburst 选项当服务器可达时,发送一个八个数据包而不是通常的一个数据
包。 包间隔通常为2秒,可加快初始同步速度
pool #该指令的语法与server 指令的语法相似,不同之处在于它用于指定NTP服务器池而不是单个
NTP服务器。池名称应解析为随时间可能会变化的多个地址
driftfile #根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中,会在重启后为系统时钟作
出补偿
rtcsync #启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)
allow / deny #指定一台主机、子网,或者网络以允许或拒绝访问本服务器
cmdallow / cmddeny #可以指定哪台主机可以通过chronyd使用控制命令
bindcmdaddress #允许chronyd监听哪个接口来接收由chronyc执行的命令
makestep # 通常chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定
情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在
调整期大于某个阀值时调整系统时钟
local stratum 10 #即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它
客户端

NTP 客户端工具

chronyc 可以运行在交互式和非交互式两种方式,支持以下子命令

help 命令可以查看更多chronyc的交互命令
accheck 检查是否对特定主机可访问当前服务器
activity 显示有多少NTP源在线/离线
sources [-v] 显示当前时间源的同步信息
sourcestats [-v]显示当前时间源的同步统计信息
add server 手动添加一台新的NTP服务器
clients 报告已访问本服务器的客户端列表
delete 手动移除NTP服务器或对等服务器
settime 手动设置守护进程时间
tracking 显示系统时间信息

时间工具

  • timedatectl 时间和时区管理

查看日期时间和时区以及NTP状态

root@ubuntu2004:~# timedatectl
               Local time: Sat 2022-09-17 11:49:00 UTC
           Universal time: Sat 2022-09-17 11:49:00 UTC
                 RTC time: Sat 2022-09-17 11:49:00    
                Time zone: Etc/UTC (UTC, +0000)       
System clock synchronized: yes                        
              NTP service: active                     
          RTC in local TZ: no                         
root@ubuntu2004:~# 

查看时区列表

root@ubuntu2004:~# 
root@ubuntu2004:~# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta
.........
.........

修改时区

# 修改时区亚洲上海
root@ubuntu2004:~# timedatectl set-timezone Asia/Shanghai
root@ubuntu2004:~# 

修改时区方式2

#修改时区
root@ubuntu2004:~# rm -f /etc/localtime
root@ubuntu2004:~# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#修改日期时间:
timedatectl set-time "2017-01-23 10:30:00"
#开启NTP:
timedatectl set-ntp true/false

修改时间

#修改日期时间:
timedatectl set-time "2017-01-23 10:30:00"  

#需要修改时间为24小时,可以修改/etc/default/locale,默认没有LC_TIME这个变量,在文件中增加一行:
LC_TIME=en_DK.UTF-8  

#开启NTP:
timedatectl set-ntp true/false

实战:实现私有的时间服务器

1663418081035

  • 安装chrony
# centos系统检查是否安装
rpm -q chrony

# 安装
yum install chrony

# 启动服务  
systemctl start chronyd  

# ubuntu系统上安装,ubuntu系统上安装完成后已经启动  
apt install chrony
  • 服务器端配置
# IP:192.168.179.146作为时间同步服务器端,192.168.179.146的时间与阿里云时间同步器服务器同步
[root@centos7 ~]# hostname -I
192.168.179.146 
[root@centos7 ~]#   

# 修改192.168.179.146配置文件  /etc/chrony.conf
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst

1663419170404

allow 0.0.0.0/0 #加此行,指定允许同步的网段

1663419297813

删除此行注释,当互联网无法连接,仍然可以为客户端提供时间同步服务

1663419361157

重启chrony服务

systemctl restart chronyd

服务启动后会打开端口123/udp

1663419502330

显示当前的时间源同步信息

[root@centos7 ~]# chronyc sources -V
210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    37    58   -365us[-3079us] +/-   40ms
^? 120.25.115.20                 2   7   110   123   -773us[-3488us] +/-   26ms
[root@centos7 ~]# 

# *号表示当前同步的时间源地址

客户端配置

# 客户端
root@ubuntu2004:~# hostname -I
192.168.179.147 
root@ubuntu2004:~# 

#ubuntu系统配置文件与centos目录不一样
root@ubuntu2004:~# vim /etc/chrony/chrony.conf

1663420018409

重启chrony服务

root@ubuntu2004:~# systemctl restart chronyd

确认同步成功

root@ubuntu2004:~# chronyc sources -V
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 192.168.179.146               3   6    17    44    +64us[ +218us] +/-   38ms
root@ubuntu2004:~# 

#  ^* 192.168.179.146表示已经成功与192.168.179.146时间同步
0

评论区