본문 바로가기

Compute

ESXi host is disconnected due to firewall policy

 

vCenter와 ESXi 환경에서 ESXi는 다양한 원인으로 연결 끊김 증상이 나타날 수 있습니다.

이번에는 vCenter와 ESXi 간의 TCP Connection에서 Source Port로 사용되는 Ephemeral Port Range가 Firewall에서 차단되어 발생하는 내용에 대해서 다뤄보겠습니다.

 

우선, vCenter의 Core 서비스인 vpxd의 로그에서 특정 ESXi Host와의 Connection이 언제 끊겼는지를 "NO_RESPONSE" 문구를 이용하여 확인합니다.

 

vpxd.log

2023-07-24T14:07:01.942Z warning vpxd[29851] [Originator@6876 sub=MoHost opID=HB-host-9118@373745-7cc3de4b] host [vim.HostSystem:host-9118,abc.contoso.com] connection state changed to NO_RESPONSE

 

이제 연결 끊김을 판단한 시간대를 확인했으므로 판단한 시간대 이전에 어떤 로그가 기록되어 있는지 확인해야 합니다.

즉, "NO_RESPONSE"로 판단한 근거가 무엇인지를 확인합니다.

이때는 위 로그에 있는 ESXi Host ID(host-9118)를 이용하면 좀 더 편하게 vpxd.log 파일 내에서 검색을 해볼 수 있습니다.

 

2023-07-24T14:07:01.814Z error vpxd[29851] [Originator@6876 sub=Vmomi opID=HB-host-9118@373745-7cc3de4b] Got vmacore exception when invoking VMOMI method; <<last binding: <<TCP '<vCenter IP Address> : 51824'>, <TCP '<ESXi Host IP Address> : 443'>>>, /vpxa>, vpxapi.VpxaService.getChanges, N7Vmacore15SystemExceptionE(Connection reset by peer: The connection is terminated by the remote end with a reset packet. Usually, this is a sign of a network problem,  timeout, or service overload.)

 

위 로그를 해석해보면, vCenter의 51824 포트를 통해서 ESXi Host의 443 포트에 연결을하여, vpxapi.VpxaService.getChanges 라는 함수를 호출하려고 하였으나 51824 <-> 443 간의 연결이 reset packet에 의해서 끊겼음을 나타냅니다.

 

원칙대로라면, 이 상황이 빈번하게 재현된다는 가정하에 vCenter와 ESXi 양 쪽에서 Packet을 수집하여 vpxd.log에 기록되는 포트에 대한 Reset Packet을 확인해야 하나 본 문제는 언제 발생할지 알 수 없는 상황이었기에 Packet 수집까지는 진행되지 못하였습니다.

 

다행히 이번 건의 경우에는 고객사에서 vCenter와 ESXi Host 중간에 위치한 Firewall의 Policy를 검토해주셨고 이를 바탕으로 문제가 되었던 vCenter의 Source 포트 대역대에 대해 Allow 처리를 하게 되었습니다.

 

이 때, 참고 해야 할 내용으로는 vCenter가 Appliance 제품으로 OS는 Photon OS를 사용하기 때문에 vCenter가 TCP Connection에서 Source인 경우 할당되는 포트(Ephemeral Port)에 대한 내용을 아래 KB를 통해 참고하실 수 있습니다.

Ephemeral port user on VMware Photon OS and Appliances (76080)

https://kb.vmware.com/s/article/76080