vCenter 6.x Web客户端无法登录排错记录

发布于 2021-01-08  321 次阅读


前段时间前辈X桑公司的vCenter用着用着突然无法登录,因此找我帮忙排错。花了点工夫定位到问题并解决完毕之后,按照惯例写篇文章记录一下,作为以后的排错思路参考。

1.问题描述

出现无法登录问题的vCenter(VCSA版)所在的服务器群集运行的是VMware vSphere 6.5 U2版本的虚拟化环境,群集中所有服务器与业务在近期均未重启过。

通过H5版或Flash版的Web客户端都不能正常登录账号进行管理,提示内容为“User name and password are required(需要用户名与密码)”。

X桑表示vCenter可以重启。能修则修,不能修就乘这个机会安装一个6.7 U3版本的vCenter以告别Flash客户端。

因为集群中没有配置vDS(分布式交换机)等需要迁移配置文件的业务,因此安装新的vCenter,稍作配置就可以立即接管集群投入使用。不过在此之前,还是先试试看有没有办法把现有的这个vCenter修好吧。

2.排错过程

2.1.验证密码

虽然基本没必要,但是还是得确认下登录vCenter的密码是否正确。故意输错密码时,登录界面提示内容是“Invalid credentials(登录凭据错误)”,只有在使用正确的账号与密码时才会提示“User name and password are required”。

这就证明至少SSO账户验证功能是正常的,得看看vCenter运行的服务有没有正常运行。

2.2.检查服务

6.5 U2版本的vCenter不能通过5480端口的管理台检查服务运行状态,所以得通过SSH连接到VCSA虚拟机中查看。

集群中开启了HA,SSH服务自然也开着。通过root账户连接进去敲个shell,进入VCSA的BASH Shell。

先查看一下服务的运行状态吧。运行service-control --status命令可以查看vSphere相关服务的启动状态。运行结果看起来没有多少异常。

2.3.重启服务

上面那条命令只能看到服务是否开启,看不到服务运行状态。

所以决定重启一遍所有的服务,如果哪个服务有问题,那么重启的时候应该会报错。

service-control没有restart这个选项,我重启全部服务是通过service-control --stop --allservice-control --start --all这两条命令实现的。

已启动的服务顺序关闭后又顺序启动。在顺序启动服务时,启动某个服务卡了好久依旧没能成功。命令执行完毕,有好多服务没能起来。

这时浏览器访问vCenter的地址,提示503 Service Unavailable报错。

2.4.查看日志

再次通过service-control --status命令查看服务启动状态,和重启前相比很多服务都没能启动。就来看看那些服务的日志吧。

vSphere相关服务的日志存储于/var/log/vmware这个目录下,例如vpxd服务的日志路径为/var/log/vmware/vpxd/vpxd.log

先来看下vpxd服务的日志,因为Web客户端依赖于该服务。

使用tail -n 30 /var/log/vmware/vpxd/vpxd.log命令查看近30条日志,发现有很多CertificateExpiredException相关报错。

在VMware知识库里面搜索,初步判断该报错原因是VMware STS证书过期。

根据VMware KB76719(https://kb.vmware.com/s/article/76719)的描述,vCenter 6.5 U2版本自签名的STS证书有效期为2年。X桑说这个vCenter还真是2年前大概这个时候部署的。这就可以确定基本上是证书过期问题了。

2.5.检查证书

从VMware KB79248(https://kb.vmware.com/s/article/79248)上找到一个检查VMware STS证书的Python脚本checksts.py。我懒得用SCP把脚本上传到VCSA,就直接把脚本下载到本地,打开脚本复制里面内容后在VCSA的/tmp目录里面新建。

python /tmp/checksts.py命令跑一遍脚本,输出结果提示有证书过期。

报错原因定位完毕,接下来就是解决证书过期问题的事情了。

3.解决方法

vCenter自带一个证书管理工具,叫certificate-manager。通过它就能够重新生成新的VMware STS证书并替换掉老的。

VMware KB2097936(https://kb.vmware.com/s/article/2097936)介绍了certificate-manager这一工具的使用方法。这个工具用起来其实很简单,运行之后根据菜单输入序号来执行对应功能即可。

使用命令/usr/lib/vmware-vmca/bin/certificate-manager启动certificate-manager,工具会显示一个选项菜单。输入4回车,选择“Regenerate a new VMCA Root Certificate and replace all certificates(重新创建新的VMCA根证书并替换所有证书)”选项。

首先会提示“Do you wish to generate all certificates using configuration file : Option[Y/N] ? ”要求确认操作,输入Y确认即可。

接着需要输入SSO用户名和密码。

SSO账户验证完毕后,根据实际情况填写好创建证书所需要的信息,确认完毕后新证书会自动创建,已经过期的旧证书则会被新证书替换,vSphere相关的服务也会自动重启。

任务跑完,用service-control --status再次检查服务启动情况,应该启动的服务都起来了。打开浏览器登录Web客户端,也能够正常进行登录。大功告成,问题解决。

4.个人吐槽

VMware知识库是个好东西,对排错很有帮助。

虽然和这篇文章主题无关,但我还是想吐槽一下vCenter 6.5这个版本。

VMware vSphere 6.5版本挺尴尬的,因为从这个版本开始VMware不再提供对应版本vSphere客户端软件,而H5版的Web客户端仍是不完全状态,因此只能用Flash版的Web客户端进行操作。Flash这东西嘛……大陆地区的用户都懂的。在有条件的情况自然是能不用Flash就不用。