yuan-er

导航

 

配置时钟源

操作场景

安装云数据库GaussDB管理平台(TPOPS)需要保证各节点间的时钟源同步,现提供如下两种可供参考的时钟源配置指导。请用户依据实际情况进行配置,确保时间同步在30秒之内。

  • 监控、告警等服务,依赖服务器时间,请正确配置时间同步并确保时间服务器正常。
  • 时钟源的服务端指的是对外提供时间的主机,客户端指的是需要从服务端同步时间的主机。
  • 需要保持云数据库GaussDB管理平台(TPOPS)设置的时钟源和数据面节点设置的时钟源一致,且各节点间的时钟源也需要保证一致。
  • 如果云数据库GaussDB管理平台(TPOPS)设置的时钟源需要修改,可参考如何更新云数据库GaussDB管理平台(TPOPS)时钟源
  • 推荐使用Chrony(Chrony Time Daemon)来自动同步各主机上的系统时间,使云数据库GaussDB管理平台(TPOPS)各服务器之间的时间保持正确和一致。可参考使用Chrony配置时间同步进行配置。请注意,统信系统仅可使用Chrony配置时钟源。
  • 如果需使用NTP(Network Time Protocol)来自动同步各主机上的系统时间,使云数据库GaussDB管理平台(TPOPS)各服务器之间的时间保持正确和一致。可参考使用NTP配置时间同步进行配置。

前提条件

  • 配置时钟源前,确保您拥有所有机器的root用户权限。
  • 配置时钟源的服务端主机与客户端主机的网络需要互通,并且Chrony或者NTP服务端口不被防火墙拦截。
    • 若作为时钟源的服务端主机开启了防火墙,则需要参考检查防火墙章节保证Chrony或者NTP服务端口可以通信
    • 若作为时钟源的服务端主机开启了iptables,则需要执行以下命令为时钟同步服务添加规则:
      1. iptables -I INPUT -p udp --dport 323 -j ACCEPT
      2. iptables -I INPUT -p udp --dport 123 -j ACCEPT
      3. 保存iptables规则:

        iptables-save > /etc/sysconfig/iptables

使用Chrony配置时间同步

为了保证时间误差在要求范围以内,推荐使用Chrony(Chrony Time Daemon)来自动同步待配置时间同步的服务器节点的系统时间,可参考以下步骤进行配置。

  1. 登录到待配置时间同步的所有服务器节点。
  2. 键入“chrony”并连按两次“Tab”键观察,检查是否安装了chrony。

     

    • 若显示chronyc和chronyd,则表示已经安装了chrony。继续执行后续步骤。
    • 若未显示则表示当前未安装chrony,执行以下命令进行安装。
      • 如果软件包管理器为yum源,则执行以下命令,进行安装。

        yum install chrony -y

      • 如果软件包管理器为zypper源,则执行以下命令,进行安装。

        zypper install chrony

        如果回显“Choose from above solutions by number or cancel [1/2/3/c] (c):”,键入包含“install xx (with vendor change)”显示的Solution数字即可。

        如果回显“Continue? [y/n/...? shows all options] (y):”,键入“y”即可。

  3. 执行以下命令,修改服务端配置。

     

    该步骤修改的是服务端配置,请勿修改客户端。

    1. 使用vi命令编辑/etc/chrony.conf。

      vi /etc/chrony.conf

    2. 参照如下图示,添加“allow all”信息。

    3. 参照如下图示,删除“#”,取消“local stratum 10”所在行的注释。

    4. “Esc”键后执行:wq!命令,保存并退出。
    5. 执行以下命令,重启服务端chrony服务并设置开启自启动。

      systemctl enable chronyd

      systemctl restart chronyd

     

  4. 执行以下命令,修改客户端配置。

     

    该步骤修改的是客户端配置,请勿修改服务端。

    1. 使用vi命令编辑客户端的/etc/chrony.conf文件。

      vi /etc/chrony.conf

    2. 参照如下图示,添加“#”注释掉配置文件最前面原有的pool行,并新增“server 时间同步服务器域名/IP地址 iburst”

    3. “Esc”键后执行:wq!命令,保存并退出。
    4. 执行以下命令,重启客户端chrony服务并设置开机自启动。

      systemctl enable chronyd

      systemctl restart chronyd

     

  5. 执行以下命令,检查chrony同步状态。

     

    chronyc sources

    回显如下:
    210 Number of sources = 1
    MS Name/IP address         Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^* 172.213.144.12               10   6   377    34   -464ns[-2528ns] +/-   73us
     

    其中:

    • M:表示时钟源的模式,常见的符号包括:
      • ^:表示服务器。
      • =:表示对等机。
      • #:表示本地时钟。
    • S:表示时钟源的状态,常见的符号包括:
      • * :表示该服务器是当前选择用于同步的最佳服务器。
      • +:表示该服务器是候选服务器,可以用于同步。
      • - :表示该服务器是可选择的,但当前未被选中。
      • ? :表示该服务器的状态不确定,可能已失去连接或数据包未通过测试。
      • x :表示chronyd认为该服务器是虚假的,时间与大多数其他服务器不一致。
      • ~:表示该服务器的时间变化较大,可能不可靠。
    • Name/IP address:服务器的名称或IP地址。
    • Stratum:服务器的层级,数字越低表示时钟源距离系统时钟越近。
    • Poll:客户端与服务器之间进行时间同步的频率(单位:秒)。
    • Reach:服务器的可达性,反映过去几次时间同步请求的成功情况。
    • LastRx:最后一次时间同步成功的时间(单位:秒)。
    • Last sample:最后一次时间同步的时间偏移,包括偏移量和误差范围(单位:纳秒、微秒、毫秒或者秒)。

     

  6. (可选)最终检查方法。

     

    在客户端与服务端同时使用如下命令查询,如服务端与客户端时间保持一致说明时钟源配置成功。

    date

    回显如下:

    Fri Dec 15 07:39:58 UTC 2023
     

     

  7. (可选)手动同步方法。

     

    如果时间总是存在很大误差,可以使用以下命令手动更正时间。

    chronyc -a makestep

    回显如下说明执行成功:

    200 OK
     

     

使用NTP配置时间同步

为了保证时间误差在要求范围以内,推荐使用NTP(Network Time Protocol)来自动同步待配置时间同步的服务器节点的系统时间,可参考以下步骤进行配置。

通常使用系统自带的NTP服务可以同步时间。如果当前机器环境有稳定可靠的NTP服务器,则选它作为所有服务器的NTP源。

如果没有,则选固定的一台服务器,把它作为NTP源。

  1. 登录到待配置时间同步的所有服务器节点。
  2. 执行命令ntpq -p,检查是否安装了ntp。

     

    • 如果未回显“command not found”,则表示已经安装了ntp。继续执行后续步骤。
    • 如果回显“command not found”,则表示当前未安装ntp,执行以下命令进行安装。
      • 如果软件包管理器为yum源,则执行以下命令,进行安装。

        yum install ntp ntpdate -y

      • 如果软件包管理器为zypper源,则执行以下命令,进行安装。

        zypper install ntp

        如果回显“Choose from above solutions by number or cancel [1/2/3/c] (c):”,键入包含“install xx (with vendor change)”显示的Solution数字即可。

        如果回显“Continue? [y/n/...? shows all options] (y):”,键入“y”即可。

     

  3. 配置ntp.conf文件,配置前做好备份。

     

    【NTP服务器的搭建】

    在NTP服务端/etc/ntp.conf文件的最后,添加如下内容,其中:

    restrict 192.168.0.0 mask 255.255.0.0中:192.168.0.0需要替换为所配置NTP服务端IP地址对应的网段,255.255.0.0为服务端IP对应的netmask。

    [root@* /]# vi /etc/ntp.conf
    restrict default ignore
    restrict 127.0.0.1
    restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap
    
    driftfile /var/lib/ntp/drift
    pidfile /var/run/ntpd.pid
    #logfile /var/log/ntp.log
    
    # local clock
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
     

    【NTP客户端的搭建】

    在NTP客户端/etc/ntp.conf文件的最后,添加如下内容,其中:

    • restrict 192.168.0.0 mask 255.255.0.0中:192.168.0.0需要替换为所配置NTP客户端IP地址对应的网段,255.255.0.0为客户端IP对应的netmask。
    • server 192.168.*.* iburst minpoll 4 maxpoll 6中:192.168.*.*需要替换为上述所配置的NTP服务端的IP地址。
    [root@* /]# vi /etc/ntp.conf
    restrict 127.0.0.1
    restrict 192.168.0.0 mask 255.255.0.0
    
    driftfile /var/lib/ntp/drift
    pidfile /var/run/ntpd.pid
    #logfile /var/log/ntp.log
    
    # local clock
    server 192.168.*.* iburst
     

    参数解释:

    • restrict:用于指定IP地址的相关时间同步命令权限。

      restrict [客户端IP] mask [netmask_IP] [parameter]

      其中parameter包括ignore、nomodify、noquery、notrap和notrust等。

      • ignore:默认指拒绝所有类型的NTP同步。
      • nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
      • notrust:客户端除非通过认证,否则该客户端来源将被视为不信任子网。
      • noquery:不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询NTP服务器。
      • notrap:不提供trap远端登录:拒绝为匹配的主机提供模式6控制消息陷阱服务。陷阱服务是ntpdq控制消息协议的子系统,用于远程事件日志记录程序。
    • server:用于指定上层NTP源服务器。

      server [IP or hostname] [prefer]

      如果没有上层NTP源服务器,可以设置为127.127.1.0,即本机作为NTP源服务器。

     

  4. 修改NTP同步模式为慢调模式。

     

    • 如果为SUSE操作系统,执行以下操作修改NTP同步模式为慢调模式。
      1. 执行以下命令,打开/etc/sysconfig/ntp配置文件。

        vi /etc/sysconfig/ntp

      2. 修改参数NTPD_OPTIONS的值为“-g -x -u ntp:ntp”。
        NTPD_OPTIONS="-g -x -u ntp:ntp"
         
      3. “Esc”键后执行:wq!命令,保存并退出。
    • 如果为麒麟、统信、HCE或者BCLINUX操作系统,执行以下操作修改NTP同步模式为慢调模式。
      1. 执行以下命令,打开/etc/sysconfig/ntpd配置文件。

        vi /etc/sysconfig/ntpd

      2. 修改参数OPTIONS的值为“-g -x”。
        OPTIONS="-g -x"
         
      3. “Esc”键后执行:wq!命令,保存并退出。

     

  5. 重启NTP同步服务并设置开机自启动。

     

    systemctl enable ntpd

    systemctl restart ntpd

    执行systemctl restart ntpd,如果出现“Failed to restart ntpd.service: Unit ntpd.service not found.”的回显,请参照如下步骤配置。
    • 执行systemctl list-unit-files --type=service命令,检查服务列表里是否有ntpdate.service服务。
    • 如果有ntpdate.service服务,执行systemctl daemon-reload命令。如果没有ntpdate.service服务,请检查ntp是否安装成功。
    • 重启NTP同步服务。

     

  6. 检查NTP同步状态。

     

    ntpq -p

    回显如下:
    remote          refid       st  t  when  poll reach delay offset jitter
    ========================================================================
    LOCAL(0)        .LOCL.      10  l  589   64   0     0.000 0.000  0.000
    *192.168.*.*  10.10.10.1  2   u  18    64   377   1.591 0.249  0.054
     

    其中:

    • remote:表示使用的NTP服务器。
      • * :表示目前选择的NTP服务器。
      • LOCAL:表示本机。
      • x :表示已不再使用。
      • - :表示已不再使用。
      • +:表示良好的优先考虑的。
      • # :表示良好的但未使用的。
    • refid:远程NTP服务器使用的更高一级NTP服务器。INIT表示还在获取。
    • st:远程NTP服务器的Stratum(级别)。
    • when:最后一次同步到现在的时间(默认为秒,h表示小时,d表示天)。
    • poll:同步的频率(单位:秒)。
    • delay:从本机到远程NTP服务器的往返时间(单位:毫秒)。
    • offset:本机与远程NTP服务器的时间偏移量(单位:毫秒)。
    • jitter:本机与远程NTP服务器的时间偏移量平均偏差(单位:毫秒)。

     

  7. (可选)最终检查方法。

     

    在客户端与服务端同时使用如下命令查询,如服务端与客户端时间保持一致说明时钟源配置成功。

    date

    回显如下:

    Thu Sep 14 02:03:11 UTC 2023
     

     

  8. (可选)手动同步方法。

     

    如果时间总是有很大误差,可以使用以下命令手动订正时间。这个与自动同步服务是冲突的,需要先停掉NTP服务。

    systemctl stop ntpd

    ntpdate -u 192.168.*.*

    回显如下:

    18 Apr 14:54:20 ntpdate[108001]: adjust time server 192.168.*.* offset -0.000180 sec
     

    如果这个方法有效,则配置到系统的crontab下。

    crontab -e

    回显如下:

    * * * * * root /sbin/ntpdate -u 192.168.*.* 2>&1 1>>/tmp/ntpupdate.log
     

     

 
posted on 2025-06-20 14:41  数据库笔记  阅读(2)  评论(0)    收藏  举报