OceanBase 相关产品之间,在时间上都有一些隐含的联系,因此要求 OceanBase 产品的所有服务器的物理时间要保持同步,误差尽量控制在 100 ms 以内,甚至更小。因此集群的多个节点以及 OCP 节点的时钟必须配置时钟同步服务 NTP 或者 chrony,保证所有节点的时钟偏差在 100 ms 以内。本文介绍如何为集群内的多台机器配置 NTP 时钟源。如果您在单机安装 OceanBase 数据库,则无需设置。
说明
OceanBase 集群中的服务器时间必须保持一致,否则会导致 OceanBase 集群无法启动,运行时也会出现故障。物理机与时钟服务器的误差在 50 ms 以下可认为时钟是同步状态,OceanBase 集群最大容忍误差不能超过 100 ms。当超过 100 ms 时,会出现无主情况。恢复时钟同步后。重启 OceanBase 集群, 可以恢复正常。如果您已配置 NTP 时钟同步,则无需重新配置。
前提条件
配置 NTP 时钟源前,确保您拥有所有机器的 root 用户权限。
操作步骤
按以下步骤配置 NTP 时钟同步。
说明
通常使用 Linux 自带的 NTP 服务可以同步时间。如果当前机器环境有稳定可靠的 NTP 服务器,则选它作为所有服务器的 NTP 源。如果没有,则选固定的一台服务器,把它作为 NTP 源。
在每台机器上通过 YUM 包管理器安装 NTP。
[root@xxx /]# yum install ntp ntpdate -y配置
ntp.conf文件。[root@xxx /]# vi /etc/ntp.conf restrict default ignore 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 127.127.1.0 fudge 127.127.1.0 stratum 10 server 192.168.XX.XX iburst minpoll 4 maxpoll 6参数解释:
restrict用于指定 IP 的相关时间同步命令权限。restrict [IP] mask [netmask_IP] [parameter]parameter包括ignore、nomodify、noquery、notrap和notrust等。ignore默认指拒绝所有类型的 NTP 同步。server用于指定上层 NTP 源服务器。server [IP or hostname] [prefer]如果没有上层 NTP 源服务器,可以设置为 127.127.1.0,即本机作为 NTP 源服务器。
重启 NTP 同步服务。
[root@xxx /]# systemctl restart ntpd [root@xxx /]# systemctl status ntpd检查 NTP 同步状态。
说明
如果 NTP 服务刚启动时,需要等一会再执行 ntpstat 命令。
[root@xxx /]# ntpstat [root@xxx /]# ntpq 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.XX.XX 10.10.10.1 2 u 18 64 377 1.591 0.249 0.054命令 ntpq 结果参数释义:
remote:表示使用的 NTP 服务器,*表示目前选择的 NTP 服务器。LOCAL表示本机。x表示已不再使用。-表示已不再使用。+良好的优先考虑的。#良好的但未使用的。refid:远程 NTP 服务器使用的更高一级 NTP 服务器。INIT表示还在获取。st:远程 NTP 服务器的 Stratum (级别)。when:最后一次同步到现在的时间(默认为秒,h表示小时,d表示天)。poll:同步的频率,单位:秒。delay:从本机到远程 NTP 服务器的往返时间(单位毫秒)。offset:本机与远程 NTP 服务器的时间偏移量(单位毫秒)。jitter:本机与远程 NTP 服务器的时间偏移量平均偏差(单位毫秒)。
最终检查方法。
最终同步延时检查以下面为准:
[root@xxx /]# clockdiff 192.168.XX.XX .................................................. host=192.168.XX.XX rtt=1(0)ms/1ms delta=0ms/0ms Sat Apr 18 14:41:40 2020(可选)手动同步方法。
如果时间总是有很大误差,可以使用
ntpdate命令手动订正时间。这个跟自动同步服务是冲突的,需要先停掉 NTP 服务。[root@xxx /]# systemctl stop ntpd [root@xxx /]# ntpdate -u 192.168.XX.XX 18 Apr 14:54:20 ntpdate[108001]: adjust time server 192.168.XX.XX offset -0.000180 sec如果这个方法有效,就配置到系统的 crontab 下。
[root@xxx /]# crontab -e * * * * * /sbin/ntpdate -u 192.168.XX.XX 2>&1 1>>/tmp/ntpupdate.log(可选)防火墙规则。
标准化的环境是要关闭防火墙的,如果服务器环境非要开启防火墙,可以参照下面规则操作。
[root@xxx /]# iptables --A INPUT --p udp --i eth0 --s 192.168.1.0/16 --dport 123 --j ACCEPT [root@xxx /]# systemctl restart ntpd




