OpenStack

선택한 이유

  • 가장 대중적인 클라우드 프로젝트라서 지식을 쉽게 접할 수 있다.

  • 프로젝트 업데이트 및 유지보수가 활발하게 이루어지고 있다.

  • 오픈소스 프로젝트로 서비스 구축에 비용이 필요하지 않다.

OpenStack 개요

OpenStack이란 클라우드를 구축하고 관리하는 오픈소스 플랫폼으로, OpenStack이 제공하는 다양한 서비스를 조합하여 사용자의 목적에 맞는 클라우드 컴퓨팅 환경을 구성할 수 있도록 한다.

OpenStack을 사용하는 기업

  1. 국내

    kakao

    사내 VM 제공을 위해 사용

    NHN

    퍼블릭 클라우드 제공을 위해 사용

    KT

  2. 해외

  • Rackspace

    openstack을 설립

  • Redhat

    OpenStack 서비스 제공을 비지니스 모델로 삼기 위해 많은 기여

최소 구성 요소

Keystone: Identify
  • 모든 컴포넌트의 인증을 담당하며, 사용자의 권한을 관리한다.

  • LDAP 등을 사용하여 사용자의 중앙 디렉토리 기능을 담당한다.

참고

LDAP는 뭔가요?

Lightweight Directory Access Protocol의 약자이다. 이름 기반으로 객체를 조회하고 변경할 수 있게 하는 통신규약이다. 이름과 비밀번호로 인증하고 권한과 같은 값을 조회할 수 있어서 사용자 로그인에 사용된다. 일종의 SQL이 곁들여진 Object Storage라고 볼 수도 있다. LDAP는 트리 구조로 데이터를 저장하는 계층형 데이터베이스. 데이터가 위치한 계층에 접근하면 필요한 데이터를 바로 꺼내올 수 있기에, 데이터를 신속하게 조회하는 읽기 작업에 적합하다.

Glance: Image
  • 인스턴스를 생성하기 위한 운영체제 디스크 이미지를 제공한다.

참고

인스턴스란 뭔가요?

물리적으로 직접 구축하는 온프레미스 서버와 반대되는 개념이다. 원격으로 접근 할 수 있는 클라우드 위의 서버 자원이다.

Placement
  • 프로젝트에서 사용하는 리소스를 추적한다.

Nova: Compute
  • 인스턴스를 생성-중지하는 라이프사이클을 관리합니다.

  • 인스턴스의 컴퓨팅 스케줄링을 담당합니다.

Neutron: Network
  • 인스턴스에 외부 및 내부 서비스간 네트워크를 제공한다.

  • DHCP, VLAN, floating IP 등의 기능도 제공한다.

Cinder: Block Storage
  • 블록 스토리지 장치를 생성하고 관리할 수 있도록 백엔드를 플러그-인 할 수 있다.

  • 지원하는 백엔드로 LVM, Redhat Ceph, Redhat GlusterFS, EMC, NetApp, IBM Store Virtual, Nexnta 등이 있다.

참고

Block Storage가 뭔가요?
  • 데이터를 일정한 크기의 연속된 블록으로 나누어 저장하는 방식이다.

  • 각 데이터 블록은 고유 식별자인 주소를 부여받으며, 해당 식별자를 통해 효율적으로 검색할 수 있고 빠르게 데이터로 재구성 할 수 있다.

  • 하드디스크 또한 Block Storage의 추상적 개념에 속한다. 따라서 Block Storage 서비스를 사용하여 가상 하드디스크를 생성한다고 생각할 수 있다.

Horizon: Dashboard
  • OpenStack 환경을 운영 및 관리할 수 있는 웹 기반의 셀프 서비스 포털 인터페이스를 제공한다.

  • Python 기반의 Django 프레임워크로 작성되었다. OpenStack API와 Amazon Web Server API를 지원한다.

참고

Dashboard가 뭔가요?
  • 여러 가지 지표를 그래픽 인터페이스로 나타내어 보여주는 페이지다.

셀프 서비스 포털이란 뭔가요?
  • 사용자가 능동적으로 서비스를 제어할 수 있도록 하는 페이지다.

  • 근본적으로 식당에서의 반찬 ‘셀프 서비스’랑 똑같다.

  • 직원을 거치지 않고 사용자가 직접 원하는 서비스를 이용할 수 있다.

그 외 구성요소

Swift: Object Storage
  • 클라우드 스토리지 소프트웨어를 제공, 간단한 API로 많은 데이터를 저장하고 검색할 수 있다.

Mistral: Workflow
  • 워크플로우를 관리하는 서비스. YAML 기반의 워크플로우 언어를 사용해서 작성하고 워크플로우 정의를 RESTAPI를 통해 업로드한다. 사용자는 동일한 API로 워크플로우를 시작하거나 자동화한다.

Ceilometer: Telemetry
  • openstack 전체 환경을 에이전트 기반으로 데이터를 수집하여 모니터링 및 사용량, 벤치마킹, 확장성, 통계 등을 제공하는 서비스이다. 이를 기반으로 단일 사용자에 대한 청구 시스템을 구현할 수 있다.

Trove: Database
  • 관계형 또는 비관계형 데이터베이스 엔진을 서비스로 사용할 수 있게 한다.

Sahara: Elastic map reduce
  • Hadoop 클러스터를 쉽고 빠르게 제공하는 인스턴스이다.

Ironic: Bare metal
  • 가상머신 대신 베어메탈을 제공하는 인스턴스이다. 베어메탈 하이퍼바이저 API 및 베어메탈 하이퍼바이저와 상호 작용하는 플러그인 세트로 생각하는 것이 가장 좋다.

Zaqar: Messaging
  • 웹 개발자를 위한 멀티 테넌트 기반의 클라우드 메시징 서비스이다. 해당 서비스는 개발자가 다양한 통신 패턴을 사용하여 SaaS의 다양한 인스턴스와 모바일 애플리케이션 간에 메시지를 보내는 데 사용할 수 있는 완전한 Restful API를 제공한다.

Manile: Shared file system
  • 공유 파일 시스템을 제공한다. EMC, NetApp, Red Hat, HP, IBM, Oracle의 다양한 상용 스토리지를 지원한다.

Designate: DNS
  • DNS 관리를 위한 멀티 테넌트 REST API이다. DNS 서비스를 관리하는 기능을 제공한다.

Searchlight: Search
  • 멀티 테넌트 클라우드 리소스 전반에 걸쳐 확장 가능한 고급 인덱싱 및 사용자 중심의 검색 기능을 제공한다.

Barbican: Key manager
  • 보안 키의 저장, 제공 및 관리를 위해 설계된 REST API이다.

Magnum: Container orchestration
  • Docker Swarm, Kubernetes, Apache Mesos와 같은 컨테이너 오케스트레이션 엔진을 openstack에서 리소스로 사용할 수 있도록 제공하는 openstack 서비스이다.

Vitrage: Root Cause Analysis
  • openstack 알림 및 이벤트를 구성, 분석, 및 확장하고 문제의 근본 원인에 대한 통찰력을 제공하고 직접 발견하기 전에 그것을 추론하기 위한 openstack RCA 서비스이다.

Aodh: Rule-based alarm actions
  • 이 알람 서비스를 사용하면 Ceilometer 또는 Gnocchi에서 수집한 분석 및 이벤트 데이터에 대해 정의된 규칙을 기반으로 작업을 트리거할 수 있다.

참고자료