螺狮壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习05(搭建DC的ntp服务器)

对于一些业务系统独立运行的企业,这种时间的不一致性不会带来什么问题,然而,对于我们这样一个有着多种相互关联的业务系统的供电企业而言,却是致命的。一方面是国网公司“SG186”工程要求,同一业务系统在上下级公司的纵向上要做到贯通,各种业务系统在公司内部的横向上要做到集成。所以各业务系统传递的信息,在时间上必须保持高度一致,并准确地与北京时间同步。另一方面是一些自动化系统,如电能量采集系统、调度自动化系统、配网自动化系统等,这些系统中的计费、维护、管理等功能,对时间的精确有着更苛刻的要求。

基于以上考虑,我们在公司新的数据中心建设过程中,部署了两台多端口东方电子 IDC510A NTP网络时间服务器,该服务器使用GPS信号作为时间源,通过NTP协议对网络内的所有服务器和网络设备的时间进行同步。

NTPNetwork Time Protocol,网络时间协议)是网络中用于时间同步的标准协议。它采用Client/Server模式,NTP客户端借助NTP协议,从NTP服务器获取准确的时间。NTP服务器的时间通常来源于一个权威的时间源,如原子钟、GPS时钟、Internet上的时间服务器等。NTP不仅校正时间,而且能够持续跟踪时间的变化,并自动进行调节,从而使采用NTP协议的客户端能从网络中获取可靠和精确的时间同步。

下面是数据中心中各系统下配置NTP的过程,现整理出来与大家一起分享。Linux系统中使用chrony进行时间同步的方法,包括chrony的基本概念、配置文件详解、实验步骤,以及如何手动调整时间、同步错误和调试NTP。通过实例展示了NTP同步状态分析和常见问题解决策略。

图5- 1

NTPNetwork Time Protocol)客户端是一种能够同步计算机时钟到NTP服务器的软件。它的主要目的是保证网络中所有计算机的系统时间保持一致,这对于网络服务的稳定运行至关重要。无论是简单的文件共享还是复杂的数据库操作,统一的时间基准都是确保数据一致性和减少冲突的关键。NTP客户端的作用不仅限于时间同步,它还能确保网络服务如邮件服务、DNS服务、日志记录等工作的准确性。在分布式系统和数据中心,时间同步的精确性直接影响到数据的一致性和可靠性。此外,NTP客户端还能帮助用户处理不同时区问题,为地理分散的团队提供统一的时间参考。

NTP客户端在现代IT架构中的应用场景十分广泛。在企业环境中,确保所有员工的工作站和服务器时间一致,对于业务流程、审计日志以及故障排查等都非常重要。在互联网服务提供商和大型数据中心,NTP客户端的使用可以确保大量服务器和网络设备的时间同步,这对于维护全球服务的稳定性和可靠性至关重要。安装和配置NTP客户端是实现精确时间同步的关键步骤。本章将详细探讨如何安装NTP客户端,并对配置文件进行深入解析。同时,本章还将介绍如何进行基本和高级配置实践,以确保NTP客户端能够满足不同网络环境下的时间同步需求。

chrony 是由守护进程 chronyd以及命令行工具chronyc组成的。

图5- 2

[root@ntp /]# netstat -nulp | grep chro

udp        0      0 0.0.0.0:123             0.0.0.0:*                           457/chronyd

udp        0      0 127.0.0.1:323           0.0.0.0:*                           457/chronyd

udp6       0      0 ::1:323                 :::*

chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间,默认的配置文件是 /etc/chrony.confchronyc 通过 323 端口与 chronyd 交互,可监控 chronyd 的性能并在运行时更改各种操作参数,chronyc 通过下面的方式访问 chronyd(默认情况下,chronyc 先通过 Unix socket 访问 chronyd,默认的 socket 文件是 /var/run/chrony/chronyd.sock, 如果失败-常见的原因是使用非 root 用户运行 chronyc ),将尝试通过 127.0.0.1 访问 chronydchrony默认情况下,不允许任何客户端访问,这意味着chronyd主要作为NTP客户端运行。当使用allow指令时(allow all允许所有<#如果写成0.0.0.0/24实验不通过>allow 192.168.59.0/24 允许网段),chronyd将既是其服务器的客户端,又是其他客户端的服务器。

chronyd常用命令说明

查看时间同步源状态:               chronyc sourcestats -v【-v是列出详细,可以不要】

强制同步时间:                     chronyc makestep【这个命令会立即尝试将系统时间设置为 NTP 服务器的当前时间。请注意,这可能会导致系统时间突然跳跃,这可能会影响正在运行的服务或应用程序。】

启用NTP时间同步:                  timedatectl set-ntp yes【默认是启用的,timedatectl命令可以查看状态】

查看客户端连接情况【服务端执行】:  chronyc clients

列出ntp状态详细:                  timedatectl

下面timedatectl说明中有详细介绍
设置硬件时间

硬件时间默认为UTC:     timedatectl set-local-rtc 1/0

设置硬件时钟为本地时间:timedatectl set-local-rtc 1

设置硬件时钟为UTC时间:timedatectl set-local-rtc 0

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

开启 NTP:              timedatectl set-ntp true/flase

查询和调试 NTP:        chronyc tracking查询和调试 NTP(网络时间协议)客户端的状态

hwclock -w用于将系统时间写入到硬件时钟(也称为RTC,即实时时钟)中。

在Linux系统中,硬件时钟是一个独立的时钟,它可以在系统关闭时继续运行,并且可以在系统启动时用来初始化系统时间。

实验步骤

1)创建ntp服务器群

再创建一台容器,满足一主一备两台ntp服务器

docker run -itd -e “container=docker” --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup -v /wutool:/wutool -v /mnt:/mnt -v /cts8etc/yum.repos.d:/etc/yum.repos.d  -p  123:123  --net  wifi --ip 192.168.0.224 --name ntp2 centos /usr/sbin/init

序号

服务器名称

IP

备注

1

ntp

192.168.0.222

2

ntp2

192.168.0.224

测试ntp和在ntp2连通性,ntp2上安装chrony()

2)修改配置文件

vi /etc/chrony.conf

修改内容如下(192.168.0.1破笔记本充当的硬件授时服务器)

#pool pool.ntp.org iburst

# Use public servers from the pool.ntp.org project.

# Please consider joining the pool (https://www.pool.ntp.org/join.html).

#pool pool.ntp.org iburst

pool 192.168.0.1

# Allow NTP client access from local network.

#allow 192.168.0.0/16

allow all #如果写成0.0.0.0/24实验不通过

# Serve time even if not synchronized to a time source.

#local stratum 10

local stratum 10

图5- 3

3)检测同步chrony的操作

# systemctl enable chronyd.service

# systemctl restart chronyd.service

# systemctl status chronyd.service

设置时区重庆

timedatectl set-timezone Asia/Chongqing   

date

Tue Oct  1 17:49:01 CST 2024

mv /etc/localtime /etc/localtime.bak

ln -s /usr/share/zoneinfo/Asia/Chongqing /etc/localtime

timedatectl set-timezone Asia/Chongqing

重启同步查看

systemctl restart chronyd

chronyc sourcestats -v

图5- 4

4)差错测试

手动修改服务器1时间,用服务器2去同步错误时间。

测试之前先临时关闭两台服务器selinuxfirewalld,功能测试通过后再针对实际情况开启。

setenforce 0

systemctl stop firewalld

设置差错

timedatectl set-ntp false

timedatectl set-time "2023-12-12 00:00:00"

hwclock -w #用于将系统时间写入到硬件时钟

timedatectl set-ntp true

date #查看时间

timedatectl #查看详细时间

图5- 5

进入服务器2,从服务器1同步错误时间

chronyc makestep     #强制同步

hwclock -w          #用于将系统时间写入到硬件时钟(这个必须有,否则date查询和timedatectl查询不一致,时间并没改)

date                   #查看时间

timedatectl           #查看详细时间

备用1:检查同步源状态

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

备用2:查询和调试 NTP

chronyc tracking     #查询和调试 NTP

图5- 6

从这段 chronyc tracking 的输出中,我们可以分析以下关于 NTP(网络时间协议)同步状态的信息:

Reference ID : C0A8C87B ( ),这里不知说明原因,是空的!!这是 NTP 服务器的标识符,通常对应于服务器的 IP 地址。

这表示 NTP 服务器的层次。Stratum 1 是最高级的服务器,直接与原子钟相连。Stratum 11 表示这个服务器从其他服务器获取时间,且距离原始时间源已经相当远。

Ref time (UTC) : Mon Dec 11 16:09:09 2023

这是 NTP 服务器的当前参考时间,以协调世界时(UTC)表示。

System time : 0.000000 seconds fast of NTP time
这表明系统时间比 NTP 服务器时间快了约 0 秒。

Last offset : +0.00000000 seconds
上一次时间同步时,系统时间与 NTP 服务器时间的偏差是负的,即系统时间略慢于 NTP 时间。

RMS offset : 0.0000000 seconds
RMS
(均方根)偏移量表示系统时间与 NTP 服务器时间的平均差异。这个值非常大,表明系统时间和 NTP 服务器时间之间存在显著的差异。

Frequency : 0.000 ppm fast
这表示系统时钟频率比 NTP 服务器时钟频率快了 0.000 百万分之一(ppm)。

Residual freq : -0.000 ppm
剩余频率误差,表示在最近一次时间同步后,系统时钟与 NTP 服务器时钟之间的频率差异。

Skew : 0.000 ppm
Skew
表示系统时钟与 NTP 服务器时钟之间的频率偏差率。

Root delay : 0.00000000 seconds
从系统到 NTP 时间源的总延迟。

Root dispersion : 0.0000000 seconds
NTP
服务器的不确定度。

Update interval : 0.0 seconds
系统从 NTP 服务器获取更新的时间间隔。

Leap status : Normal
Leap
秒状态。Normal 表示没有 leap 秒事件正在进行或计划。

从上述数据中,我们可以看到系统时间与 NTP 服务器时间之间存在较大的偏差(约 1010 秒),并且 RMS 偏移量也非常大。这可能是由于网络问题、NTP 服务器配置问题或系统时钟问题导致的。为了解决这个问题,你可能需要检查网络连接、NTP 服务器的状态,以及系统时钟设置。同时,RMS 偏移量这么大也可能是因为刚开始同步,还未稳定,所以多等待一段时间并观察数据的变化也是很有帮助的。

进入服务器1,查看clients

chronyc clients

没有客户端,结果是空的。如果有的话,应该这样

图5- 7

使用windows客户端同步时间

图5- 8

再次进入服务器1,查看clients

图5- 9

宿主机访问过一次,ntp就记录了一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值