三节点混合部署,一台断网后集群不可用

【 TiDB 使用环境`】生产环境
【 TiDB 版本】v4.0.0
【遇到的问题】三节点混合部署,一台断网后集群不可用
【复现路径】无
【问题现象及影响】
集群包含三台服务器,每台服务器部署tidb、tikv、pd节点。

192.168.0.244 tidb+pd+tikv
192.168.0.247 tidb+pd+tikv
192.168.0.248 tidb+pd+tikv

20日0点开始247服务器断网,之后整个集群不可用,检查Grafana当时leader是248,region图表如下。
奇怪的是,downpeer和region数量一致,那是否就意味着都宕掉了。

检查副本是3副本

检查pd日志,247一直在向leader发送请求,244和248没有记录。

[2022/04/19 23:52:49.395 +08:00] [ERROR] [client.go:171] [“region sync with leader meet error”] [error=“rpc error: code = Unavailable desc = transport is closing”]
[2022/04/19 23:52:54.396 +08:00] [ERROR] [client.go:163] [“server failed to establish sync stream with leader”] [server=pd_crm247] [leader=pd_crm248] [error=“rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp 192.168.0.248:2379: i/o timeout"”]
[2022/04/19 23:52:55.421 +08:00] [ERROR] [client.go:163] [“server failed to establish sync stream with leader”] [server=pd_crm247] [leader=pd_crm248] [error=“rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp 192.168.0.248:2379: connect: network is unreachable"”]
[2022/04/19 23:52:56.210 +08:00] [ERROR] [etcdutil.go:108] [“load from etcd meet error”] [error=“context deadline exceeded”]

检查tidb日志,244和248中都有类似报错

[2022/04/19 23:53:25.370 +08:00] [ERROR] [domain.go:498] [“reload schema in loop failed”] [error=“[tikv:9002]TiKV server timeout”]

三个节点宕掉一个,集群应该可以正常提供访问才对。
【附件】
pd-244.log (2.9 KB) pd-247.log (12.0 MB) pd-248.log (1.5 KB)
tidb-244.log (260.3 KB) tidb-247.log (19.7 MB) tidb-248.log (90.4 KB)

4 个赞

大佬,试试pc-ctl member
看看pd的主有了吗

4 个赞

现在么?现在应该可以了,昨天联网之后,重启集群已经好了。现在要排查一下原因。

4 个赞

得先pd选出主,tikv才能用吧。集群不可用是多久不可用啊?

4 个赞

从0点到早上9点

4 个赞

:grinning: 这不科学啊,等pingcap的大佬回复了:sweat_smile:

4 个赞

是吧,就是不科学所以才发个帖子深究一下~

4 个赞

1台咋断网的,其他两台保证是通的吗

4 个赞

可以理解为拔网线了。其他两台是通的,从log日志上就能看出来。很明显的断网那台一直在给leader发送请求。

4 个赞

安装 clinic 了吗?抓一下从昨天 22:00 到今天早上 10:00 的详细监控和日志吧。

4 个赞

应该是没有安装的

4 个赞

刚注意到,不能这样算啊,你看下那个 number of region 的表达式,统计的是 leader count。默认是三副本的话,peer 总数应该是 number of region * 3,然后你在看 down peer 其实是 down 掉了一副本,对吧。

如果集群 不可用看下连接数还有 QPS 是不是掉底了。

4 个赞

有连接数,但是QPS直接没显示了

2 个赞

平时这段时间有业务访问吗 ? 要不你 clinic 捞一把完整的监控看一下吧。

除了这个现象外,不可用的表现是啥呢,通过这个监控是无法判断的。

2 个赞

会不会和这里有关?247失联之前,248的leader竟然是0,三副本不应该是均匀分布么?如果不均匀,那247失联之后,244上不一定有全部的副本吧。

2 个赞

1、平时这段时间没有业务,只有日结和备份。
2、:thinking:我现在给不出答案,刚交过来的,这边计划晚上拔网线重现一下。

2 个赞

248 机器没有 leader 也没有 region 的吗 ? :rofl:

坐等复现,到时候可以手动测试下集群是否不可用,以及不可用表现是什么。另外拿下监控,我也好奇了。:flushed:

2 个赞

248上有region,但是没有leader。
等我的好消息吧。
你说的监控怎么拿?什么监控?

2 个赞

用 clinic 基本上所有看板都能抓取上来,不用来回取了。
https://docs.pingcap.com/zh/tidb/v6.0/clinic-user-guide-for-tiup

2 个赞

:rofl:4.0版本不支持

2 个赞