OB4.2.1.4-租户Leader节点时钟落后80s-集群却能正常运行?

【 使用环境 】测试环境

【 OB】

【 使用版本 】4.2.1.4

【问题描述】

1、架构:1-1-1
zone1:10.186.64.161 --》(RS Leader)
zone2:10.186.64.162
zone3:10.186.64.163
时钟源:10.186.64.160 (即,OCP节点)

2、问题描述:手动将RS Leader 和 业务租户Leader节点 (同一个节点)的系统时间调慢80s,进行写入数据的测试和集群状态观察,发现集群存在84s的读写异常,然后集群自动恢复正常(全程没有干预使其恢复时间同步,即RS Leader节点一直比标准时间落后80s),全程操作记录在文档《OB4.X-RS Leader节点时钟延迟(落后)80s测试》。

3、 查看rootservice.log存在错误码
-4638 :RS切主或RS服务重启中
-4038 :无主

4、问题:
4.1 根据官网资料:OceanBase分布式数据库-海量数据 笔笔算数
如果您计划部署分布式 OceanBase 集群,需要保证集群内各机器的时间同步,否则集群无法启动,服务在运行时也会出现异常。OceanBase 集群允许的时钟偏差不能超过 2s。当超过 2s 时,会出现无主情况。恢复时钟同步后,重启 OceanBase 集群,可以恢复正常。

4.2 实际测试结果:即使leader节点比标准时间和其他节点落后80s,集群发生84s的读写异常之后,自动恢复正常(全程没有干预使其恢复时间同步,即RS Leader节点一直比标准时间落后80s),表现是否符合预期?

4.3 RS Leader 或普通租户Leader 好像没有切到其他节点,查看选举记录最终还是另外2个时间正常的节点投票给了时间落后80s的节点 10.186.64.161 ,此处表现是否符合预期?具体依据是什么呢?

【复现路径】
详细步骤见附件 《OB4.X-RS Leader节点时钟延迟(落后)80s测试》
1.持续往业务租户mysql_ob插入数据
2.将RS Leader节点操作系统时间直接调慢80s
3.观察集群状态和插入数据的状态,业务租户写入存在约84s失败,select失败
4.集群恢复正常,租户可读写

OB4.X-RS Leader节点时钟延迟(落后)80s测试.pdf (3.9 MB)

或许时间的值可能发生偏差,但时间变化的速率在地球上都是相通的。

按照现状理解,OBServer节点时间存在分钟级偏差集群却依然将此节点选为Leader节点,表现上集群是正常的,实际可能有很大的隐患,在1-1-1架构情况下,如果另一个OBServer节点异常,租户直接进入无主状态,生产环境上可能带来严重的问题,有社区老师可以关注下这个问题么

1 个赞