소개
이 문서에서는 VCSA 인증 재생성 후 HyperFlex vCenter 등록 실패 문제를 설명합니다.
vCenter Server에서 인증서를 재생성/교체한 후 EAM 서비스가 새 인증서를 인식하지 못하여 로그인할 수 없습니다.
기고자: Ignacio Orozco, Cisco TAC 엔지니어
배경 정보
vCenter 인증서를 재생성/교체한 후 vCenter에 Hyperflex 클러스터를 다시 등록하려고 하면 다음 오류가 표시됩니다.
"vCenter와 EAM(ESX Agent Manager) 간의 연결 오류입니다. vSphere에서 EAM 서비스를 다시 시작합니다. 그런 다음 Retry Cluster Creation(클러스터 생성 재시도)을 클릭합니다."
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 파일 또는 ESX Agent Manager(EAM)에 대한 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 서버\bin
- 다음 명령을 사용하여 VMware ESX Manager 서비스를 다시 시작합니다.
- 서비스 제어 —EsxAgentManager 중지
- 서비스 제어 —EsxAgentManager 시작
vCenter 서버 어플라이언스에서
- SSH를 사용하여 vCenter Server Appliance에 로그인합니다.
- 이 명령을 실행하여 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