本文为您介绍 OCP 添加主机时报错:Clock-diff failed 的处理方法。
适用版本
OceanBase 云平台(OceanBase Cloud Platform,OCP)V3.3.X,V4.x 版本。
问题描述
将主机添加到 OCP 的主机列表中时在 "Pre check for create host" 这一步失败报错: c.o.ocp.core.task.util.ClockDiff Clock-diff failed.
手工去 OCP 容器内执行 clockdiff 命令也一直失败报错:xxx.xxx.xxx.xxx is down
问题原因
将 OBServer 主机添加到 OCP 中去时,在 OCP 容器内会以clockdiff <OBServer服务器ip> 命令会失败报错:
xxx.xxx.xxx.xxx is down 问题的原因是因为链路两端的服务器上配置的 iptables 规则使 ICMP 报文不再进行处理或传递。

而 clockdiff 命令不加-o选项时,用的是 ICMP 报文的时间戳;如果加了参数 -o 或者 -o1,就是用 IP 报文的时间戳,区别在于 -o 使用了 3 个时间戳,-o1 使用了 4 个时间戳。 测试发现,在同样的环境中,当 clockdiff 命令加上 -o 选项时,该命令可以正常返回结果。
解决方法
- 首先确认从 OCP 容器内可以正常访问该 IP 地址(可以通过 ping 或者 ssh 命令来进行测试):
$ ping <observer ip> $ ssh <observer ip> - 确认网络连通的情况下,查看链路两端服务器上的防火墙以及SELinux是否关闭:
$ systemctl status firewalld $ sestatus - 目前 OCP 中使用的 clockdiff 命令默认不带
-o选项,即使用的是 ICMP 报文的时间戳,因此需要去检查一下链路两端的 iptables 规则表中有没有禁止 ICMP 报文:iptables -L。 如果禁止了 ping/ICMP 报文,需要手工清空相关的 iptables 规则。