오픈스택(OpenStack) 주요 컴포넌트: Nova (Compute)

030·2025년 7월 24일

OpenStack

목록 보기
4/6

Nova 란?

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


출처 - OpenStack Services Nova image

OpenStack 구성 요소


출처 - OpenStack 개념적 아키텍처

Nova 아키텍처


출처 - OpenStack Documentation: Nova System Architecture image

Nova와 상호 작용하는 서비스

  • Keystone (Identity): API 요청에 대한 인증 처리
  • Placement: 실시간 리소스 재고 추적 및 최적 호스트 선택
  • Glance (Image): VM 부팅에 필요한 OS 이미지 제공
  • Cinder (Block Storage): VM에 영구적인 블록 스토리지(볼륨) 연결
  • Neutron (Networking): VM에 가상 네트워크 연결 및 IP 할당
  • Horizon (Dashboard): 사용자 및 관리자를 위한 웹 인터페이스

Nova의 주요 구성 요소

OpenStack 최소 패키지 2025.1 (Epoxy) 기준

nova-api

  • 역할: Nova 서비스의 API 요청 수신 서버
  • 사용자와 다른 오픈스택 서비스로부터의 모든 API 요청을 수신하고 검증
  • Keystone을 통해 검증을 수행

nova-scheduler

  • 역할: 어떤 컴퓨트 노드(호스트)에서 실행할지 결정
  • VM 생성 요청을 받으면, Placement를 통해 각 컴퓨트 노드의 리소스 사용량을 확인하고 가장 적합한 컴퓨트 노드(호스트)를 결정

nova-compute

  • 역할: 컴퓨트 노드에서 실제 작업을 수행
  • Glance에서 OS 이미지를 가져와 부팅을 수행
  • Cinder를 통해 볼륨(디스크)을 연결
  • 하이퍼바이저와 직접 통신하여 VM의 생성, 수정, 삭제 등의 생명 주기 관리 작업을 수행

nova-conductor

  • 역할: 데이터베이스 접근을 대행하는 안전한 중개자
  • nova-compute가 데이터베이스에 직접 접근하지 않도록 중간에서 요청을 처리

nova-api-metadata

  • 역할: 인스턴스의 메타데이터 정보 제공
  • 클라우드 내에서 실행 중인 VM이 자신의 IP 주소, 호스트 이름 등의 정보를 조회할 때 사용

nova-novncproxy

  • 실행 중인 인스턴스에 대해 VNC(Virtual Network Computing) 연결을 제공하는 프록시
  • 웹 브라우저 기반의 noVNC 클라이언트를 지원

nova-spicehtml5proxy

  • 실행 중인 인스턴스에 SPICE 프로토콜을 연결을 제공하는 프록시
  • 브라우저 기반의 HTML5 클라이언트를 지원

💡SPICE (Simple Protocol for Independent Computing Environments) 프로토콜이란?
: 가상 머신에 원격으로 접속하기 위한 고성능 원격 디스플레이 프로토콜.
쉽게 말해, SPICE는 VNC처럼 콘솔 접속을 제공하지만, 고화질, 오디오, USB 지원 등 더 풍부한 기능을 제공한다.


출처 - OpenStack 논리적 아키텍처

가상머신 생성 과정

  1. 요청 접수

    사용자가 대시보드(Horizon)에서 VM 생성을 요청한다.

  2. 호스트 요청

    요청을 받은 nova-conductornova-scheduler에게 최적의 컴퓨트 노드를 찾아 달라고 요청한다.

  3. 호스트 선택

    nova-scheduler 는 Placement와 통신하여 현재 리소스 사용량을 조회하고 최적의 호스트 노드를 선택한다.

  4. 생성 명령

    결정된 컴퓨트 노드의 nova-compute에게 VM 생성 명령을 전달한다.

  5. VM 생성

    nova-compute가 다른 오픈스택 서비스들과 통신하여 네트워크, 스토리지, OS 이미지를 가져오고, 하이퍼바이저를 제어하여 실제 VM을 생성하고 실행시킨다.

  6. 상태 기록 (DB)

    nova-conductor가 VM의 생성 과정과 상태를 데이터베이스에 업데이트한다.

주요 기능

1. 가상 머신(인스턴스) 관리

nova의 가장 근본적인 역할이다.

  • 생성, 시작, 재시작, 중지, 삭제: VM에 대한 기본적인 제어 작업을 수행
  • 스냅샷 생성: 실행 중인 VM의 현재 상태를 이미지(스냅샷)으로 만들어 저장
    • 이를 통해 백업하거나 동일한 상태의 VM을 복제할 수 있음
  • 리사이즈(Resize): 실행 중인 VM의 사양(CPU, RAM 등)을 더 높히거나 낮은 사양으로 변경
  • 마이그레이션(Migration): VM을 서비스 중단 없이 한 컴퓨트 노드에서 다른 컴퓨트 노드로 이전

2. 리소스 스케줄링

단순히 VM을 관리하는 것을 넘어, 자원을 효율적으로 분배한다.

  • 최적의 호스트 선택: VM 생성 요청이 들어오면, nova-scheduler가 가용 리소스를 고려하여 가장 적합한 컴퓨트 노드로 자동 선택
  • 프로젝트 별 할당량 관리: 사용자나 프로젝트가 무분별하게 자원을 사용하는 것을 막기 위해 생성할 수 있는 VM 수, CPU 코어 수, RAM 용량 등을 제한

3. 사용자 접근 제공

사용자가 생성된 VM에 접근할 수 있는 통로를 제공한다.

  • API 엔드포인트 제공: nova-api를 통해 사용자와 관리자가 VM을 제어할 수 있는 API를 제공
  • 원격 콘솔 접근: nova-novncproxynova-spicehtml5proxy를 통해 브라우저에서 직접 VM의 콘솔 화면에 접속할 수 있도록 지원

Nova의 대규모 배포를 위한 Cells v2 아키텍처

Cells v2란?

수천, 수만 개의 컴퓨트 노드들을 효율적으로 관리하고, 성능 저하 없이 확장하기 위해 고안된 아키텍처

즉, 거대한 클라우드 인프라를 셀(Cell)이라는 여러 개의 독립적인 구역으로 나누어 관리하는 방식이다.

Cells v2 구조

  1. 계층 구조와 통신 격리

    • API 셀 (Cell 0): 모든 API 요청을 받는 곳
    • 자식 셀 (Child Cells): 컴퓨트 노드와 VM들이 속한 독립 구역
    • 슈퍼 컨덕터 (Super Conductor): API 셀에 위치하며, 각 셀에 작업을 분배하고 조율하는 특별한 nova-conductor

    위 구조를 통해 어떤 셀에 속한 노드에 고장이 생겨도 다른 셀에 속한 노드에게는 영향을 미치지 않게 된다.

  2. 3개의 분리된 데이터베이스

    • API 데이터베이스: 어떤 VM이 어느 셀에 있는지 전역 위치 정보를 관리
    • 셀 데이터베이스: 각 셀별로 VM의 사양, 상태 등 실질적인 모든 상세 정보를 저장
    • cell0 데이터베이스: 스케줄링에 실패하거나 시작도 못하고 끝난 VM들의 기록을 보관 (VM 묘지)

단일 셀(Single-Cell) 배포 방식


출처 - OpenStack Documentation: Single cell image

기본적인 방식으로, 모든 컴퓨트 노드와 서비스들이 하나의 메시지큐와 하나의 cell0 데이터베이스를 공유하는 단순한 구조이다.

모든 서비스가 중앙 집중화된 구조에서, 클라우드 규모가 커지면 중앙 메시지 큐와 데이터베이스에 병목 현상이 발생하여 성능 저하가 발생할 수 있다.

다중 셀(Multi-Cell) 배포 방식


출처 - OpenStack Documentation: Multiple cells image

대규모 오픈스택 환경의 확장성과 안정성을 위해 전체 인프라를 여러 개의 독립적인 셀로 분할하는 방식이다.

각 셀은 자신만의 메시지 큐와 데이터베이스를 가지며, 이를 통해 서비스 부하가 각 셀로 분산 된다.

중앙 병목 현상 없이 수천, 수만 개의 컴퓨트 노드까지 수평적으로 확장할 수 있게 된다.

하나의 셀에 문제가 발생해도 다른 셀이 영향을 주지 않아 전체 클라우드의 안정성이 높아진다.

참고자료

0개의 댓글