TiDB扩缩容时,SSH报错,提示访问不通,实际上SSH没有问题。

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】 测试环境
【概述】扩容新节点的时候,提示新节点SSH不通
【背景】集群采用root账号配置ssh互信,可以通过ssh远程执行命令,有ssh的sudo权限
【现象】扩容新节点的时候,提示新节点SSH不通,但是实际上,从管理机ssh到新节点是可以通的
【业务影响】 无法扩容新节点
【TiDB 版本】5.0.0
【附件】
Error: executor.ssh.execute_failed: Failed to execute command over SSH for ‘root@10.182.22.128:26387’ {ssh_stderr: , ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/usr/bin:/usr/sbin sudo -H bash -c “test -d /tmp || (mkdir -p /tmp && chown root:$(id -g -n root) /tmp)”}, cause: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

1 个赞

防火墙状态检查一下

1 个赞

检查一下扩容命令中加了--user root -p

1 个赞

没有开启防火墙。

没有。

使用:tiup cluster check tidb_sherlock --cluster 命令检查所有节点,新扩容的节点提示error,其他节点提示Done
image
使用ssh -i “/root/.ssh/id_rsa” root@10.182.22.128 -p 26387登陆error节点,并执行sudo命令,没有问题。

如果没有手动配置ssh互信的话,扩容命令中要加上--user root -p

1、首先,我是手工配置的ssh互信。

如果不配置互信是报另外一个错误的。如下:
Error: Failed to initialize TiDB environment on remote host ‘10.182.22.128’ (task.env_init.failed)
caused by: Failed to create ‘~/.ssh’ directory for user ‘root’
caused by: Failed to execute command over SSH for ‘root@10.182.22.128:26387’
caused by: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

2、我这个扩容命令,虽然报出来ssh这个错误。但是实际上,扩容已经成功了。
我担心这个错误对后续集群运维有影响,就使用check命令检查了一下,结果就一直是error

那现在的集群状态是什么样的呢

集群状态正常。如下:

只是检测上,一直报这个错误。执行任何命令,都会报这个错误。

检测这个node,会出现下面的警告:

我觉得问题不大,看样子确实是扩容成功了,建议通过监控观察一下,是否有异常。
check报错感觉是权限的问题,可以手动执行一下sodu -H那个命令

你可以手动ssh试一下

我从中控机,ssh过去,然后手工执行这个命令,没有问题。

现在的问题有两个:
1、为什么我每次执行任何操作,都会报这个错误?是扩缩容检查的问题?
2、图中提示我
Regions are not fully healthy: 14740 pending-peer
Please fix unhealthy regions before other operations.
这个隐患不排除,后续可能会有其他问题。这个可能也是跟ssh配置不正确有关系。

3、我的ssh本身是用root账号配置的,集群中已有的节点都是root账号配置的ssh,没有任何一个用户使用tidb

从中控机跳过去,执行这个命令:


没有返回错误。

之前说了,手工执行ssh,都没问题。
sudo权限也有,但是就是这个报错一直在。

虽然看起来集群状态正常,但是这个是一个隐患,需要帮忙解决一下,新增加的节点都是这样的。

跟老节点进行了对比,/etc/ssh/sshd_config、~/.ssh/authorized_keys都一样的,但是就是一直报错。老节点是第一次初始化集群的时候就部署的,所以没有这个问题。

什么权限问题?authorized文件权限都是600了。

配置文件使用的用户是什么

1.可以通过 --user root -i 来指定密钥的路径,或者升级一下tiup看看
2.这个提示不一定是扩容之后出现的,具体要看看监控。Pending 表示 Follower 或 Learner 的 raft log 与 Leader 有较大差距,可能是在迁移数据造成的。
3.tidb一直推荐的是使用tidb用户来部署集群和管理集群,用tiup部署的时候会自动创建tidb用户的。现在你直接用root用户来做,不知道会不会有什么影响