Openstack
1. 개요
클라우드 자원을 관리하고, 정의하고, 활용하기 위한 프레임워크. 비영리 단체인 오픈스택 재단에서 운영 중이며 아파치 라이선스 2.0을 사용한다.
현재 클라우드 시스템을 만드는 가장 표준적인 운영 체제이다. 아마존 웹 서비스와 유사한 형태로 사용자가 요청할 때마다 가상 머신 등의 리소스를 공급하고 이를 운영, 유지하는 시스템을 운영체제라고 할 때, 현재 가장 성공적으로 사실상의 기술 표준으로 인정 받고 있는 클라우드 운영체제라고 할 수 있다. 다만, 오픈스택은 전통적인 운영체제처럼 수백 대의 서버를 부팅 디스크에서 구동하여 운영체제를 올려 놓은 것과는 다르다. 오픈스택은 자원을 관리한다는 점에서 운영체제의 특성을 공유하지만 어디까지나 클라우드 컴퓨팅이라는 맥락에서만 그러하다.
오픈스택은 서버, 스토리지, 네트워크, 심지어 어플리케이션 자원들의 클라우드까지도 제어하는 공통 플랫폼을 제공한다. 오픈스택은 웹 기반 인터페이스, 커맨드 라인 인터페이스, API를 사용해 관리할 수 있다. 하이퍼바이저, 스토리지 시스템, 네트워크 하드웨어와 소프트웨어 등 다양한 유형의 상용 또는 오픈 소스 하드웨어와 소프트웨어를 제어하며, 제조사 전용 자원 위에서 클라우드 관리 계층을 제공한다.
원래 Rackspace라는 서비스 업체와 NASA가 같이 만들기 시작했는데, 경쟁 상대였던 프로젝트들이 자사 프로덕트 특화(Cloudstack)라든가, 유료(VMware vSphere)라든가 하는 삽질을 거듭한 끝에 개발자가 유입이 되더니 어느새 업계 표준이 되어 있던 케이스. 대표적으로 카카오의 사내 클라우드 플랫폼이 오픈스택으로 구축되어 있다.
버전은 첫자리가 A, B, C, D 순으로 진행이 되며 각 6개월 마다 새로운 버전이 업데이트된다. 그리고 각 버전은 1년 정도만 업데이트가 이루어지며 그 이후는 버려진다.(EOL)
SW 변방이라고?…오픈스택 뒤흔든 '중국의 힘'
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 밑에 위치한다. 이 때문에 순정 오픈스택을 접한 사람들은 오히려 혼동이 올 수 있다.
5. 외부 링크
[1] 쉽게 말해 랜카드가 두 개 이상