相关推荐recommended
实现【Linux--NTP 时间同步服务搭建】
作者:mmseoamin日期:2023-12-21

实现【Linux--NTP 时间同步服务搭建】

    • 🔻 前言
    • 🔻 一、NTP 校时
      • 🔰 1.1 NTP 服务校时与 ntpdate 校时的区别
      • 🔰 1.2 NTP 校时服务搭建
        • 🔰 1.2.1 确认 ntp 的安装
        • 🔰 1.2.2 配置 ntp 服务
        • 🔰 1.2.3 启动 ntp 服务、查看状态
        • 🔰 1.2.4 ntp 服务设置开机自启动
        • 🔰 1.2.5 解决设置 ntp 开机自启动失败
        • 🔰 1.2.6 查看 ntp 服务器与上层 ntp 连通性
        • 🔰 1.2.8 查看 ntp 服务器与上层 ntp 的状态
        • 🔰 1.3 分节点测试时间同步
        • 🔻 总结—温故知新

          实现【Linux--NTP 时间同步服务搭建】,在这里插入图片描述,第1张

          👈【上一篇】 💖The Begin💖 点点关注,收藏不迷路💖 【下一篇】👉

          🔻 前言

          当应用系统走向多节点、高并发、高可用部署需求时,不同节点时间不一致,不仅仅会导致业务报错,还会出现将硬件时间直接频繁同步导致硬件故障

          为解决以上问题-----引入NTP 校时服务。

          🔻 一、NTP 校时

          🔰 1.1 NTP 服务校时与 ntpdate 校时的区别

          ntp 服务校时不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非 ntpdate 立即同步,在生产环境中慎用 ntpdate,ntp 与 ntpdate不可同时运行。

          简单来讲 NTP 服务本身是为了搭建校时服务器对外提供授时服务的。但是这个服务本

          身有个功能,就是可以从这个服务工作的机器,配置一个外网的时间服务器,将本机的时间

          校时成网络时间。自己时间不对,咋给别人校时?

          🔰 1.2 NTP 校时服务搭建

          主节点:本身可以上网,配置校时服务的时候配置上游国家授时中心服务地址,并对内网提供授时服务—这里环境均采用内网,手动设置主节点为标准时间,分节点同步

          分节点:本身属于内网运行,上游地址是主节点。

          🔰 1.2.1 确认 ntp 的安装
          ###1、这里已安装了ntp和ntpdate,为了方便演示,先移除
          [root@pg-node01 ~]# rpm -qa | grep ntp
          fontpackages-filesystem-1.44-8.el7.noarch
          ntp-4.2.6p5-29.el7_8.2.x86_64
          ntpdate-4.2.6p5-29.el7_8.2.x86_64
          [root@pg-node01 ~]#
          ###2、先卸载移除ntp 与 ntpdate
          yum -y remove ntp-4.2.6p5-29.el7_8.2.x86_64
          yum -y remove ntpdate-4.2.6p5-29.el7_8.2.x86_64
          ###3、重新安装 ntp
          yum -y install ntpdate
          yum -y install ntp
          ###4、安装检查
          [root@pg-node01 ~]# rpm -qa | grep ntp
          fontpackages-filesystem-1.44-8.el7.noarch
          ntp-4.2.6p5-29.el7_8.2.x86_64
          ntpdate-4.2.6p5-29.el7_8.2.x86_64
          [root@pg-node01 ~]# 
          
          🔰 1.2.2 配置 ntp 服务

          1、选择主节点pg-node01,修改其/etc/ntp.conf。

          210.72.145.44 (国家授时中心服务器IP地址)。

          ### 在 server 部分添加如下内容,并注释掉 server 0 ~ n
          server 210.72.145.44 prefer
          server 127.127.1.0 iburst
          

          实现【Linux--NTP 时间同步服务搭建】,在这里插入图片描述,第2张

          📖 说明:

          server 210.72.145.44 prefer 这是国家新的授时服务器地址,prefer 是优先使用的意思,还有更多,可以直接百度,国内的NTP Server基本都属于科研教育机构所有,普通社会组织发布的NTP Server并不多。

          server 127.127.1.0 iburst 指定本地NTP服务地址,这个 ip 不要改,意思是如果网络授时服务器源访问不到了则直接使用本机作为授时服务器源。

          2、主节点以外的节点pg-node02,继续修改/etc/ntp.conf。

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

          server 主节点 ip 地址
          如:
          server 192.168.181.11
          

          实现【Linux--NTP 时间同步服务搭建】,在这里插入图片描述,第3张

          3、操作系统防火墙开放 123 端口

          由于 NTP 服务需要使用到 UDP 端口号 123,所以当系统的防火墙(Iptables)启动的情况下,必须开放 UDP 端口号 123。

          ###开放 `UDP` 端口号 `123`
          firewall-cmd --zone=public --add-port=123/udp --permanent
          ###查看所有已经开放的端口
          #临时端口(默认为空)
          firewall-cmd --list-ports
          #永久开放端口(默认为空)
          [root@pg-node01 ~]# firewall-cmd --list-ports --permanent
          123/udp
          [root@pg-node01 ~]# 
          
          🔰 1.2.3 启动 ntp 服务、查看状态
          ### 启动 ntp 服务
          [root@pg-node01 ~]# systemctl start ntpd.service
          ### ntp 服务管理命令
          #查看 ntpd 服务状态
          service ntpd status
          #启动 ntpd 服务
          service ntpd start 
          #停止 ntpd 服务
          service ntpd stop 
          #重启 ntpd 服务
          service ntpd restart 
          
          🔰 1.2.4 ntp 服务设置开机自启动

          检查 ntp 服务是否开机启动,将其设置为开机启动。

          ### 启动服务
          systemctl start ntpd.service 
          ### 停止服务
          systemctl stop ntpd.service 
          ### 将服务设置为自启动
          systemctl enable ntpd.service 
          ### 将服务自启动关闭
          systemctl disable ntpd.service
          
          🔰 1.2.5 解决设置 ntp 开机自启动失败

          重启后用 service ntpd status 命令查看服务是否启动,从给出的信息可知 ntp 已被设置为开机启动,但是开机启动并未成功。

          [root@pg-node02 ~]# service ntpd status
          Redirecting to /bin/systemctl status ntpd.service
          ● ntpd.service - Network Time Service
             Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
             Active: inactive (dead)
          [root@pg-node02 ~]# 
          

          通过命令 chkconfig ntpd on 设置开机自启动,发现会将此命令转发到 systemctl enable ntpd.service 命令,也就是说最好使用后面的命令设置开机自启动。

          [root@pg-node02 ~]# chkconfig ntpd on
          Note: Forwarding request to 'systemctl enable ntpd.service'.
          [root@pg-node02 ~]# 
          

          原因是系统上安装了一个与 NTP 相冲突的工具:chrony。使用 systemctl is-enabled chronyd 来查看, chrony 被设置为enabled。

          [root@pg-node02 ~]# systemctl is-enabled chronyd
          enabled
          [root@pg-node02 ~]# 
          

          将 chronyd 设置为 disable 后,再重启即可实现NTP自启动。

          [root@pg-node02 ~]# systemctl disable chronyd
          Removed symlink /etc/systemd/system/multi-user.target.wants/chronyd.service.
          [root@pg-node02 ~]# 
          
          🔰 1.2.6 查看 ntp 服务器与上层 ntp 连通性
          ### 查看命令
          ntpstat
          
          • pg-node01

            实现【Linux--NTP 时间同步服务搭建】,在这里插入图片描述,第4张

            • pg-node02

              实现【Linux--NTP 时间同步服务搭建】,在这里插入图片描述,第5张

              ntpstat 命令查看时间同步状态,这个一般需要5-10分钟后才能成功连接和同步。所以,服务器启动后需要稍等下。

              等一段时间之后,再次使用 ntpstat 命令查看状态,就会变成如下正常结果:

              [root@pg-node02 ~]# ntpstat
              synchronised to NTP server (192.168.181.11) at stratum 7
                 time correct to within 21 ms
                 polling server every 64 s
              [root@pg-node02 ~]# 
              

              实现【Linux--NTP 时间同步服务搭建】,在这里插入图片描述,第6张

              🔰 1.2.8 查看 ntp 服务器与上层 ntp 的状态
              ### 命令
              ntpq -p
              
              • pg-node01
                [root@pg-node01 ~]#  ntpq -p
                     remote           refid      st t when poll reach   delay   offset  jitter
                ==============================================================================
                 210.72.145.44   .INIT.          16 u    - 1024    0    0.000    0.000   0.000
                *LOCAL(0)        .LOCL.           5 l   23   64  377    0.000    0.000   0.000
                [root@pg-node01 ~]#
                
                • pg-node02
                  [root@pg-node02 ~]# ntpq -p
                       remote           refid      st t when poll reach   delay   offset  jitter
                  ==============================================================================
                   pg-node01       LOCAL(0)         6 u   26   64    1    2.346  -679.68   0.000
                  [root@pg-node02 ~]# 
                  

                  📖 说明:

                  remote:本机和上层 ntp 的 ip 或主机名,“+”表示优先,“*”表示次优先

                  refid:参考上一层 ntp 主机地址

                  st:stratum 阶层

                  when:多少秒前曾经同步过时间

                  poll:下次更新在多少秒后

                  reach:已经向上层 ntp 服务器要求更新的次数

                  delay:网络延迟

                  offset:时间补偿

                  jitter:系统时间与 bios 时间差

                  🔰 1.3 分节点测试时间同步

                  分节点不能上网,属于内网服务器从主节点获取时间,本身支持对内网提供授时服务,

                  但是不再对内网提供服务,仅仅满足自己的时间与主节点保持一致。