VMworld 2017에서 발표된 vCenter Performance 관련 동영상을 정리해 보았습니다.
성능 이슈를 이해 하고 분석 하려면 기반 지식을 모두 알아야 하는데 이 동영상을 통해서 vCenter의 구조, 어떤 성능상 문제가 있을 수 있는지? 문제를 확인하는 방법 등을 확인할 수 있습니다.
동영상은 아래 링크에서 확인 가능 합니다.
https://www.youtube.com/watch?v=cIAGxJ4tVbA
vCenter의 구성이 간단한하고 부하가 많이 걸리지 않은 경우 Windows 기반과 VCSA 모두 성능이 비슷 합니다. 하지만 복잡한 구성과 부하가 많이 걸리는 경우 vCenter Windows 버전보다 VCSA가 성능이 더 뛰어납니다.
vCenter의 메인 서비스인 vpxd로 Client의 요청을 처리해서 DB에 저장하는 역할을 합니다. 사용자가 Web Browser를 사용해서 vCenter를 사용해서 VM 생성 등의 작업을 요청하면 요청을 vsphere-client가 받아서 SSO로 인증을 처리한 후 VPXD에 요청을 하는 것입니다. 요청을 받은 VPXD는 vSphere host에 요청을 하고 변경 사항을 DB에 저장하는 것입니다. vpxd는 C++로 작성 되었고 다른 서비스는 java나 Python 등으로 작성되었습니다.
VM을 켜는 동작을 좀 더 자세히 살펴 보면 다음과 같습니다. Client의 요청을 vCenter에서 받은 후 ESXi host에 Name을 Reserve 하고 VM 생성 요청을 한 후 상태를 확인 한 후 DB에 update 하고 Client에 결과를 돌려줍니다. 작업은 Storage와 DB 단에 지연이 있을 수 있으니 최적화를 해서 성능을 향상시킬 수 있습니다.
vCenter 노드는 Management node 를 담당하고 PSC 노드는 라이선싱, 디렉토리 서비스, SO를 담당합니다. vCenter와 PSC를 동일한 노드에 둘 수도 있고 대규모 환경에서는 분리할 수도 있습니다.
하나의 PSC에 여러개의 VC를 연결할 경우 하나이 Single Domain으로 관리할 수 있고 하나의 디렉토리 서비스를 사용하기 때문에 롤, 권한 라이선싱, 테그 등을 공유해서 관리할 수 있습니다. 이 구조에서는 PSC가 Single Point of Failure 이기 때문에 PSC를 2개 설치하고 Replication을 해서 HA 구성을 할 수 있습니다. (vSphere 6.7 에서는 Embeded PSC 구조에서 HA를 직접 구성할 수 있기 때문에 PSC를 외부로 설치하고 HA 구성을 할 필요가 없읍니다.)
https://blogs.vmware.com/vsphere/2018/11/external-platform-services-controller-a-thing-of-the-past.html
DSL 이라는 Tag를 검색한다고 할때 Web Browser 는 VC 를 통해서 PSC에 검색을 하고 VC 간에 다시 검색을 하게 됩니다. VC 간에 지연이 있다면 Tag 검색에 시간이 많이 걸리게 됩니다. VC나 PSC 사이에 통신 속도가 6.0 에서는 10ms 이하, 6.5 에서는 30ms 이하일 경우 하나의 site로 구성을 합니다.
VCs, PSC 사이의 통신이 6.0에서 10ms 이상 6.5에서 30ms 이상일 경우 multi-site를 구성 합니다. (6.0/6.5 모두 사이트간 통신 속도는 100ms 이하를 권장 합니다.)
vCenter는 동시에 640개의 작업을 처리할 수 있고 최대 2,000개의 세션을 처리할 수 있습니다. Esxi host (6.0+)은 호스트당 16개의 cost를 처리할 수 있습니다. Cost는 작업에 드는 부하(?)를 의미하는데 Clone/relocate/vMotion은 2, Storage vMotion은 8과 같이 정해져 있습니다. 아래 그림에서 Host A 에서 B로 Clone을 할 경우 두 호스트 모두에 2라는 부하(?)가 걸립니다. 하나의 호스트에서 Clone을 할 경우 해당 호스트에 4의 부하가 걸립니다.
Datastore의 동시 작업은 128까지 가능하고 vMotion의 부하는 1, Storage vMotion의 부하는 16 입니다. 1Gb NIC은 동시에 4, 10Gb NIC은 동시에 8까지 동시 작업이 가능하고 vMotion 은 1의 부하를 가집니다.
CPU와 Memory는 70%가 넘지 않아야 합니다. CPU가 70%가 넘어갈 경우 어떤 프로세스 (vpxd, vSphere-client, 등)의 CPU 사용률이 높아졌는지 확인해야 하며 vpxd의 사용률이 높으면 CPU를 추가해야 합니다. java 서비스가 높은 경우 GC 관련 동작인지 확인하고 메모리를 추가해야 합니다. Memory의 경우 swap 이 되지 않도록 충분한 메모리를 추가해 주어야 하며 VM으로 VC를 실행하고 있다면 VM size 만큼 메모리를 Reserve 해야 합니다.
VCSA를 사용할 경우 CPU and Memory를 통해서 CPU/Memory 사용률을 확인할 수 있으며 자세히 보려면 Windows의 경우 Task manager와 Process explorer 를 사용해서 확인하고 java 프로세스의 경우 User name이나 Command Line을 통해서 어떤 서비스가 실행되는지 확인할 수 있습니다. VCSA의 경우 vimtop 명령을 통해 확인 가능 합니다. (CPU 100% 이면 1 core를 사용하는 것이고 CPU 200% 이면 2 core를 사용하는 것입니다.)
API 요청 때문에 성능 문제가 발생할 경우 vpxd 로그나 vpxd-profiler log를 사용해서 어떤 API가 호출되는지 확인하고 session 수는 얼마나 되는지 등 정보를 확인해서 Troubleshooting 해야 합니다.
DB의 경우 DB 가 사용하는 파티션이 부족한 현상이 발생하는지 확인해야 하고 성능 문제가 있을 경우 profiling 을 해서 성능을 확인해야 합니다. VCSA의 경우 /opt/vmware/vpostgres/current/bin/pg_top -U postgres -d VCDB를 통해서 profiling 정보를 확인할 수 있습니다.
vimtop 명령을 사용해서 vSphere client의 Heap 에 문제가 있는지 확인할 수 있습니다.
감사합니다.
'Virtualization' 카테고리의 다른 글
[VMware] Guest OS Disk timeout 설정 (0) | 2019.04.06 |
---|---|
vSphere Performance Troubleshoooting and RCA (0) | 2019.03.10 |
ESXi Internal (0) | 2018.10.20 |