Compute Node 장애: xapi 작업이 멈췄을 때 - hypervisor 상태 관점
xapi 작업이 멈췄을 때를 hypervisor 상태 관점에서 좁혀 보는 케이스. Compute Node 계층의 증상, 확인 명령, 조치 전 판단, 복구 기준을 정리했다.
이 글은 Compute Node 장애: xapi 작업이 멈췄을 때 - hypervisor 상태 관점 케이스를 다룬다. 핵심은 xapi 작업이 멈췄을 때를 hypervisor 상태 관점에서 좁혀 보는 케이스다.
수집한 운영 단서에서 고객명, 내부 주소, 노드명을 제거하고 장애 흐름과 확인 순서만 남겼다.
compute node 장애는 한 대의 서버 문제가 아니라 그 위에 올라간 VM 묶음의 서비스 장애로 번진다. 그래서 첫 판단은 hardware 교체가 아니라, 남아 있는 VM을 어디까지 안전하게 옮길 수 있는지에서 시작한다.
운영 장애 대응은 원인을 바로 단정하기보다 계층을 나눠 증거를 맞추는 쪽이 안전하다. read-only 확인, 변경 조치, 검증 명령을 분리해야 긴급 상황에서도 판단이 흔들리지 않는다.
이 글에서 다루는 케이스
| 케이스 초점 | xapi 작업이 멈췄을 때를 hypervisor 상태 관점에서 좁혀 보는 케이스 |
|---|---|
| 정리한 주제 | Compute Node |
| 주요 계층 | XenServer host, VM scheduling, hardware fault |
| 운영 단서 | 주제 프로파일과 장애 흐름 기준으로 재구성 |
겉으로 보이는 증상
- compute node hardware fault, reboot, hang, power off 이후 VM 제어가 불안정하다.
- 관리 포털에서는 VM이 Running으로 보이지만 실제 hypervisor에서는 domain이 없거나 멈춰 있다.
- 장애 host에서 migration, evacuation, maintenance 전환이 실패한다.
로그에서 먼저 눈에 들어오는 신호
운영 중에는 긴 설명보다 반복되는 로그 문구가 먼저 눈에 들어온다. 아래 신호는 실제 값 대신 예시 placeholder로 바꿔 흐름만 볼 수 있게 정리했다.
- `소스와 타겟의 마스터 노드에서 각각 vi로 /etc/xapi.conf 파일을 아래 2개 항목에서 #(주석)을 제거한후 86400을 432000으로 수정 및 저장합니다.`
- `#(주석 제거)inactive_session_timeout = 86400(432000로 변경) # 1 day in seconds`
- `#(주석 제거)pending_task_timeout = 86400(432000로 변경) # 1 day in seconds`
처음에 나눠봐야 할 것
이 케이스는 한 번에 해결 명령을 찾기보다, 아래 기준으로 계층을 나누는 것이 먼저다.
- host의 전원, management network, storage path, xapi 상태를 먼저 분리한다.
- VM 단위 문제가 아니라 host 단위 문제인지 resident VM 목록으로 확인한다.
- hardware 교체 전후에는 service tool 로그와 hypervisor 로그를 같이 남긴다.
확인에 쓴 명령 흐름
아래 명령은 공개 가능한 형태로 일반화했다. 실제 값은 환경마다 다르므로 placeholder를 대상 리소스에 맞춰 바꿔야 한다.
xe host-list params=uuid,name-label,enabled
xe host-param-list uuid=<host-uuid>
xe vm-list resident-on=<host-uuid> params=uuid,name-label,power-state
xe task-list status=pending
systemctl status xapi --no-pager
tail -n 200 /var/log/xensource.log
tail -n 200 /var/log/messages
xe vm-migrate vm=<vm-uuid> host=<target-host-uuid> live=true
xe host-disable uuid=<host-uuid>조치 전에 판단할 지점
- 가능하면 live migration으로 비우고, 불가능하면 HA 또는 cold migration 경로를 사용한다.
- xapi 재시작은 진행 중 task와 VM 영향도를 확인한 뒤 maintenance window에서 수행한다.
- 장애 host 격리 후 target host의 CPU, memory, SR 여유량을 확인한다.
복구됐다고 판단하는 기준
- 장애 host가 pool에서 disable/maintenance 상태인지 확인한다.
- 이전된 VM의 power state, NIC, disk attachment를 확인한다.
- xensource.log와 management-server.log에 신규 error가 반복되지 않는지 확인한다.
운영하면서 남은 교훈
이 케이스는 조치 자체보다 대상 식별이 더 중요하다. 같은 “VM이 안 된다”는 증상이어도 VM guest, compute host, storage attachment, virtual router, management service 중 어디가 기준점인지에 따라 명령과 위험도가 완전히 달라진다.
장애 시각, 대상 리소스, 직전 변경 이력, 확인 명령, 실제 조치, 검증 결과를 같은 순서로 남겨두면 다음 장애에서 단순 기억이 아니라 판단 근거로 다시 쓸 수 있다.