一大早客户老王打来电话,他们的虚拟化环境VCenter登陆不上,一直报错:

记一次处理客户VCenter无法登陆问题_证书过期

由于疫情期间,只能通过电话远程协助客户处理,我让他先进入5480端口设备管理界面也无法打开:

记一次处理客户VCenter无法登陆问题_重置_02

先找到这个vcenter所在主机,打开VCSA的控制台,然后打开SSH 和shell

记一次处理客户VCenter无法登陆问题_重置_03

记一次处理客户VCenter无法登陆问题_证书过期_04

记一次处理客户VCenter无法登陆问题_503_05

然后执行

service-control --status --all

记一次处理客户VCenter无法登陆问题_重置_06

发现服务基本运行都正常,后来尝试重启服务

service-control --stop --all
service-control --start --all

却发现很多服务无法启动成功

记一次处理客户VCenter无法登陆问题_503_07

后来再次重启发现报错

记一次处理客户VCenter无法登陆问题_重置_08

通过命令无法重新启动服务,看来只能重启试试。

重启后还是无法登陆,但却报了一个很熟悉的错误:

记一次处理客户VCenter无法登陆问题_503_09

参考:

​​​​https://kb-uat.vmware.com/s/article/67818?lang=zh_cn​

可以确定的是503错误肯定是服务器端的问题,一般可能的问题原因有:

  1. VCenter服务的状态不正常
  2. 磁盘空间满了
  3. 证书过期问题
  4. 等。。。

通过df -h可以看到 /storage/archive目录空间已经100%!

记一次处理客户VCenter无法登陆问题_重置_10

/storage/archive/vpostgres 目录下很多归档的日志文件

记一次处理客户VCenter无法登陆问题_证书过期_11

find * -mtime +30 -exec rm {} \; // 查找创建时间大于30天的所有文件,并删除。

执行后空间释放

记一次处理客户VCenter无法登陆问题_证书过期_12

然后再次重启服务还是失败,我怀疑很大可能是证书的问题了。

要检查证书是否过期,可以参考:

​​​​https://kb.vmware.com/s/article/79248?lang=zh_cn​

​https://kb-uat.vmware.com/s/article/82332?lang=zh_cn​

第一是检查STS证书,这个证书可以通过HTML5的WEB界面检查,目前无法登陆此路不通,还可以使用官方给出的​​checksts.py​​ 脚本

运行python checksts.py

记一次处理客户VCenter无法登陆问题_证书过期_13

可以看到STS证书并没有过期。

第二是检查环境证书的状态,在 vCenter Appliance 中运行以下命令:

for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not After";done;

运行结果如下,可以看出好几个证书都过期了,刚刚过期2天。

记一次处理客户VCenter无法登陆问题_证书过期_14

针对证书过期,VMware给出详细的解决办法,可以使用 vSphere Certificate Manager重新生成证书进行替换。

参考:

​https://kb-uat.vmware.com/s/article/2097936?lang=zh_CN​

打开证书管理器

/usr/lib/vmware-vmca/bin/certificate-manager

选择 8 

重置所有证书

记一次处理客户VCenter无法登陆问题_503_15

然后一路回车,输入SSO密码FQDN选择自己的。

记一次处理客户VCenter无法登陆问题_证书过期_16

记一次处理客户VCenter无法登陆问题_503_17

等待证书重置成功,登陆VC 测试

记一次处理客户VCenter无法登陆问题_503_18

记一次处理客户VCenter无法登陆问题_重置_19

重新打开VC,登陆成功。至此VCenter恢复正常。