网络时间服务ntp和chrony进行内外网时间同步

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

时间同步实现:ntp,chrony

  • ntp:将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms,项目官网:http://www.ntp.org
  • chrony:实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表和键盘的手动输入进行同步。还可以作为
    NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬件时间戳或硬件参考时钟,可实现亚微秒的精度

chrony

  • chrony 的优势:
  • 更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和率
    误差,对于并非全天 24 小时运行的虚拟计算机而言非常有用
  • 能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或致
    时钟频率发生变化的节能技术而言非常有用
  • 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用序
    造成影响
  • 在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供更
    好的稳定性
  • 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟

安装,配置

1
2
3
>yum -y install chrony
>systemctl enable chronyd
>systemctl start chronyd
  • 包:chrony
  • 两个主要程序:chronyd和chronyc
    chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟务器同步。它确定计算机增减时间的比率,并对此进行补偿
    chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它在
    chronyd实例控制的计算机上工作,也可在一台不同的远程计算机上工作
  • 服务unit 文件: /usr/lib/systemd/system/chronyd.service
  • 监听端口: 323/udp,123/udp
  • 配置文件: /etc/chrony.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
>cat /etc/chrony.conf 
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 172.22.50.54 iburst
server 0.centos.pool.ntp.org iburst #可用于时钟服务器
server 1.centos.pool.ntp.org iburst #iburst 选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包。
包间隔通常为2秒,可加快初始同步速度
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift #根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中,
会在重启后为系统时钟作出补偿
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).# 启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.# 指定一台主机、子网,或者网络以允许或拒绝访问本服务器
#allow 192.168.0.0/16 # cmdallow / cmddeny - 可以指定哪台主机可以通过chronyd使用控制命令
allow 172.22.50.0/16
# Serve time even if not synchronized to a time source.
local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

chronyc命令

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

img

同步时间,

客户端添加地址为172.22.50.5的时间服务器

1
server  172.22.50.54 iburst

img

服务器端添加可允许时间同步的主机ip

添加50.0网段所有主机

1
allow 172.22.50.0/16

开启local stratum 10

img

公共NTP服务器

  • pool.ntp.org:项目是一个提供可靠易用的NTP服务的虚拟集群
    cn.pool.ntp.org
    0-3.cn.pool.ntp.org
  • 阿里云公共NTP服务器
    Unix/linux类:ntp.aliyun.com,ntp1-7.aliyun.com
    windows类: time.pool.aliyun.com
  • 大学ntp服务
    s1a.time.edu.cn 北京邮电大学
    s1b.time.edu.cn 清华大学
    s1c.time.edu.cn 北京大学
  • 国家授时中心服务器
    210.72.145.44

时间工具

1
2
3
4
5
查看日期时间、时区及NTP状态:timedatectl
查看时区列表:timedatectl list-timezones
修改时区:timedatectl set-timezone Asia/Shanghai
修改日期时间:timedatectl set-time "2019-04-19 10:30:00"
开启NTPtimedatectl set-ntp true/flase