简介
本文档介绍VCSA认证重新生成后HyperFlex vCenter注册的故障问题。
在vCenter Server上重新生成/更换证书后,EAM服务不知道新证书,无法登录。
作者:思科TAC工程师Ignacio Orozco。
背景信息
在重新生成/更换vCenter证书后,尝试将Hyperflex集群重新注册到vCenter时,您会看到以下错误:
“vCenter和ESX Agent Manager(EAM)之间的连接错误。 从vSphere,重新启动EAM服务。然后点击重试群集创建。"
在stMgr.log中,您可以看到:
017-12-20-21:51:17.015 [opId=6b747f93e3224869, operationId=6b747f93e3224869.6b747f93e3224869<:6b747f93e3224869] [pool-4-thread-2] ERROR c.s.s.v.VirtPlatformImpl$ - ESX Agent Manager error
java.rmi.RemoteException: VI SDK invoke exception:; nested exception is:
com.vmware.eam.NoConnectionToVCenter
at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:157) ~[vijava-eam-5.5.6sp.jar:na]
at com.vmware.eam.ws.EamService.queryAgency(EamService.java:144) ~[vijava-eam-5.5.6sp.jar:na
在VCSA: /var/log/vmware/eam/eam.log文件或Windows服务器上的VC C:\ProgramData\VMware\vCenterServer\logs\eam\eam.log文件中,您会看到类似以下条目:
YYYY-MM-DDTHH:MM:SS.MSZ | INFO | eam-0 | VcConnection.java | 167 | Connecting to vCenter as com.vmware.vim.eam extension
YYYY-MM-DDTHH:MM:SS.MSZ | INFO | eam-0 | VcConnection.java | 603 | Connecting to https://vCenter_Server_FQDN:8089/sdk/vimService via vCenter proxy http://localhost:80
YYYY-MM-DDTHH:MM:SS.MSZ | DEBUG | http-bio-0.0.0.0-15005-exec-1 | AllowAllSamlTokenPolicy.java | 24 | HealtStatus request's token subject name: machine-7502fb4c-3521-48c7-93ed-3d1865e0fff1, subject domain: vsphere.local
YYYY-MM-DDTHH:MM:SS.MSZ | ERROR | eam-0 | VcConnection.java | 179 | Failed to login to vCenter as extension. vCenter has probably not loaded the EAM extension.xml yet.: Cannot complete login due to an incorrect user name or password.
YYYY-MM-DDTHH:MM:SS.MSZ | WARN | eam-0 | VcListener.java | 114 | Trying to recover from error
(vim.fault.InvalidLogin) {
faultCause = null,
faultMessage = null
}
at sun.reflect.GeneratedConstructorAccessor82.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.vmware.vim.vmomi.core.types.impl.ComplexTypeImpl.newInstance(ComplexTypeImpl.java:173)
at com.vmware.vim.vmomi.core.types.impl.DefaultDataObjectFactory.newDataObject(DefaultDataObjectFactory.java:26)
at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.ComplexStackContext.
(ComplexStackContext.java:31) at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.UnmarshallerImpl$UnmarshallSoapFaultContext.parse(UnmarshallerImpl.java:141) at com.vmware.vim.vmomi.core.soap.impl.unmarshaller.UnmarshallerImpl$UnmarshallSoapFau
解决方法
参考文档:https://kb.vmware.com/s/article/2112577
在适用于Windows的vCenter Server
- 通过控制台或远程桌面会话连接到vCenter Server。
- 打开提升的命令提示符。
- 创建名为c:\certificate的临时目录。
- 运行以下命令以检索vpxd-extension解决方案用户证书和密钥:
"%VMWARE_CIS_HOME%"\vmafdd\vecs-cli entry getcert --store vpxd-extension --alias vpxd-extension --output c:\certificate\vpxd-extension.crt
"%VMWARE_CIS_HOME%"\vmafdd\vecs-cli entry getkey --store vpxd-extension --alias vpxd-extension --output c:\certificate\vpxd-extension.key
- 导航至C:\Program Files\VMware\vCenter Server\vpxd\scripts:
cd C:\Program Files\VMware\vCenter Server\vpxd\scripts
注意:所列路径用于vCenter Server的默认安装。如果已自定义vCenter Server的安装位置,请相应地更改目录。
- 运行以下命令以使用vCenter Server更新扩展的证书:
"%VMWARE_PYTHON_BIN%" updateExtensionCertInVC.py -e com.vmware.vim.eam -c C:\Certificate\vpxd-extension.crt -k C:\Certificate\vpxd-extension.key -s localhost -u Administrator@domain.local
注意:默认用户和域为administrator@vsphere.local。如果在配置期间更改了此项,请更改域以匹配您的环境。
- 出现提示时,输入Administrator@domain.local密码。
- 导航到C:\Program Files\VMware\vCenter Server\bin文件夹:
cd C:\Program Files\VMware\vCenter Server\bin
- 使用以下命令重新启动VMware ESX Manager服务:
- service-control — 停止EsxAgentManager
- service-control — 启动EsxAgentManager
在vCenter服务器设备上
- 使用SSH登录vCenter服务器设备。
- 运行以下命令以启用对Bash外壳的访问:
shell.set --enabled true
- 键入shell并按Enter。
- 运行以下命令以检索vpxd-extension解决方案用户证书和密钥:
mkdir /certificate
/usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store vpxd-extension --alias vpxd-extension --output /certificate/vpxd-extension.crt
/usr/lib/vmware-vmafd/bin/vecs-cli entry getkey --store vpxd-extension --alias vpxd-extension --output /certificate/vpxd-extension.key
- 运行此命令以使用vCenter Server更新扩展的证书。
python /usr/lib/vmware-vpx/scripts/updateExtensionCertInVC.py -e com.vmware.vim.eam -c /certificate/vpxd-extension.crt -k /certificate/vpxd-extension.key -s localhost -u Administrator@domain.local
注意:默认用户和域为Administrator@vsphere.local。如果在配置期间更改了此项,请更改域以匹配您的环境。出现提示时,键入Administrator@domain.localpassword。
- 使用以下命令重新启动VMware ESX Manager服务:
service-control --stop vmware-eam
service-control --start vmware-eam