NTP服务导致的dubbo服务停止后无法摘除节点

Stella981
• 阅读 585

2020-06-30 晚上 22:40左右出现大量的dubbo接口超时。

原因是NTP服务出现时间差,与真实的北京时间差了正好8小时,开始出问题的时间段,NTP服务由VM虚拟机切换到PVE虚拟机,但是切换机器之后没有调整好时间,导致所有机器节点的时间全部出现问题。

2020-06-30 22:45左右,将PVE虚拟机NTP服务回切至VM虚拟机,NTP服务正常;

NTP异常后,应用服务器同步时间出错,容器应用调用异常、超时,重启应用,生成新节点,但因新节点未同步到正确时间,ZK又注册到原来旧节点,即ZK中同时存在新旧不同节点,导致提供服务异常。

此时此刻,所有进行了时间同步的机器节点全部出现DUBBO接口调用失败,zk的时间偏差会导致节点数据无法被正确的删除,很多旧的节点也出现了类似的问题。

可以参考类似问题的文章: https://blog.csdn.net/liujunzxcv/article/details/91670951

这种情况要解决有两个办法。

方案一: 手动去ZooKeeper删除旧节点的数据,这个非常繁琐。

方案二: 搭建一套新的ZooKeeper,把dubbo注册中心的ZooKeeper的地址的域名映射到这个新集群ip,然后重启所有应用,这种方法简单粗暴。

先是采用的方案一,发现要删除的节点太多了,操作极其麻烦,最后转而使用方案二。

2020-06-30 23:35 ,搭建新ZK;

2020-06-30 23:40 ,重启所有应用,问题恢复。

总结:

NTP服务所代表的所有机器节点的时间一致性看起来是一个非常简单但是很容易忽略的东西,重要性可想而知。面对NTP服务异常导致的RPC调用异常,以为服务、消费者节点的万能重启大法可以解决,这反而加大了问题的严重性。

(第二天在查询应用日志的时候更麻烦,因为时间的不一致,相差了八个小时,日志的时间已经是错乱了,在一个时空混乱的情况下处理问题真的是很容易跑偏)

题外话:

以前搭建CockroachDB数据库集群的时候也遇到过类似的问题,参考我的博客: https://my.oschina.net/110NotFound/blog/3042036

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
NTP时间同步
如果服务器的时间出现混乱,将导致很多意想不到的问题。使用NTP,可以使服务器获取正确的时间,从而避免出现问题。NTP是NetworkTimeProtocol的简写,意为“网络时间协议”,是一个用TCP/IP协议实现的时间同步协议。Ubuntu在每次启动都会自动到ntp.ubuntu.com去做时间同步。但是,由于服务器一般不会频繁启动,所以还是不
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
CDH集群安装配置(三)
集群时间同步(主节点)1\.查看是否安装ntp服务,如果没有安装rpmqa|grepntpd查看命令yuminstallntp安装命令2\.修改配置vi/etc/ntp.conf去掉这个注释,将地址改成网段地址restrict10.228.86.252
Stella981 Stella981
3年前
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法参考文章:(1)Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.codeprj.com%2Fblo
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这