목록으로

클라우드

OpenStack Nova Deep Dive: 컴퓨트 서비스를 움직이는 핵심 엔진

BeanCon
OpenStack Nova가 API, 스케줄러, 컨덕터, 컴퓨트 노드와 하이퍼바이저를 연결해 가상 머신을 생성하는 컴퓨트 아키텍처 이미지

OpenStack Nova의 개념, 아키텍처, API·Scheduler·Conductor·Compute 구성요소, KVM 연동, VM 생성 흐름, 상태 관리, 라이브 마이그레이션, 대규모 운영 모범 사례를 정리했습니다.

OpenStack에서 가상 머신을 만들고, 워크로드를 확장하고, 클라우드 인프라를 운영한다고 할 때 그 중심에는 Nova가 있다. Nova는 OpenStack Compute Service로, 클라우드 환경 전반의 가상 머신 인스턴스를 프로비저닝하고 관리하며 제어하는 핵심 컴퓨트 엔진이다.

Nova는 단순히 VM 하나를 실행하는 도구가 아니다. 사용자의 요청을 API로 받고, 어떤 컴퓨트 노드에 배치할지 판단하고, 이미지·네트워크·스토리지·인증 서비스와 협력하며, 하이퍼바이저에 실제 실행을 위임하는 오케스트레이션 계층이다. Nova가 없다면 OpenStack은 가상 머신을 시작하거나 운영할 수 없다.

Nova란 무엇인가

Nova는 가상 머신 인스턴스의 생명주기를 제어하는 분산 컴퓨트 관리 시스템이다. VM 생성, 삭제, 재부팅, 크기 변경, 마이그레이션, 컴퓨트 리소스 할당, 하이퍼바이저 연동, 가용 영역 관리, 컴퓨트 노드 모니터링을 담당한다.

중요한 점은 Nova가 가상 머신을 직접 생성하지는 않는다는 것이다. 실제 가상화 작업은 KVM, VMware ESXi, Hyper-V, Xen 같은 하이퍼바이저가 수행한다. Nova는 이 하이퍼바이저들을 제어하고 다른 OpenStack 서비스와 연결해 클라우드 사용자에게 IaaS 경험을 제공한다.

왜 Nova가 중요한가

전통적인 가상화 환경에서는 관리자가 직접 VM을 생성하고, CPU와 메모리를 할당하고, 네트워크와 스토리지를 연결했다. Nova는 이 과정을 API 기반 자동화로 바꾼다. 사용자는 셀프서비스 방식으로 VM을 요청하고, Nova는 스케줄링과 리소스 배치를 자동으로 처리한다.

셀프서비스 VM 프로비저닝 자동 리소스 스케줄링 멀티테넌트 컴퓨트 관리 API 기반 인프라 운영 대규모 워크로드 오케스트레이션

Nova 아키텍처 한눈에 보기

Nova는 여러 분산 서비스가 메시지 큐와 데이터베이스를 통해 협력하는 구조다. 사용자의 요청은 Horizon 또는 CLI/API에서 시작해 Keystone 인증을 거친 뒤 Nova API로 들어오고, Scheduler와 Conductor, Compute 서비스가 각자 역할을 수행한다.

Horizon / CLI / API Client
Keystone Authentication
Nova API
Message Queue: RabbitMQ
Nova Scheduler
Host Selection
Nova Conductor
DB Mediation
Nova Compute
Compute01
Nova Compute
Compute02
Nova Compute
Compute03
Hypervisor: KVM · VMware · Xen · Hyper-V

주요 Nova 구성요소

구성요소역할핵심 기능Nova API컴퓨트 요청 진입점인스턴스 생성, 삭제, 재부팅, 리사이즈, 라이브 마이그레이션 요청 처리Nova Scheduler최적의 컴퓨트 호스트 선택리소스 평가, 용량 계획, 정책 적용, 배치 결정Nova ConductorCompute와 데이터베이스 사이의 중재자DB 접근 중앙화, 보안 강화, DB 부하 감소, 확장성 개선Nova Compute각 컴퓨트 노드에서 인스턴스 관리VM 실행, 중지, 재부팅, 리사이즈, 마이그레이션, 하이퍼바이저 모니터링Message QueueNova 내부 서비스 간 비동기 통신RabbitMQ 기반 요청 전달과 작업 분산

Nova API: 모든 컴퓨트 요청의 입구

Nova API는 VM 생성, 삭제, 재부팅, 리사이즈, 라이브 마이그레이션 같은 모든 컴퓨트 관련 요청을 받는 진입점이다. 예를 들어 사용자가 openstack server create --image Ubuntu-22.04 --flavor m1.medium --network private-net web-server-01 명령을 실행하면 Nova API가 요청 검증, 인증 확인, 데이터베이스 갱신, 내부 Nova 서비스와의 통신을 수행한다.

Nova Scheduler: 어느 노드에 VM을 배치할 것인가

대규모 OpenStack 환경에는 수백 개의 컴퓨트 노드가 있을 수 있다. Nova Scheduler는 새 VM을 어느 호스트에 배치할지 결정한다. CPU, 메모리, 가용 영역, 호스트 애그리게이트, 정책 조건을 평가해 후보를 좁히고 최종 호스트를 선택한다.

컴퓨트 노드CPU 사용률메모리 사용률스케줄링 판단Compute0175%60%사용 가능하지만 여유가 제한적Compute0230%35%4 vCPU / 8GB RAM 요청에 가장 적합Compute0385%80%부하가 높아 우선순위 낮음

스케줄러 필터링 방식

Nova Scheduler는 여러 필터를 조합해 배치 가능한 호스트를 고른다. RAM Filter는 사용 가능한 메모리를 확인하고, Compute Filter는 compute 서비스가 정상인지 확인한다. Availability Zone Filter는 사용자가 지정한 논리적 영역에 배치하도록 제한하며, Aggregate Filter는 GPU 서버, 데이터베이스 클러스터, 개발 클러스터, 운영 클러스터처럼 정책 기반 그룹을 활용한다.

필터검사 대상예시RAM Filter요청 VM에 필요한 메모리가 충분한지 확인8GB 필요, Node A 4GB 여유, Node B 16GB 여유라면 Node B 선택Compute Filternova-compute 서비스가 온라인인지 확인Node A 온라인, Node B 오프라인이면 Node A만 후보Availability Zone Filter사용자가 지정한 가용 영역 조건 확인AZ-Seoul, AZ-Tokyo, AZ-Singapore 같은 영역 지정Aggregate Filter호스트 그룹 정책 확인GPU Cluster, DB Cluster, Production Cluster 등으로 배치 제한

Nova Conductor: 데이터베이스 접근을 중앙화한다

Nova Conductor는 nova-compute와 데이터베이스 사이에서 중재자 역할을 한다. 모든 컴퓨트 노드가 직접 데이터베이스에 접근하면 보안과 확장성 문제가 생길 수 있다. Conductor는 DB 작업을 중앙화해 보안을 강화하고, 데이터베이스 부하를 줄이며, 구조를 단순하게 유지한다.

Nova Compute: 실제 인스턴스를 다루는 노드 서비스

Nova Compute는 모든 컴퓨트 노드에서 실행되는 서비스다. VM 시작, 종료, 재부팅, 리사이즈, 마이그레이션, 하이퍼바이저 상태 모니터링을 수행한다. Compute01, Compute02, Compute03 같은 각 물리 호스트에는 nova-compute가 실행되며, 이 서비스가 하이퍼바이저와 통신한다.

하이퍼바이저 연동

Nova는 여러 하이퍼바이저를 지원하지만, 대부분의 OpenStack 배포에서는 KVM이 가장 널리 사용된다.

하이퍼바이저지원 성격주요 사용 환경KVM가장 일반적대부분의 Linux 기반 OpenStack 환경VMware ESXi엔터프라이즈VMware 인프라와 연동하는 환경Hyper-VMicrosoft 환경Windows 중심 데이터센터Xen레거시 지원기존 Xen 기반 인프라QEMU개발·테스트실험 및 개발 환경

Nova와 KVM 아키텍처

Nova Compute
↓ 관리 명령 전달
libvirt
↓ 가상화 추상화
QEMU / KVM
↓ 워크로드 실행
Guest Virtual Machine

가상 머신 생성 흐름

사용자가 Ubuntu 22.04 이미지, 4 vCPU, 8GB RAM, private network를 지정해 VM을 생성한다고 가정해보자. Nova는 Keystone, Glance, Neutron, Cinder, 하이퍼바이저와 순차적으로 협력해 인스턴스를 만든다.

단계동작관련 서비스1사용자 인증 정보를 검증한다.Keystone2Nova API가 이미지, flavor, 네트워크 요청을 받는다.Nova API3사용 가능한 컴퓨트 노드를 평가한다.Nova Scheduler4최적 호스트를 할당한다.Scheduler / Placement5선택된 노드의 nova-compute가 빌드 지시를 받는다.Nova Compute6VM 이미지를 조회하고 다운로드 또는 캐시한다.Glance7가상 NIC, IP, 보안 그룹, DHCP를 구성한다.Neutron8필요한 볼륨을 생성하거나 연결한다.Cinder9KVM이 qemu-system-x86_64 프로세스로 인스턴스를 실행한다.KVM / QEMU10인스턴스 상태가 ACTIVE로 바뀌고 사용자가 접속한다.Nova

Nova 데이터베이스와 인스턴스 상태

Nova는 VM 메타데이터와 운영 상태를 데이터베이스에 저장한다. 주요 테이블에는 인스턴스 정보, 컴퓨트 노드 정보, 서비스 상태, 마이그레이션 기록, flavor 정보가 포함된다. 장애 분석과 운영 자동화를 위해 이 구조를 이해하는 것이 중요하다.

테이블목적instances가상 머신 인스턴스 정보compute_nodes컴퓨트 호스트 리소스와 상태 정보servicesNova 서비스 상태 정보migrations마이그레이션 기록flavorsVM 크기 템플릿 정보

상태의미BUILD인스턴스 생성 중ACTIVE실행 중SHUTOFF전원 꺼짐PAUSED일시 정지SUSPENDED중단 상태RESIZED크기 변경 완료 또는 대기ERROR생성 또는 작업 실패DELETED삭제됨

라이브 마이그레이션

Nova의 강력한 기능 중 하나는 라이브 마이그레이션이다. 실행 중인 VM을 중단 없이 다른 컴퓨트 호스트로 옮길 수 있어 하드웨어 유지보수, 용량 균형 조정, 인프라 업그레이드, 장애 회피에 유용하다.

예를 들어 Compute01에서 실행 중인 VM을 Compute02로 이동하더라도 애플리케이션은 계속 동작할 수 있다. 다만 네트워크, 스토리지 백엔드, 하이퍼바이저 설정이 라이브 마이그레이션 조건을 충족해야 안정적으로 운영된다.

Availability Zone과 Host Aggregate

Nova는 워크로드 분리를 위해 Availability Zone과 Host Aggregate를 제공한다. Availability Zone은 Production, Development, Testing, Disaster Recovery처럼 논리적 영역을 나누는 데 쓰인다. Host Aggregate는 GPU 서버, 고메모리 서버, SSD 스토리지 호스트처럼 특정 특성을 가진 호스트 그룹을 만드는 데 적합하다.

기능용도예시Availability Zone사용자에게 노출되는 논리적 배치 영역Production, Development, Testing, DRHost Aggregate관리자가 정책 기반으로 묶는 호스트 그룹GPU Servers, High-Memory Servers, SSD Hosts

대규모 Nova 운영 모범 사례

대규모 OpenStack 환경은 수백 개의 컴퓨트 노드와 수만 개의 VM, 여러 가용 영역으로 구성될 수 있다. 안정적으로 확장하려면 컨트롤러와 컴퓨트 역할을 분리하고, RabbitMQ 클러스터를 고가용성으로 운영하며, 데이터베이스 복제와 백업을 준비해야 한다.

영역모범 사례컨트롤 플레인controller와 compute 역할을 분리하고 API, Scheduler, Conductor를 고가용성으로 구성메시지 큐RabbitMQ 클러스터를 이중화하고 큐 지연을 모니터링데이터베이스복제, 백업, 연결 수, 쿼리 성능을 관리스케줄링필터와 Placement 성능을 튜닝하고 리소스 단편화를 정기적으로 점검스토리지워크로드 특성에 맞는 전용 스토리지 백엔드를 사용모니터링compute 서비스 상태, VM 상태, 마이그레이션 실패, 리소스 사용률을 관찰

일반적인 운영 문제와 대응

문제현상대응 방법리소스 단편화CPU와 메모리가 노드별로 불균등하게 남아 새 VM 배치가 어려워짐Host Aggregate 활용, 워크로드 밸런싱, 정기 용량 계획Scheduler 병목대규모 환경에서 VM 생성 요청이 지연됨필터 최적화, Placement 튜닝, 컨트롤러 확장하이퍼바이저 장애컴퓨트 호스트 장애로 실행 중인 VM 영향 발생Evacuation 절차, 공유 스토리지, HA 전략 수립

현대 클라우드 인프라에서 Nova의 역할

컨테이너와 Kubernetes가 널리 쓰이는 시대에도 Nova는 여전히 중요하다. 많은 엔터프라이즈 워크로드는 VM을 필요로 하고, 레거시 애플리케이션은 가상 머신 기반 운영에 의존한다. Kubernetes 클러스터 자체도 Nova가 프로비저닝한 VM 위에서 실행되는 경우가 많다.

정부, 통신, 금융, 연구기관, 엔터프라이즈 데이터센터의 프라이빗 클라우드에서 Nova는 여전히 컴퓨트 기반을 담당한다. VM 오케스트레이션이 필요한 하이브리드 클라우드 환경에서도 Nova의 역할은 크다.

결론

OpenStack Nova는 OpenStack 환경에서 가상 머신 관리를 가능하게 하는 컴퓨트 엔진이다. 분산 아키텍처, 지능형 스케줄링, 하이퍼바이저 연동, 인스턴스 생명주기 관리 기능을 통해 조직은 대규모 클라우드 인프라를 운영할 수 있다.

작은 프라이빗 클라우드를 구축하든 여러 지역에 걸쳐 수천 대의 VM을 운영하든, Nova의 구조와 동작 방식을 이해하는 것은 OpenStack을 성공적으로 배포하고 운영하기 위한 핵심 조건이다.

핵심 요약

Nova는 OpenStack의 Compute Service다. 가상 머신 생성부터 삭제까지 전체 생명주기를 관리한다. 핵심 구성요소는 Nova API, Scheduler, Conductor, Compute다. Glance, Neutron, Cinder, Keystone과 연동해 VM을 생성한다. KVM은 가장 널리 쓰이는 하이퍼바이저다. Live Migration, Availability Zone, Host Aggregate는 대규모 운영의 핵심 기능이다. 컨테이너 시대에도 Nova는 프라이빗 클라우드 컴퓨트 기반으로 중요하다.

댓글

0

댓글을 불러오는 중입니다.