본문 바로가기

RedHat Product/RHE Virtualization

RHEV-M에서, VM's상태체크를 어떻게 하는가?

한때 감이라는걸 멀어질까 두려웠던적이 있었는데 요즘은 뭐랄까....그냥 먼산 바라보고...또보고 또보고 ㅎ

쩝 뭐 그렇다.


아는 지인이 레드햇가상화에 대해서 물어보던중, 가상화관리에 대한 로직을 물어본 내용중 하나를 서술할까한다.



1. VM상태확인방법

VM의 상태는 QEMU에 의해 오픈되어 있는 Unix Socket을 통해 모니터링 하게 된다. 

따라서, VM을 실행시키고 있는 QEMU에 의해 내부적으로 모든 것이 관리되며 RHEV-H에서 실행되고 있는 VDSM Agent 프로그램에 의해 Query를 전달하여 상태를 확인하게 된다.



2. VM Property에서 Highly Available이 설정된 경우


 "If the host or virtual server shuts down unexpectedly, the virtual machine will be automatically re-run on another host. For High availability, ensure that the Power Management is enabled for all hosts in the cluster. "


위와 같이 특정 VM에 HA가 설정된 경우, 

1) 해당 VM이 실행중이던 Host가 죽었을 경우, 

2) 해당 VM 자체가 알수없는 원인으로 죽었을 경우, VM들을 자동으로 새로 실행하도록 하는 기능이다. 

실행되는 RHEV-H의 경우 Cluster에 소속된 RHEV-H 중 Policy에 따라 자동 선택된다.



3. 테스트 방법

1) RHEV-M 에서 VM 선택 후 Edit -> High Availability -> [x] Highly Available 체크

2) 해당 VM이 실행되고 있는 RHEV-H에 접속하여 해당 VM 정보 확인


$ vdsClient -s 0 list table

c9a01841-xxxx-43ba-xxxx-aa467d18cf50  15101  test                 Up 

....


# vdsClient -s 0 getVmStats c9a01841-xxxx-43ba-xxxx-aa467d18cf50

c9a01841-8310-43ba-8e20-aa467d18cf50

 Status = Up

 memUsage = 0

 acpiEnable = true

 pid = 15101

 rxRate = 0.00

 session = Unknown

 displaySecurePort = 5885

 timeOffset = -14400

....


3) 해당 VM의 QEMU 프로세스를 죽임

# kill -9 15101


위와 같이 비정상적으로 죽었을 경우에만 HA가 동작한다. 

정상적인 shutdown과 같은 방법은 적용할 수 없으며, Hang 같은 부분도 감지되지 않는다.