가상머신(VM)의 생명 주기 관리 서비스

출처 - OpenStack Services Nova image

출처 - OpenStack 개념적 아키텍처

출처 - OpenStack Documentation: Nova System Architecture image
OpenStack 최소 패키지 2025.1 (Epoxy) 기준
nova-api
Keystone을 통해 검증을 수행nova-scheduler
Placement를 통해 각 컴퓨트 노드의 리소스 사용량을 확인하고 가장 적합한 컴퓨트 노드(호스트)를 결정nova-compute
Glance에서 OS 이미지를 가져와 부팅을 수행Cinder를 통해 볼륨(디스크)을 연결nova-conductor
nova-api-metadata
nova-novncproxy
nova-spicehtml5proxy
💡SPICE (Simple Protocol for Independent Computing Environments) 프로토콜이란?
: 가상 머신에 원격으로 접속하기 위한 고성능 원격 디스플레이 프로토콜.
쉽게 말해, SPICE는 VNC처럼 콘솔 접속을 제공하지만, 고화질, 오디오, USB 지원 등 더 풍부한 기능을 제공한다.

출처 - OpenStack 논리적 아키텍처

요청 접수
사용자가 대시보드(Horizon)에서 VM 생성을 요청한다.
호스트 요청
요청을 받은 nova-conductor가 nova-scheduler에게 최적의 컴퓨트 노드를 찾아 달라고 요청한다.
호스트 선택
nova-scheduler 는 Placement와 통신하여 현재 리소스 사용량을 조회하고 최적의 호스트 노드를 선택한다.
생성 명령
결정된 컴퓨트 노드의 nova-compute에게 VM 생성 명령을 전달한다.
VM 생성
nova-compute가 다른 오픈스택 서비스들과 통신하여 네트워크, 스토리지, OS 이미지를 가져오고, 하이퍼바이저를 제어하여 실제 VM을 생성하고 실행시킨다.
상태 기록 (DB)
nova-conductor가 VM의 생성 과정과 상태를 데이터베이스에 업데이트한다.
nova의 가장 근본적인 역할이다.
단순히 VM을 관리하는 것을 넘어, 자원을 효율적으로 분배한다.
nova-scheduler가 가용 리소스를 고려하여 가장 적합한 컴퓨트 노드로 자동 선택사용자가 생성된 VM에 접근할 수 있는 통로를 제공한다.
nova-api를 통해 사용자와 관리자가 VM을 제어할 수 있는 API를 제공nova-novncproxy나 nova-spicehtml5proxy를 통해 브라우저에서 직접 VM의 콘솔 화면에 접속할 수 있도록 지원수천, 수만 개의 컴퓨트 노드들을 효율적으로 관리하고, 성능 저하 없이 확장하기 위해 고안된 아키텍처
즉, 거대한 클라우드 인프라를 셀(Cell)이라는 여러 개의 독립적인 구역으로 나누어 관리하는 방식이다.
계층 구조와 통신 격리
nova-conductor위 구조를 통해 어떤 셀에 속한 노드에 고장이 생겨도 다른 셀에 속한 노드에게는 영향을 미치지 않게 된다.
3개의 분리된 데이터베이스

출처 - OpenStack Documentation: Single cell image
기본적인 방식으로, 모든 컴퓨트 노드와 서비스들이 하나의 메시지큐와 하나의 cell0 데이터베이스를 공유하는 단순한 구조이다.
모든 서비스가 중앙 집중화된 구조에서, 클라우드 규모가 커지면 중앙 메시지 큐와 데이터베이스에 병목 현상이 발생하여 성능 저하가 발생할 수 있다.

출처 - OpenStack Documentation: Multiple cells image
대규모 오픈스택 환경의 확장성과 안정성을 위해 전체 인프라를 여러 개의 독립적인 셀로 분할하는 방식이다.
각 셀은 자신만의 메시지 큐와 데이터베이스를 가지며, 이를 통해 서비스 부하가 각 셀로 분산 된다.
중앙 병목 현상 없이 수천, 수만 개의 컴퓨트 노드까지 수평적으로 확장할 수 있게 된다.
하나의 셀에 문제가 발생해도 다른 셀이 영향을 주지 않아 전체 클라우드의 안정성이 높아진다.