【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】obshell
【 使用版本 】ob版本4.3.5,obshell版本4.3.0.1
【问题描述】obshell报错:[ERROR] Known error: xxx:2886 is not cluster agent.,但是查看集群已经是 cluster agent
【复现路径】问题出现前后相关操作
【附件及日志】
为什么使用/data/observer/bin/obshell tenant show不报错,但是查看某个具体的租户就报错了/data/observer/bin/obshell tenant show sys
问题在于 obshell 接管 ob 集群时,有一个节点(zone3 上的)身份转换失败了,具体原因可通过 ./bin/obshell task show 查看
这个状态是FAILED是什么意思,该如何修复
然后再通过 /data/observer/bin/obshell task show -i 20178835166028861 查看具体的任务日志
可以将三个节点的 obshell 日志都打包发送一下么,obshell 日志目录是 /data/observer/log_obshell
另外,可以通过 obshell task retry -i $id 重试这个任务
error: [GET /api/v1/tenant/sys, client=, traceId=24047e7359e089c3, duration=0, status=500,data=, error={Code:1010, Message:Known error: 10.168.206.220:2886 is not cluster agent.}]
2025-07-31T15:54:52.338 ERROR [3696540] [F000000000000000] [coordinator/coordinator.go:179] try to be maintainer failed fields: error=“update maintainer failed”
2025-07-31T15:54:52.338 ERROR [3696540] [F000000000000000] [runtime/asm_arm64.s:1172] coordinator reconcile failed fields: error=“update maintainer failed”
2025-07-31T15:49:30.693 ERROR [2435138] [F000000000000000] [task/task.go:304] task 3 Synchronize agent from cluster execute log: ERROR: get current maintain dag failed: &{false 2025-07-31 15:49:32.59848021 +0800 CST 0 401 3d754568df277c7d {Code:10008, Message:Verification failed: auth expired}}
2025-07-31T15:49:30.693 WARN [2435138] [F000000000000000] [executor/executor.go:137] task 3 execute error fields:, error=“get current maintain dag failed: &{false 2025-07-31 15:49:32.59848021 +0800 CST 0 401 3d754568df277c7d {Code:10008, Message:Verification failed: auth expired}}”
有这几个错误
找到原因了, 刚刚有位社区用户也遇到了同样的问题,原因在于验证信息过期了。
obshell 中,http 请求校验信息的默认过期时间是1s。
可以通过 clockdiff 查看一下各主机间的时钟差。将时钟进行同步之后,在通过 task retry 通过任务即可。
这是因为正常情况下,只有 CLUSTER AGENT 的 obshell 节点能够连接 ob 集群,所以有的操作会对节点的身份提前做判断,但是有部分操作没有对节点身份做判断(比如您使用到的 tenant show sys),所以能够直接继续执行。