Linux(CentOS)同步服务器时间之~ntpd

在这里插入图片描述

NTPNetwork Time Protocol(网络时间协议)的缩写,它是一种用于在计算机系统之间同步时间的协议。NTP 允许网络中的设备通过与一个或多个时间服务器进行通信,来校正自身的系统时钟,确保所有设备上的时间保持高度一致。

ntpd 则是 NTP 协议的一个具体实现,它是 NTP 守护进程(daemon)的名字。ntpd 在系统后台持续运行,负责与配置好的时间服务器进行周期性的通信,根据服务器返回的时间信息,逐步、平滑地调整本机的系统时间,以达到与时间服务器时间同步的目的。

ntpd 的优势在于它能连续工作,不断微调系统时钟,即使系统时钟与标准时间有较大偏差,也能逐渐调整至准确,同时还能跟踪并补偿时钟的自然漂移。

确认是否已安装ntpd
systemctl status ntpd

如果ntpd服务已安装并正在运行,Active: active (running),输出内容如下:

● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-09-20 10:00:00 UTC; 1h ago
     Docs: man:ntpd(8)
 Main PID: 12345 (ntpd)
   CGroup: /system.slice/ntpd.service
           └─12345 /usr/sbin/ntpd -u ntp:ntp -g

如果ntpd服务安装但是未启动,Active: inactive (dead),输出内容如下:

● ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

如果ntpd服务未安装,你将看到类似以下输出:

Unit ntpd.service could not be found.

请注意,上述命令需要以root用户或具有sudo权限的用户身份运行。

安装ntpd

首先,确保您的CentOS系统已安装了NTP服务。如果未安装,可以通过以下命令安装:

yum –y install ntpd
配置ntpd

安装完ntpd后,需要编辑其配置文件 /etc/ntp.conf 来指定时间服务器及其它设置。默认情况下,NTP会尝试连接到一些公共的NTP服务器,但推荐您添加一些离您物理位置近的或信任的NTP服务器以提高同步效率和安全性。

使用文本编辑器(如vi)打开配置文件:

vi /etc/ntp.conf

在文件中,您可以添加或修改服务器条目。例如,添加阿里云的NTP服务器:

server ntp.aliyun.com iburst

如果您希望使用一个池地址,可以使用如下的中国地区NTP池:

server cn.pool.ntp.org iburst
启动ntpd服务、查看状态
启动ntpd服务
systemctl start ntpd
设置ntpd开机自启
systemctl enable ntpd
查看ntpd状态
systemctl status ntpd
重启ntpd服务
systemctl restart ntpd
停止ntpd服务
systemctl stop ntpd
禁用ntpd服务
systemctl disable ntpd
内网环境下的ntpd服务配置

对于不能直接访问互联网的CentOS服务器集群,要保持集群内所有服务器的时间一致,可以采取以下步骤手动同步某台机器的时间,然后以此为参考源同步其他机器:

准备工作
  1. 选择参考服务器:从集群中选择一台机器作为时间参考服务器(假设为Server A),确保这台服务器的时间最为准确或已通过其他方式(如手动设置或使用便携式时钟设备)校准过。
  2. 安装NTP服务:在所有服务器上安装NTP服务,包括参考服务器和目标同步的服务器。即使它们不能直接访问互联网,安装NTP服务仍然是必要的,因为我们将使用它来进行内部时间同步。
配置参考服务器
vi /etc/ntp.conf

注释掉所有外部时间服务器的条目,并添加一行声明自身为本地NTP服务器(如果要同步的服务器较多,考虑使用广播或组播模式):

【内容】在server部分添加一下部分,并注释掉server 0 ~ n

restrict default ignore     # 禁止所有外部主机同步
server 127.127.1.0         # 本地时钟参考
fudge 127.127.1.0 stratum 10 # 设置本地时钟的层级
命令解析
  1. restrict default ignore: 这行配置指令限制了默认情况下所有远程主机对本NTP服务器的访问权限,使其无法使用这台服务器作为时间源进行同步。换句话说,它阻止了除明确允许的来源之外的所有NTP查询和响应,有助于增强安全性,确保只有被授权的或本地的请求得到处理。
  2. server 127.127.1.0: 这行配置定义了一个本地时钟作为时间源。127.127.1.0 是一个特殊的IP地址,属于NTP的“伪服务器”地址范围,用来表示本地参考时钟。这里指定本地系统时钟作为时间服务器,意味着NTP服务将使用本机的系统时钟作为时间同步的依据。通常,这是在没有外部网络连接或想要使用本地硬件时钟(如通过GPS接收器校准)作为时间源时采用的配置。
  3. fudge 127.127.1.0 stratum 10: fudge 命令用来调整或修正时间源的行为。在这个例子中,它设置了使用本地时钟(127.127.1.0)作为时间源时的“层级(stratum)”为10。在NTP中,层级表示时间源的可靠性和距离原始时间源的远近,层级1是最准确的(通常是原子钟或GPS接收器直接连接的服务器),层级数值越大表示距离原始时间源越远或可靠性越低。设置为10表明这是一个非常不可靠的时间源,但这在内部网络作为临时解决方案或明确知道本机时间已经准确时是有意义的,可以避免此本地时钟被错误地用作其他NTP客户端的上级时间源。
配置其他服务器
vi /etc/ntp.conf

在其他的集群服务器上(假设为Server B、Server C等),编辑它们的NTP配置文件 /etc/ntp.conf,指向参考服务器(Server A)的IP地址:

【内容】在server部分添加如下语句,将server指向主节点。

server <Server_A_IP> iburst

请将上面的 <同步节点IP> 替换成真实的同步节点IP地址,如果有多个同步节点,请重复执行上面的操作

重启NTP服务
systemctl restart ntpd
强制同步

然而,如果你确实需要快速调整时间,通常的做法是暂停 ntpd 服务,使用 ntpdate 工具进行一次性强制同步,然后重新启动 ntpd 服务。

  1. 停止 ntpd 服务:

    systemctl stop ntpd
    
  2. 使用 ntpdate 强制同步:

    首先,确保安装了 ntpdate(如果系统中没有的话),然后执行以下命令,替换 <Server_A_IP> 为你的NTP服务器地址:

    ntpdate <Server_A_IP>
    
  3. 启动或重启 ntpd 服务:

    systemctl start ntpd
    

注意:直接的强制同步可能会导致依赖时间连续性的应用程序出现问题,因此在执行这类操作时应谨慎考虑其影响。理想情况下,应优化 ntpd 配置以适应不同的网络环境和时间偏差情况,或考虑使用 chrony 等更现代化的工具,它们在启动时和大偏移量处理上提供了更好的性能。

验证

在所有服务器上,使用 ntpq -p 命令检查时间同步状态,确认所有服务器的时间都已经与参考服务器保持一致。

注意事项
  • 确保所有服务器的硬件时钟(BIOS时间)也与系统时间同步,必要时使用 hwclock -w 命令。
  • 考虑到网络延迟,集群内的时间同步可能不如直接与互联网上的NTP服务器同步精确,但足以满足多数内部应用的需求。
  • 如果集群较大,考虑设置多级时间服务器结构,即一部分服务器同步于外部时间源,其余服务器再同步于这些内部服务器,以减轻主参考服务器的压力并提高可靠性。
备注

hwclock -w 是一个在类Unix系统(如Linux)中使用的命令,用于将系统时间(即操作系统维护的时间)写入硬件时钟(RTC,实时时钟)。硬件时钟是一个由主板上的小型电池供电的时钟,即使系统关机也会继续运行,以保持时间的连续性。

当你执行 hwclock -w 命令时,会发生以下过程:

  1. 系统首先读取当前的操作系统时间,这个时间通常是根据系统内核以及NTP等时间同步服务调整后的准确时间。
  2. 然后,该命令会把读取到的系统时间转换为硬件时钟需要的格式。
  3. 最后,转换后的时间会被写入到硬件时钟中,从而更新硬件时钟的时间,确保即使系统重启后,时间仍然保持最近一次更新时的准确性。
  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值