如何编译部署ntp实例chrony?

RHEL-Like

1 基础知识

1.1 NTP

1.1.1 NTP的概念

– NTP是Network Time Protocol的英文缩写
– NTP中文范围为网络时间协议
– NTP透过网络将计算机时间同步为世界统一时间(UTC)
注:UTC专业叫法是时间基准(Timebase),是世界最精确的时间尺度

1.1.2 NTP的作用

– 精准的时间戳可以减少维护和降低故障排查的复杂度
– 精准的时间戳可确定依赖性检查需要重建的代码
– 精准的时间戳可支持关联分布式通讯事件
– 精准的时间戳可以解决时间敏感交易的纠纷
– 精准的时间戳可作为法医分析和刑事诉讼的证据
– 精准的时间戳是调试、安全和审核的基础
– 精准的时间戳是网络设备的唯一参考框架

1.2 Chrony

1.2.1 chrony的介绍

– chrony是网络时间协议(NTP)的具体实现之一

1.2.2 chrony的功能

– chrony可以将系统时钟与NTP服务器、参考时钟(例如 GPS接收器)、手表和键盘等
– chrony可充当NTPv4(RFC5905)服务器并向网络中的其他计算机提供时间服务

1.2.3 chrony的特点

– chrony被设计得适应能力极强,包括间歇性网络连接、拥堵等
-chrony两台计算机之间的因特网同步可达毫秒以内的典型精度
– chrony两台计算机之间的以太网同步可达数十微妙的典型精度
– chrony使用硬件时间戳记或参考时钟,可达亚微妙级的精度

1.2.4 chrony的架构

– chronyd,chrony的守护进程
– chronyc,chrony的命令程序,用于监视chronyd性能并更改各种操作参数

1.2.5 支持的系统

– Linux
– FreeBSD
– NetBSD
– macOS
– Solaris
– 其他类Linux与Unix系统

2 最佳实践

2.1 系统环境

OS = CentOS 7.3 x86_64
IP Address = any
Host Name = any

2.2 安装前的准备

2.2.1 设置正确的时区

timedatectl set-timezone Asia/Shanghai

2.2.2 安装GnuTLS合适的版本(可选)

如何编译安装gnutls-devel 3.7?


需要注意的是,
– 以上仅适用于开启NTS协议时需求,否则不用安装
– NTS安装默认启用状态,不会提示此依赖关系

2.2.3 安装其他依赖包(可选)

yum install -y pkgconfig nettle-devel nss-devel libtomcrypt-devel libseccomp-devel libedit asciidoc

官方建议安装的依赖包,但测试过可以不安装,另外请注意以下包无法通过测试,个人不建议安装,只列举,

#yum install -y libcap-devel

2.2.4 卸载旧版本

yum remove -y chrony

2.2.5 准备编译环境

yum -y install gcc make

2.2.6 准备安装包

cd ~/
wget https://download.tuxfamily.org/chrony/chrony-4.0.tar.gz
tar -xf chrony-4.0.tar.gz

2.3 安装部署

2.3.1 预编译安装包

cd ~/chrony-4.0
./configure --prefix=/usr

2.3.2 编译软件包

cd ~/chrony-4.0
make
make docs

2.3.3 安装软件包

cd ~/chrony-4.0
make install
make install-docs

安装完毕后,你需要运行以下命令确认安装符合要求,

chronyd -v

可见如下显示,

chronyd (chrony) version 4.0 (+CMDMON +NTP +REFCLOCK +RTC -PRIVDROP -SCFILTER -SIGND +ASYNCDNS +NTS +SECHASH +IPV6 -DEBUG)

注:本章默认要求开启“NTP”和“NTS”协议的支持,方便后面章节的配置。

2.3.4 部署配置范例文件

cd ~/chrony-4.0
cp examples/chrony.conf.example2 /etc/chrony.conf

2.3.5 部署服务控制脚本

cd ~/chrony-4.0
cp examples/chrony*.service /usr/lib/systemd/system/

可使用如下命令检查脚本部署,

ls /usr/lib/systemd/system/chrony*.service

可见如下显示,

/usr/lib/systemd/system/chronyd.service  /usr/lib/systemd/system/chrony-wait.service

然后,你可以使用如下命令启动并设置服务自启动,

systemctl start chronyd.service
systemctl enable chronyd.service

启动服务后,请使用如下命令检查服务的状态,

systemctl status chronyd.service

2.3.6 定制自己的服务

vim /etc/chrony.conf

配置修改如下,

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
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3

noclientlog
logchange 0.5
logdir /var/log/chrony

– 参数“server”声明NTP时间源服务器,“iburst”选项以4-8个请求同时更新
– 参数“stratumweight”声明时间源的层级,范例“0”表示忽略时间源的层级
– 参数“driftfile”声明记录时间漂移比率文件,重启服务时系统时钟根据记录值进行时间补偿。
– 参数“rtcsync”声明启用RTC(实时时钟)的内核同步
– 参数“makestep”声明如系统时钟偏移量大于10秒,参数3限制只在前三个时钟中更新
– 参数“noclientlog”声明不记录客户端访问(如果记录可使用“chronyc clients”命令查看)
– 参数“logchange”声明调整系统日志的系统时钟阀值
– 参数“logdir”声明日志的目录(目录不存在,则自创建)
配置修改后,你需要使用如下命令重启服务使配置生效,

systemctl restart chronyd.service

然后,我们 可以通过如下命令检查服务的倾听,

netstat -anp | grep chronyd

可见如下显示,

udp        0      0 127.0.0.1:323           0.0.0.0:*                           9660/chronyd
udp        0      0 10.168.0.80:46484       193.182.111.142:123     ESTABLISHED 9660/chronyd
udp        0      0 10.168.0.80:57780       202.112.31.197:123      ESTABLISHED 9660/chronyd
udp6       0      0 ::1:323                 :::*                                9660/chronyd
unix  2      [ ]         DGRAM                    96275    9660/chronyd

2.4 NTP公共服务端的配置方法

如果你有需要,请参阅以下章节配置NTP公共服务端,

如何部署ntp实例chrony公共服务端?

2.5 NTS公共服务端的配置方法

如果你有需要,请参阅以下章节配置NTS公共服务端,

如何部署nts实例chrony公共服务端?

===================

安装教程
—————–
https://chrony.tuxfamily.org/doc/4.0/installation.html

官方首页
——————
https://chrony.tuxfamily.org/

chrony的配置
—————-
https://chrony.tuxfamily.org/doc/2.1/manual.html#Configuration-file
https://chrony.tuxfamily.org/documentation.html

系统时钟
———–
https://baike.baidu.com/item/%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%92%9F/3736888?fr=aladdin

参考时钟
———–
http://www.ntp.org/ntpfaq/NTP-s-algo.htm#Q-REFCLK

NTP的简介
————
http://support.ntp.org/bin/view/Main/WebHome

NTS的介绍
————-
https://tools.ietf.org/html/rfc8915
https://linux.cn/article-12860-1.html

错误解决
————-
https://access.redhat.com/solutions/3552561
https://access.redhat.com/discussions/4394471

没有评论

发表回复

PHP
如何编译安装php-fpm的模块?

1 前言 一个问题,一篇文章,一出故事。 笔者最新部署了一个PHP-FPM的环境,本章将整理如何部署 …

PHP
如何基于Oracle Linux 9.x编译安装PHP-FPM 8.x?

1 前言 一个问题,一篇文章,一出故事。 PHP-FPM可以跟Nginx配合使Nginx环境具备运行 …

Tomcat
如何编译安装Tomcat的Native库?

1 基础知识 Tomcat的Native库允许Tomcat使用OpenSSL作为JSSE的替代品来支 …