들어가며
AWS, Azure, GCP 와 같은 클라우드 서비스는 어떻게 만들어질까? 만일, 어떤 기업이 앞서 언급한 퍼블릭 클라우드 3사의 서비스를 사용하지 않고 자신들이 가지고 있는 리소스를 활용해 클라우드 서비스를 만드려고 한다면 어떤 기술을 사용해야할까?
Openstack이 이같은 질문에 대답이 될 수 있을 것이다.(퍼블릭 클라우드 3사는 클라우드를 위한 자체적인 기술스택을 가지고 있다.) 오픈스택은 퍼블릭/프라이빗 클라우드를 구축/관리하는 오픈소스 플랫폼이다. 이번 포스팅에서는 오픈스택의 간단한 개념과 아키택처에 대해 이야기해보려고 한다.
Openstack의 이해
역사
오픈스택 프로젝트의 시작은 NASA에서 부터 시작된다. 2010년 7월 당시 랙스페이스(Rackspace)라는 웹 호스팅 기업과 함께 오픈 소스 형태로 프로젝트를 시작하게 되었고 지금까지 프로젝트가 이어져 오픈소스 클라우드 진영의 사실상 표준(de facto)으로 자리잡고 있다.
오픈스택은 6개월마다 새로운 버전이 업데이트 되고 1년 정도의 업데이트 이후 버려진다. 각 버전의 첫자리는 알파펫 순서(A,B,C...)로 명명된다. 2023년 3월 22일 기준 Antelope 버전이 릴리즈되어있다.
오픈스택의 주요 특징
- 서버, 스토리지, 네트워크와 같은 자원을 제어하고 운영하는 클라우드 OS
- 서비스형 Iaas를 쉽게 구축할 수 있는 플랫폼으로 웹 대시보드(Horizen, Skyline)등을 통해 필요한 기능을 제어하고 자원을 모니터링할 수 있다.
- 활성화된 오픈소스 생태계를 구축하고 있어 많은 개발자들의 유지보수를 통해 안정적인 시스템을 제공한다.
결론적으로, 오픈소스는 다음과 같이 정의할 수 있다.
컴퓨터 하드웨어 위에 인프라를 서비스로 제공하여 IaaS (Infrastructure as a Service)를 구축하게 해주는 오픈 소스 플랫폼
오픈스택의 구성요소
오픈스택은 클라우드 서비스를 위한 환경을 만들기 위한 여러 구성요소로 이루어져 있다. 이같은 서비스들은 서로 의존/상호작용하며 클라우드 인프라 자원을 사용자에게 제공한다.
오픈스택을 이루는 핵심적인 서비스에 대해 정리해보면 다음과 같다.
- Core components: Nova, Neutron, Cinder, Swift, Glance, Keystone
- Optional components : Horizon, Skyline, Heat, Ceilometer, ...
핵심 구성요소(Core components) 훑어보기
Nova(Compute Service)
Iaas 구축에 필요한 컴퓨팅 인스턴스(VM)을 생성하고 관리하기 위한 서비스이다. VM 생성, IP 연결 등의 작업을 실행하고 Compute 자원을 관리하는 역할을 한다.
여러 모듈과 상호작용을 하게 되는데, Keystone을 통해 인증, 디스크와 서버의 이미지는 Glance, 그리고 Horizen, Skyline과 같은 대시보드를 통해 상호작용하거나, CLI 인터페이스를 통해 제어할 수 있다.
Nova-api, Scheduler, Compute, Conductor 등 다양한 요소들로 구성되어 있다.
- Nova-api : 사용자에게 API에 대한 엔드포인트를 제공
- Scheduler : VM을 만들때 실제로 연결된 여러 물리 서버 중 적절한 공간을 찾아 스케쥴링 해주는 요소
- Compute : Hypervisor을 이용해 VM의 인스턴스를 생성하고 삭제
- Conductor : VM에 대한 상태 및 정보를 저장하기 위한 데이터 베이스를 관리하는 모듈
Neutron(Network Service)
Neutron은 네트워크에 관련된 서비스를 제공한다. 논리적/물리적 네트워크 인프라를 모두 관리하는데 물리적으로 연결된 네트워크에서 여러 네트워크로 논리적으로 분리하거나 또는 여러 물리 네트워크를 하나의 논리 네트워크로 묶는 것도 가능하다.
- Neutron-server : 사용자에게 API에 대한 엔드포인트를 제공
- Plugin : 네트워크를 생성하고, IP 주소를 할당하는 기능을 수행
Glance(Image Service)
Glance는 가상머신의 이미지를 CRUD 할 수 있도록 하는 서비스이다. 이미지 서비스는 가상머신 이미지 메타데이터를 통해 실제 이미지를 가져올 수 있게 하는 REST API를 제공한다. Glance 서비스를 통해 가상 머신의 이미지는 파일시스템, Openstack의 오브젝트 스토리지 등 다양한 위치에 놓여 사용가능하도록 저장할 수 있다.
- Glance-api : 사용자에게 API 엔드포인트를 제공
- Glance-registry : 이미지에 대한 메타데이터를 저장하고 검색하는 기능을 제공
- Image-storage : 오브젝트 스토리지, 파일시스템, 웹 프로토콜 등 을 활용해 이미지를 저장할 수 있는 원격 저장소를 지원
Cinder(Block Storge)
Cinder는 가상 머신에 영속적(persistent) 블록 스토리지를 제공한다. 가상 머신을 생성할 때 스토리지를 연결하거나 이미 생성된 가상머신에 추가로 스토리지를 연결할 수 있으며, 기존의 연결을 해제하고 다른 가성 머신에 연갈하는 것도 가능하다. 또한 스토리지의 스냅샷과 볼륨 타입을 관리할 수 있다.
Swift(Object Storage)
AWS의 s3와 같은 오브젝트 스토리지를 위한 서비스이다. Key를 이용해 데이터를 검색/저장하게 된다. 오브젝트는 여러 분산된 서버의 디스크에 저장이된다. 오픈스택이 제공하는 소프트웨어 클러스터를 통해 데이터의 복제와 무결정을 보장한다. 단위가 정해지지 않은 오브젝트 형식의 데이터는 구조화 되지 않은 많은 양의 데이터를 관리하는데 용이하다.
Keystone(Identity Service)
Keystone은 오픈스택의 인증/인가와 관련된 서비스를 제공하는 컴포넌트이다. Keystone을 통해 발급받은 인증 토큰을 통해 오픈스택의 전체 컴포넌트에 접근할 수 있다. Keystone은 이러한 토큰을 통해 접근할 수 있는 모듈 범위를 지정하고 기간을 설정한다. 또한, 사용자에게 프로젝트 그룹내에서 역할을 지정해 프로젝트 내에서 사용자가 할 수 있는 동작을 제어한다.
마치며
현재 입사한 기업에서 오픈스택을 통해 클라우드 서비스를 개발하는 업무를 맡게되어 오픈스택에 대한 개념을 정리하고 싶었다. 앞으로
으로 devstack을 통해 오픈스택을 설치해보고 실습하는 과정에 대한 포스팅도 진행하면서, 알게된 내용들에 대해 정리해보려고 한다.
참고자료
클라우드 플랫폼 오픈스택 구성도 및 활용사례 정리 - TECH 블로그피디아
'Computer Science > Openstack' 카테고리의 다른 글
2023 컨트리뷰션 아카데미 소개 및 후기 (feat. Openstack) (0) | 2023.12.09 |
---|