[오픈스택 클라우드 개념] 컴퓨트 서비스(Nova)

blog post 

 

이번 포스팅에서는 오픈스택에서 가장 핵심 기술인 Nova 컴퓨트 서비스에 대해 알아보도록 하겠습니다.

 

 

 

1. 컴퓨트 서비스란?

 

오픈스택에서 컴퓨트 서비스는 가상머신(VM, 혹은 인스턴스라 부름)이 필요한 자원들을 할당하고 관리합니다. 여기에서 자원이란 주로 호스트 시스템으로 부터 가상화된 메모리, CPU, 디스크, 네트워크 등을 의미하는데, Nova라고 불리는 오픈스택 컴퓨트 서비스가 이러한 가상화된 자원을 관리하고 VM에 할당하는 역할을 담당합니다.

 

물론 좀 더 정확히는 실제 자원을 가상화 하는 작업은 물리 자원을 가지고 있는 노드의 하이퍼바이저가 담당합니다. (가상화와 관련해서는 해당 포스트를 참고하시기 바랍니다. [바로가기]) 이러한 하이퍼바이저와 Nova 컴퓨트 서비스가 상호작용하며 가상머신, 자원 등을 관리합니다.

 

 

 

2. 고려사항

 

Nova 컴퓨트 서비스를 구축하기 위해서는 이에 앞서 몇가지 고려해야 할 사항들이 있습니다.

 

  • CPU: 컴퓨트 서비스가 동작할 호스트 시스템의 CPU가 기본적으로 자체 하드웨어 가상화를 지원해야 합니다.
  • 하이퍼바이저: 가상화 포스팅에서 설명한 것 처럼 리눅스는 다양한 하이퍼바이저를 지원하고 있습니다. Nova 서비스가 사용할 하이퍼바이저를 적절하게 선택해야 합니다. 오픈스택에서 기본적으로 사용하는 하이퍼바이저는 KVM/QEMU입니다.
  • 저장공간: 컴퓨트 서비스를 통해 인스턴스가 생성되면서 호스트 시스템의 많은 디스크 공간을 차지할 수 있습니다. 처음 하드웨어 구축 단계부터 사용할 컴퓨트 노드의 공간을 넉넉하게 할당해야 합니다. 물론 블록 스토리지 노드를 구축하여 VM 디스크를 별도의 노드로 분리하여 저장하는 방법도 고려해 볼 수 있습니다. 별도의 볼륨 스토리지를 사용하지 않는다면 흔히 이페머럴 디스크(Ephemeral Disk)라고 불리는 임시 디스크가 인스턴스에 연결 되며, 그 디스크 이미지는 컴퓨트 노드에 생성됩니다. 
  • 오버커밋: 인스턴스에 할당하는 CPU 및 메모리의 경우, 물리 CPU 코어나 메모리가 1:1로 할당되는 것이 아니라 기존 물리 성능 대비 성능을 축소하여 할당하게 됩니다. 이 부분은 굉장히 중요합니다. 왜냐하면 해당 인스턴스의 성능을 좌우하는 핵심 부분이기 때문입니다. 기본적으로 아래와 같이 오버커밋 됨을 고려해야 합니다.

    - CPU: 16:1
    - Memory: 1.5:1

    이 의미는 가령 인스턴스 생성시 CPU 코어를 1개 할당하는 경우, 해당 인스턴스는 기존 물리 코어 대비 1/16로 하락된 CPU 성능을 보일 수 있다는 의미입니다. 메모리 역시 마찬가지입니다. 물론 Nova서비스를 통해 이는 조절 가능합니다. 구축할 인스턴스가 특정 서버 역할을 하는 경우, 특히 오버커밋 부분이 반드시 고려되어야 합니다.
  • 네트워킹: 인스턴스의 네트워킹 기능의 경우, 보통 Nova와 Neutron 네트워크 서비스가 연계하여 기능을 제공합니다. 고려해야 할 부분이 많은데, 이 부분은 추후 Neutron 네트워크 서비스와 함께 다루도록 하겠습니다.




 

3. Nova 컴포넌트 구조

 

Nova 컴포넌트에서 동작하는 서비스의 구조는 다음과 같습니다. 단, 아래 그림은 Nova 컴포넌트의 가장 기본적인 구성임을 참고하시기 바랍니다.

 

Nova 컴포넌트에서 동작하는 서비스 구성도

 

  • nova-api 서비스: 최종 사용자의 API 콜을 통해 서비스 간 질의 응답을 담당합니다. 주로 Openstack의 다른 서비스 API 와 통신하며, 외부 Amazon EC2와 같은 서비스와도 연계할 수 있습니다.
  • nova-compute 서비스: 가상화 API를 이용하여 가상 머신 인스턴스를 생성하고 종료하는 역할을 담당합니다. 예를 들어 아래와 같은 서비스들을 사용하여 명령을 수행합니다.

    - XenServer/XCP에서의 XenAPI
    - KVM 또는 QEMU에서의 libvirt
    - VMware에서의 VMwareAPI

  • nova-scheduler 서비스: 컴퓨트 호스트가 다수인 경우, 큐를 통해 받은 메시지를 어떤 호스트에서 컴퓨트 명령을 수행할 것인지를 결정합니다.
  • nova-conductor 모듈: nova-compute 서비스와 데이터베이스 간 상호작용을 담당합니다. 즉, DB 관련 작업은 이 모듈이 담당합니다.
  • nova-cert 모듈: X509 인증서에 대한 Nova Cert 서비스를 제공하는 서버 데몬입니다.
  • nova-consoleauth 데몬: 콘솔 프록시를 제공하는 사용자에 대한 인증 토큰을 제공합니다. 
  • Guest Agent: 실제 컴퓨트 시스템 상에 구축된 VM(인스턴스)입니다. 이는 호스트 시스템에서 Nova-Compute -> Hypervisor에 의해 제어됩니다.

 

이 밖에도 인스턴스에서의 메타데이터 요청을 처리하는 nova-api-metadata, VNC 콘솔화면을 제공하는 nova-novncproxy, 네트워크 기능을 담당하는 nova-network 등, 다양한 nova 관련 서비스 및 모듈들이 있습니다.

 

TAGS.

Comments