时间服务器

_____egon新书来袭请看:https://egonlin.com/book.html

一、简单介绍:

在linux中,有些服务必须依靠准确的时间,才能够在运行的时候不出差错,例如DNS,LVS,HTTPS等,都需要后台的服务器之间保持时间的同步。而Centos系统中自带的有安装对应的同步时间的服务。centos7中默认安装的是chrony,而Centos6相比在时间服务有所不同,使用了ntp(Network Time Protocol,网络时间协议,服务器时间同步的一种协议)服务来同步时间,而在Centos7上则使用的是chrony服务来同步时间,相较与ntp服务。它可以更快且更准确地同步系统时钟,最大程度的减少时间和频率误差,详细地说,chrony服务有如下几点优势:

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

 

Chrony包括两个核心组件:

1、chronyd:一个后台运行的守护进程,用于调整内核中运行的系统时钟与NTP服务器同步。它确定服务器增减时间的比率,并对此进行调整补偿;

2、chronyc:提供用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的服务器上工作,也可以在一台不同的远程服务器上工作。

 

监听端口

323/udp,123/udp

二、演示环境:

IP

主机名

操作系统

服务器角色

描述

时间同步方式

192.168.70.3

ntp-server

CentOS   7.9

内网NTP Server

1、向阿里云提供的公网NTP服务器同步时间

2、作为内网NTP Server,内网中的其它服务器向其同步时间

chronyd服务平滑同步

192.168.70.4

ntp-client1

CentOS   7.9

内网NTP Client

向内网NTP Server 192.168.70.3同步时间

chronyd服务平滑同步

192.168.70.5

ntp-client2

CentOS   7.9

内网NTP Client

向内网NTP Server 192.168.70.3同步时间

crontab   + ntpdate强制同步

备注:使用chronyd服务平滑同步时间的方式要优于crontab + ntpdate,因为ntpdate同步时间会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响,例如:sleeptimer等,且chronyd服务可以在修正时间的过程中同时修正CPU tick

三、192.168.70.3配置内网NTP Server

1、关闭firewalld防火墙

 

2、关闭SELinux

 

3、安装chrony

[root@admin scripts]# yum -y install chrony

 

4、配置chrony服务端

[root@admin scripts]# mv /etc/chrony.conf /etc/chrony.conf.bak
[root@admin scripts]# cat > /etc/chrony.conf << EOF
# 指定上层NTP服务器为阿里云提供的公网NTP服务器

server ntp1.aliyun.com iburst minpoll 4 maxpoll 10

server ntp2.aliyun.com iburst minpoll 4 maxpoll 10

server ntp3.aliyun.com iburst minpoll 4 maxpoll 10

server ntp4.aliyun.com iburst minpoll 4 maxpoll 10

server ntp5.aliyun.com iburst minpoll 4 maxpoll 10

server ntp6.aliyun.com iburst minpoll 4 maxpoll 10

server ntp7.aliyun.com iburst minpoll 4 maxpoll 10

# 记录系统时钟获得/丢失时间的速率至drift文件中

driftfile /var/lib/chrony/drift

# 如果系统时钟的偏移量大于10秒,则允许在前三次更新中步进调整系统时钟

makestep 10 3

# 启用RTC(实时时钟)的内核同步

rtcsync

# 只允许192.168.70.0网段的客户端进行时间同步,
# allow 192.168.70.0/24

# 允许所有
allow 0.0.0.0/0

# 阿里云提供的公网NTP服务器不可用时,采用本地时间作为同步标准

local stratum 10

# 指定包含NTP验证密钥的文件

keyfile /etc/chrony.keys

# 指定存放日志文件的目录

logdir /var/log/chrony

# 让chronyd在选择源时忽略源的层级

stratumweight 0.05

# 禁用客户端访问的日志记录

noclientlog

# 如果时钟调整大于0.5秒,则向系统日志发送消息

logchange 0.5

# 更多配置,请使用命令man chrony.conf查看

EOF

 

5、启动chronyd服务:

systemctl restart chronyd.service # 最好重启,这样无论原来是否启动都可以重新加载配置
systemctl enable chronyd.service
systemctl status chronyd.service

 

四 192.168.70.4配置内网NTP Client(平滑同步,建议)

1、关闭firewalld防火墙

 

2、关闭SELinux

 

3、安装chrony

[root@mon1 ~]# yum -y install chrony

 

4、配置chrony客户端

[root@mon1 ~]# mv /etc/chrony.conf /etc/chrony.conf.bak
[root@mon1 ~]# cat > /etc/chrony.conf << EOF
# 指定ntp的服务端,可以使用ip,如果已经添加过hosts解析,所以也可以使用主机名
server 192.168.70.3 iburst driftfile /var/lib/chrony/drift makestep 10 3 rtcsync local stratum 10 keyfile /etc/chrony.keys logdir /var/log/chrony stratumweight 0.05 noclientlog logchange 0.5 EOF

 

5、启动chronyd服务:

systemctl restart chronyd.service # 最好重启,这样无论原来是否启动都可以重新加载配置
systemctl enable chronyd.service
systemctl status chronyd.service

 

五 配置内网NTP Client(平滑强制同步,不建议,了解即可)

1、关闭firewalld防火墙

2、关闭SELinux

3、安装ntpdate:

yum -y install ntpdate

 

4、编写定时任务,实现每3分钟向192.168.1.146同步一次时间,并将系统时间设置为硬件时间

# crontab -e --> */3 * * * * /usr/sbin/ntpdate admin &> /dev/null;/usr/sbin/hwclock -w

# crontab -l

# systemctl enable crond.service

5、测试定时任务:将时间调慢,观察服务器时间是否会自动同步

六 常用命令

#设置时区
timedatectl #查看系统的当前的时区
                Local time: 日 2019-05-26 10:42:00 CST
                Universal time: 日 2019-05-26 02:42:00 UTC
                RTC time: 日 2019-05-26 02:42:00
                Time zone: Asia/Shanghai (CST, +0800)
                NTP enabled: yes
                NTP synchronized: no
                RTC in local TZ: no
                DST active: n/a
如果当前时区不是亚洲/上海时区,可以用如下命令设置
timedatectl set-timezone Asia/Shanghai

# 查看应用状态
ss -tunlp | grep chronyd

# 查看时间同步源:
chronyc sources -v

# 查看时间同步源状态:
chronyc sourcestats -v

# 设置硬件时间,硬件时间默认为UTC:
timedatectl set-local-rtc 1

# 启用NTP时间同步:
timedatectl set-ntp yes

# 校准时间服务器:
chronyc tracking


# 备注:可直接输入命令chronyc进入交互式模式,常用指令说明:
help:查看完整的命令帮助列表
tracking:显示系统时间信息
activity:检查多少NTP源在线/离线
add server:手动添加一台新的NTP服务器
delete:手动移除NTP服务器或对等服务器
accheck:检查NTP访问是否对特定主机可用
clients:在客户端报告已访问到的服务器
说明:chronyd和chronyc的详细使用方法可以使用命令# man chronyd和# man chronyc查看

 

posted @ 2021-04-25 11:09  linhaifeng  阅读(614)  评论(0)    收藏  举报