Overview
오늘은 Openstack Nova에 개념과 구조에 대하여 공부하려고 합니다.
Nova란?
Nova는 오픈 스택 프로젝트 중 하나이며, compute instance(가상 서버), provisioning 서비스를 제공한다.
compute instance(가상 서버)
가상 서버란 하나의 물리적 서버에서 여러 개의 애플리케이션,
운영체제(os)들이 제각기 서로 영향을 미치지 않으면서 사용되는 서버를 뜻합니다.
(가상 서버=가상 머신=VM)
provisioning(프로비저닝)
사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 프로비저닝이라고 합니다.
쉽게 말해서, 서비스를 제공하기 위해, 네트워크, 저장공간 그리고 웹앱 서비스 등을 제공하는데, 서비스 제공하기 전에 준비하는 단계를 뜻합니다.
Nova는 기본적으로 가상 머신의 생성과 Ironic을 통한 베어메탈 서버의 생성을 지원하고,
제한적이지만 시스템 Container도 지원합니다.
Ironic을 통한 베어메탈 서버의 생성
베어메탈 서버를 Ironic을 통해서 생성한다고 했는데 Ironic이란 무엇일까요?
Ironic이란 가상 머신 대신 베어메탈 머신을 준비시키는 오픈스택 프로젝트입니다.
베어메탈의 하이버바이저 API이자 베어메탈 하이퍼바이저와 상호 작용하는 플러그인들의 집합으로 생각할 수 있습니다.
베어메탈은 어떤 소프트웨어도 설치되어 있지 않은 하드웨어를 의미합니다.
즉, 베어메탈 서버는 베어 메탈 방식으로, 하드웨어 위에 하이퍼바이저 OS 설치 없이 유저가 설치하고 싶은 OS를 직접 하드웨어 위에 설치하는 방식입니다.
베어메탈 호스팅은 하이버파이저를 사용하지 않습니다. CPU와 메모리를 아무와도 공유하지 않기 때문에 더 빠르고 일관성 있는 안정정인 성능을 얻을 수 있습니다. 자신만의 소프트웨어를 설치할 수도 있는데, 일부 기업은 이 때문에 베어메탈 호스팅을 이용하기도 합니다.
- 베어메탈 호스팅 : 호스팅 업체에서 제공하는 전용 서버를 사용해 시스템을 구축하는 것을 말합니다.
- 장점 : 서버에 대한 모든 권한을 가질 수 있고 서버의 모든 성능을 사용할 수 있으며 독립적으로 사용하기 때문에 웹 호스팅에 비해 보안 측면에서도 더 유리한 면이 있습니다.
- 단점 : 호스팅 서비스임에도 초기 설치 기간이 오래 걸리고 비용도 많이 듭니다. 그래서 호스팅을 받기 보다는 직접 상면(장비나 설비를 설치할 수 있는 공간)을 임대하여 서버를 직접 구축하는 것이 더 유리하기도 합니다.
Container
컨테이너는 갑자기 등장한 가상화 기술이 아닙니다. 리눅스 기반 시스템에서 프로세스 간 격리를 위해 사용하던 기술들을 조합하여 발전시킨 것이라고 볼 수 있습니다.컨테이너는 하드웨어의 가상화를 제공하는 VM과는 달리, 유저 공간(user space)의 추상화를 통해 운영체제 레벨의 가상화를 제공합니다.
컨테이너란 호스트 OS상에 논리적인 구획(컨테이너)을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것입니다.
호스트 OS의 리소스를 논리적으로 분리시키고, 여러 개의 컨테이너가 공유하여 사용합니다.
VM과 비교했을 때 컨테이너는 하이퍼바이저와 게스트 OS가 필요하지 않으므로 더 가볍습니다. 그리고 컨테이너에는 OS가 포함되지 않기 때문에 크기가 수십 MB에 불과하고, 운영체제 부팅이 필요 없으므로 서비스를 시작하는 시간도 짧습니다.
(현재 가장 많이 널리 사용되고 있는 오픈소스 컨테이너 형식은 Docker입니다.)
Nova는 리눅스 서버 상에서 여러 개의 데몬으로 움직이며 서비스를 제공합니다.
데몬(daemon)
멀티태스킹 운영 체제에서 데몬은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말합니다. 다른 운영체제에서는 시스템 프로세스라고 합니다.
데몬의 동작 방식을 이해하기 쉽게 예를 들어 설명해보겠습니다.
메일 서버는 언제 도착하고 나갈 지 모르기에 서버 관리자가 항시 대기할 수는 없는데 메일 서버 프로그램이 데몬으로 항시 실행되고 있다면 원할한 운영이 가능할 것입니다.
nova가 기본적인 서비스를 하기 위해 필요한 최소의 오픈스택 서비스
- Keystone : ID를 발급하고 인증 서비스를 제공 합니다.
- Glance : 컴퓨트 이미지 리포지토리를 제공. 모든 컴퓨트 인스턴스는 Glance 이미지로 생성됩니다.
- Neutron : 컴퓨트 인스턴스가 사용하는 가상 네트워크와 물리적 네트워크를 제공합니다.
Nova api
Nova의 모든 사용자 기능은 REST API를 통해서 제공되고 있으며, 이 기능을 사용하여 더 복잡한 로직을 만들거나 NOVA 서비스를 자동화 할 수 있습니다.
API Versions
시간이 지남에 따라 사용자에게 새로운 기능을 제공하기 이해 Nova API는 버전 관리를 지원합니다. 노바에서 버전은 아래와 같은 형식으로 릴리즈 합니다.
{major}.{minor}.{patch}
ex) 2.0.3
이러한 버전 번호는 다음과 같은 지침으로 구성됩니다.
- Major Version : Nova에 대한 중대한 아키텍쳐 변경과 역호환성을 깰 수 있는 중요한 변경이 있을 때만 변경이 된다.
- Minor Version : minor version이 증가하면 새로운 기능이나 기존 기능의 향상을 의미한다.
- Patch Version : 버전 번호에 대한 가장 일반적인 변경 사항이며 버그 수정 또는 매우 사소한 방식으로만 기능에 영향을 미치는 기타 변경 사항을 나타낸다.
Block Device Mapping
Nova는 클라우드 인스턴스에 노출될 수 있는 블록 디바이스 개념을 갖고 있습니다.
블록 디바이스란
블록 디바이스는 바이트 또는 비트(블록) 단위로 순차적으로 데이터를 이동시키는 스토리지 디바이스입니다. 이러한 디바이스는 임의 엑세스를 지원하고 일반적으로 버퍼 I/O를 사용합니다.
블록 디바이스는 컴퓨터에 물리적으로 장착될 수 있고 그렇지 않은 경우 컴퓨터에 물리적으로 장착된 것처럼 임의 액세스가 가능합니다.
블록 디바이스 매핑
블록 디바이스 매핑은 인스턴스가 가지고 있는 모든 블록 장치에 대한 데이터를 구성하고 유지하는 방법입니다.
'Openstack' 카테고리의 다른 글
Openstack Keystone이란? (identity) (0) | 2022.08.08 |
---|---|
Openstack Glance란? (image) (0) | 2022.08.08 |
Openstack 배치 서비스 Placement란? (0) | 2022.08.08 |
Openstack Neutron이란? (network) (0) | 2022.08.08 |
Openstack이란? (0) | 2022.05.11 |