前段时间前辈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 --all
和service-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就不用。
0 Comments