최근 수정 시각 : 2023-04-22 03:06:18

Openstack

1. 개요2. 하드웨어 자원
2.1. 컨트롤러 노드 (Controller Node)2.2. 컴퓨트 노드 (Compute Node)
3. 구성 요소
3.1. Nova (Compute)3.2. Neutron (Networking)3.3. Keystone (Identity)3.4. Horizon (Dashboard)3.5. Glance (Image)3.6. Cinder (Block Storage)3.7. Swift (Object Storage)
4. 기타5. 외부 링크

1. 개요

클라우드 자원을 관리하고, 정의하고, 활용하기 위한 오픈 소스 프레임워크. 비영리 단체인 오픈스택 재단에서 운영 중이며 아파치 라이선스 2.0을 사용한다. 공식 홈페이지의 설명에 따르면 클라우드 인프라스트럭처를 위한 소프트웨어 컴포넌트의 집합이다. 말이 어렵지만 간단히 말해서 이 것 깔면 AWS나 Azure 같은 클라우드 서비스를 자체적으로 구축할 수 있다.

사용자가 요청할 때마다 가상 머신 등의 리소스를 공급하고 이를 운영, 유지하는 소프트웨어 패키지들의 모음이다. 오픈스택은 자원을 관리한다는 점에서 운영체제의 개념적인 정의를 공유하지만 어디까지나 클라우드 컴퓨팅이라는 맥락에서만 그러하다.

오픈스택은 서버, 스토리지, 네트워크, 심지어 어플리케이션 자원들의 클라우드까지도 제어하는 공통 플랫폼을 제공한다. 오픈스택은 웹 기반 인터페이스, 커맨드 라인 인터페이스, API를 사용해 관리할 수 있다. 하이퍼바이저, 스토리지 시스템, 네트워크 하드웨어와 소프트웨어 등 다양한 유형의 상용 또는 오픈 소스 하드웨어와 소프트웨어를 제어하며, 제조사 전용 자원 위에서 클라우드 관리 계층을 제공한다.

원래 Rackspace라는 서비스 업체와 NASA가 같이 만들기 시작했는데, 경쟁 상대였던 프로젝트들이 자사 프로덕트 특화(Cloudstack)라든가, 유료(VMware vSphere)라든가 하는 삽질을 거듭하는 중에 이쪽으로 사용자들이 유입이 되더니 어느새 업계 표준이 되어 있던 케이스. 대표적으로 카카오의 사내 클라우드 플랫폼이 오픈스택으로 구축되어 있다.

버전은 첫자리가 A, B, C, D 순으로 진행이 되며 각 6개월 마다 새로운 버전이 업데이트된다. 그리고 각 버전은 1년 정도만 업데이트가 이루어지며 그 이후는 버려진다.(EOL)

2. 하드웨어 자원

2.1. 컨트롤러 노드 (Controller Node)

컨트롤러 자체와 다른 공유 서비스를 관리하는 노드.

Identity 서비스(Keystone), 이미지 서비스(Glance), Compute 관리(Nova), 네트워킹 에이전트(Neutron), 관리용 대시보드(Horizon) 등을 실행한다. 서버 측 API 서비스를 관리하며, 구성 요소들의 요청을 조율하고 오픈스택 배포를 위한 주요 인터페이스 역할을 한다.

추가적으로 컨트롤러 노드에 블록 스토리지(Cinder), 오브젝트 스토리지(Swift), Orchestration(Heat), Telemetry(Ceilometer) 서비스를 실행할 수 있으며, 최소한 두 개의 네트워크 인터페이스(NIC)[1]가 필요하다. 하나는 물리 호스트 자체의 매니지먼트 네트워크, 다른 하나는 오픈스택 내부에서 가상 머신을 위해 사용할 VM 네트워크로 사용하는 것이 일반적이기 때문이다. 이 때 VM 네트워크가 될 NIC은 OS에서 IP를 부여하지 않은 Unnumbered 상태로 둔다.

2.2. 컴퓨트 노드 (Compute Node)

가상 머신에 컴퓨트 자원을 제공하는 노드. 오픈스택이 관리하는 가상 머신들은 이 노드에서 동작한다고 볼 수 있다.

가상머신 인스턴스 동작 시에는 하이퍼바이저 (Hypervisor)가 실행된다. 기본적으로 KVM 하이퍼바이저가 사용되지만그 밖의 다른 다양한 하이퍼바이저를 사용할 수도 있다.

또한 컴퓨트 노드는 인스턴스를 가상 네트워크에 연결하는 네트워킹 서비스 에이전트(Networking Service Agent)를 실행하며, Security Groups를 통하여 인스턴스에 방화벽 서비스를 제공한다. 예전 버전에서는 이 기능을 담당하는 네트워크 노드가 따로 존재했지만 Liberty 버전부터는 컴퓨트 노드가 이 기능을 수행하게 되면서 네트워크 노드는 사라지게 되었다.

3. 구성 요소

오픈스택은 핵심 프로젝트로 불리는 여러 개의 프로젝트들로 구성되어 있으며, 핵심 프로젝트들은 오픈스택 로고를 사용할 수 있으며 필수 테스트를 반드시 통과해야 한다. 간단히 말해서 대부분의 사람이 오픈스택 배포 환경에서 사용하는 것이 바로 핵심 프로젝트이다.

3.1. Nova (Compute)

CPU, 메모리, 디스크, 네트워크 인터페이스 등 가상 머신(VM)의 자원을 관리한다. IaaS(Infrastructure-as-a-Service)의 가장 중요한 부분으로써, 자동으로 컴퓨터 자원 풀을 관리하고 다양한 가상화 기술들을 사용할 수 있는 환경을 제공한다. 주요 모듈은 파이썬으로 제작되었으며, 어느 특정 하드웨어에 종속되지 않고 수평적으로 확장이 가능하도록 설계되었다.

3.2. Neutron (Networking)

가상 네트워크의 관리와 실제 네트워크와의 연결을 담당하는 소프트웨어

3.3. Keystone (Identity)

오픈스택에서 사용하는 여러 서비스들의 인증(Identity)을 관리한다. 이 때 사용하는 토큰은 Memcached라는 인 메모리 데이터베이스에 저장된다.

3.4. Horizon (Dashboard)

3.5. Glance (Image)

3.6. Cinder (Block Storage)

저장 시스템을 관리한다. 그 중에서도 블럭 단위로 읽고 쓰는 블럭 스토리지 시스템

3.7. Swift (Object Storage)

4. 기타

오픈스택을 편리하게 설치할 수 있도록 해 주는 툴로 Microstack(우분투), Packstack(CentOS)이 있다.

Microstack의 경우 우분투의 snap 패키지로 설치되며, 순정 오픈스택의 서비스들이 /etc 밑에 위치하는 반면 Microstack은 /var/snap/microstack/common/etc 밑에 위치한다. 이 때문에 순정 오픈스택을 접한 사람들은 오히려 혼동이 올 수 있다. 설치 및 설정은 대단히 쉽다. 설치에 필요한 명령줄은 몇줄 안되며 그 몇 줄을 차근차근 입력하면 되는데 가동 시작하면 여러 오류가 날 가능성은 있다. 2023년 4월 중순 현재까지도 베타버전이며 옛날 오픈스택만 지원한다. 즉 너무 방치된 설치본.

Packstack은 RHEL이나 CentOS를 위한 작업 간편화 툴이다.

5. 외부 링크



[1] 쉽게 말해 랜카드가 두 개 이상