EverGiver

오픈스택 기초 본문

전공/클라우드융합

오픈스택 기초

친절한개발초보자 2022. 3. 13. 23:09
728x90
OpenStack이란?

 

  • 풀링된 가상 리소스를 사용하여 프라이빗 및 퍼블릭 클라우드를 구축하고 관리하는 오픈소스 플랫폼이다.
  • OpenStack 플랫폼을 포함하는 툴, 일명 “프로젝트”는 컴퓨팅, 네트워킹, 스토리지, Identity 및 이미지 서비스의 핵심 클라우드 컴퓨팅 서비스를 처리한다.
  • 수십 개 이상의 옵션 프로젝트를 번들로 묶어 배포 가능한 고유의 클라우드를 생성할 수도 있다.
  • 가상화에서는 다양한 벤더별 프로그램에서 스토리지, CPU, RAM과 같은 리소스를 추상화해 하이퍼바이저를 통해 분할한 다음 필요에 따라 배포한다.
  • OpenStack은 일관된 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API) 세트를 사용해 해당 가상 리소스를 분리된 풀로 1단계 더 추상화하며, 이를 기반으로 하는 표준 클라우드 컴퓨팅 툴에서 관리자와 사용자가 직접 인터랙션 할 수 있다.

 

 OpenStack은 단순한 가상 관리 플랫폼일까?

 

  • 비슷한 점들이 많지만 동일하지는 않다.
  • OpenStack과 가상화 관리 플랫폼은 모두 가상 리소스를 기반으로 하며 벤더별 환경에서 프로세스를 검색, 리포트, 자동화할 수 있다.
  • 가상화 관리 플랫폼에서는 가상 리소스의 기능을 조작하는 것이 간편한 반면, OpenStack에서는 툴 조합을 실행하기 위해 실제로 가상 리소스를 사용한다는 차이가 있다.
  • 이러한 툴은 NIST가 제시한 클라우드 컴퓨팅의 5가지 기준인 네트워크, 풀링된 리소스, 사용자 인터페이스, 프로비저닝 기능, 자동 리소스 제어/할당을 충족하는 클라우드 환경을 구축

 

OpenStack 작동 방법
  • OpenStack은 기본적으로 스크립트라고하는 일련의 명령이다.
  • 이러한 스크립트는 프로젝트라 불리는 패키지로 구성되어 클라우드 환경을 구축하는 태스크를 전달한다.
  • OpenStack은 이러한 환경을 구축하기 위해 두 가지 유형의 소프트웨어를 사용한다.
    - 하드웨어에서 추상화된 가상 리소스 레이어를 생성하는 가상화

    - OpenStack 스크립트에서 제공되는 명령을 실행하는 기본 운영 체제(OS)
  • OpenStack은 자체적으로 리소스를 가상화하는 것이 아니라, 리소스를 사용하여 클라우드를 구축한다.
  • OpenStack은 또한 명령을 실행하기보다는 기본 OS로 이들 명령을 전달한다.
  • OpenStack, 가상화 및 기본 OS의 세 가지 기술이 모두 연동되어야 한다.
  • 그러한 상호의존성 때문에 OpenStack 클라우드는 Linux를 사용하여 배포한다.

 

OpenStack 구성 요소

 

 

 

  • OpenStack의 아키텍처는 수많은 오픈소스 프로젝트로 이루어져 있다.
  • 이 프로젝트는 OpenStack의 언더클라우드 및 오버클라우드(각각 시스템 관리자 및 클라우드 사용자가 이용)를 설정하는 데 사용된다.
  • 언더클라우드는 시스템 관리자가 최종 사용자의 OpenStack 환경, 즉 오버클라우드를 설정하고 관리하는 데 필요한 코어 구성 요소로 이루어진다.
  • 컴퓨팅, 네트워킹, 스토리지, ID, 이미지를 처리하는 6가지의 안정적인 핵심 서비스가 있으며, 개발이 진행됨에 따라 수십 가지 이상의 옵션이 제공된다.
  • 이 6가지 핵심 서비스는 나머지 프로젝트에서 대시보드, 오케스트레이션, 베어메탈 프로비저닝, 메시징, 컨테이너, 거버넌스를 처리할 수 있도록 하는 인프라가 된다.

 

OpenStack 서비스 구성

 

  • Nova - Compute Project
    - Nova는 Hypervisor를 관리하는 API 제공
    - Instance(VM) 생성 관리
    - 제어기능이 Control Node에 위치하여 compute node 관리

  • Storage(Swift, cinder) Projects
    - 클라우드 스토리지 서비스 : 스토리지 및 스토리지 API를 제공
    - 블록 스토리지(하드디스크) : Cinder, 정형성 저장 적합(고정 필드, 엑셀 등)
      ▷ 문제시 포맷할 수 없으므로 새로 생성
    - 오브젝트 스토리지 : Swift, 비정형성 저장 적합(이미지 등), 사용자 계정별 저장공간 제공 가능
    - 공유파일 스토리지 : Manila, NFS & CIFS 공유 파일 서비스
  • Ceph - 오픈스택 하의 프로젝트가 아님
    - Ceph의 RDB, RADIOS : 분산 스토리지를 위한 다른 오픈 소스 서비스로 모든 종류의 스토리지 관련 서비스 제공 프로젝트
  • Glance (CD-ROM 같은 기능)
    - OpenStack에서 운영체제 이미지를 관리
    - 다양한 Hypervisor에서 사용할 수 있는 VM 이미지를 관리하고, VM에 설치된 OS 보관 및 관리
  • glance-api로 이미지를 등록, 삭제 및 관리
  • glance-api를 사용하여, glance-regisrty, glacnedatabase에 이미지를 관리
  • 이미지 등록시, glance-registry를 통하여 glance-database에 등록
  • 등록된 이미지 사용 시, glance-database에 바로 사용 요청

  • Keystone
    - 물리서버 내 Compute, 이미지, 네트워크, 스토리지와 같은 자원들에 대한 인증관리
    - 사용자 인증을 통하여 물리 서버 내의 자원을 사용할 수 있도록 관리

  • Horizon
    - 오픈스택 대시보드 서비스
    - Horizon은 사용자가 웹 UI를 통하여 인스턴스 생성, 삭제 및 관리 등을 쉽고 빠르게 처리할 수 있도록 해 주는 웹 서비스
    - Horizon은 어차피 웹 서비스를 사용하며, 대시보드는 파이썬 장고 프레임 워크로 구현

  • Neutron
    - 네트워크 서비스인 Neutron은 Folsom 버전에서 Quantum이라는 이름으로 오픈
    - 그 후에 Grizzly 버전에서 Havana 버전으로 오면서 Neutron으로 변경
    - 기존 오픈스택의 네트워크 서비스는 Nova-network가 담당을 하였으나, SDN 개념이 들어오면서 별도의 네트워크 프로젝트로 분리
    - Neutron은 Neutron 서버, 에이전트, 플러그인, 메시지 큐, 네트워크 프로바이더, 데이터베이스로 구성
    - Neutron은 다양한 네트워크 플로그인과 네트워크 모델을 지원

  • Network

 

프로젝트 명 서비스 내용
Nova Compute Service

클라우드 IaaS (Infrastructure as a Service) 구축에 필요한 가상 컴퓨트 인스턴스들을 제어하고 관리하기 위한 서비스로, 오픈스택에서 가장 중요한 프로젝트.
AWS의 EC2와 호환된 API를 제공합니다.
Swift Storage Service

블락 스토리지(Block Storage)가 아닌 오브젝트 스토리지(Object Storage) 환경을 구축하고 관리하기 위한 서비스로, 오픈스택과 별개로 독립적 구축이 가능함.
AWS의 S3의 기능과 유사합니다.
Glance Imaging Service

가상 머신 이미지들을 저장/등록/관리/전달하기 위한 서비스로 Nova 와 스토리지 간 중계 역할을 담당.
RAW, QCOW, VMDK, VHD, ISO, OVF, AMI/AKI 이미지를 지원합니다.
Keystone 인증(Identity) 서비스

통합 인증 시스템으로 오픈스택 서비스들을 위한 ID 제공.
SQL, PAM, LDAP 등에 대한 backends를 제공합니다.
Horizon Administrative Web-Interface(UI) Service

오픈스택을 기반으로 구현된 서비스들을 관리자나 사용자가 제어하기 위한 웹 인터페이스 제공합니다.
Cinder Volume Service

오픈스택 인스턴스에서 Persistent Block 단위의 디바이스를 제공합니다.
AWS의 EBS와 유사한 서비스 입니다.
Heat Orchestration

템플릿 형태의 클라우드 자동화를 위한 인터페이스를 제공 합니다.
아마존 AWS의 CloudFormation과 유사항 기능을 제공합니다.
Ceilometer Telemetry

하이퍼바이저 레벨의 SMS정보와 같은 인스턴스 사용율에 대한 정보를 수집 및 제공합니다.
Neutron Networking

Software Defined Networking(SDN)의 프레임을 제공합니다.
오픈스택에서의 인스턴스 네트워킹을 위한 서비스 입니다.

 

OpenStack과 서버 컴퓨터 간 비교 분석

 

OS 구성 요소 담당 역할 오픈스텍 서비스
Scheduler 서버의 자원 관리 Nova
Server Virtualization 서버의 가상 머신(VM) 관리 Glance
File System Object Filesystem으로 컨텐츠 저장 Swift
User API 사용자 어플리케이션 접근 관리 Nova, Glance, Swift
  • 일반적으로 데이터센터 등에서 사용되는 서버를 활용하기 위해선 운영체제(OS)를 설치하여 사용하는데 그 운영체제(OS)에서 가장 중요한 부분이 바로 스케줄러와 사용자 API 라 할 수 있다.
  • 운영체제는 기본적으로 해당 컴퓨터에서 실행되고 있는 모든 사용자 애플리케이션들이 자원 관리의 책임과 권한이 있는 스케줄러가 정의한 정책에 따라 공정하게 자원들을 접근할 수 있도록 관리하는 소프트웨어이다.
  • 클라우드 서비스를 구축하기 위한 실제 하드웨어 구성은 복잡하겠으나 클라우드 서비스를 사용하는 사용자(혹은 애플리케이션) 입장으로 보자면 하나의 커다란 서버 컴퓨터로 생각할 수 있고, 그러한 서버 컴퓨터를 동작시키기 위한 운영체제가 바로 오픈스택이라 보면 이해하는데 도움이 될 것이다.
  • 운영체제(OS)의 가장 핵심인 스케줄러는 오픈스택에서 노바(Nova)가 담당하고 있다.

  • 오픈스택의 노바(Nova)는 위 그림과 같이 노바 볼륨(Volume)을 통해 스토리지 관리를, 노바 네트워크(Network)를 통해 네트워크 관리를, 노바 컴퓨트(Compute)를 통해 컴퓨트 인스턴스(Instance)들을 관리하고 있는 가장 핵심적인 프로젝트이다.
  • 일반적으로 데이터센터에서 사용되는 서버 컴퓨터들은 하드웨어 자원을 100% 가까울 정도로 충분히 활용하기 위해서 VMWare 사의 vSphere 와 같은 서버 가상화 기술을 사용하고 있다.
  • 오픈스택에서도 가상 머신 이미지들을 저장/등록/관리/전달하기 위한 서비스로 글랜스(Glance)가 사용되고 있다.
  • 리눅스에서 사용되는 어플리케이션이 윈도우(MS Windows)에서 실행되지 않는 이유
    - 운영체제(OS)가 달라서가 아니라 파일이 실제로 저장되는 하드 디스크 메모리 주소 번지를 파일 단위로 관리하고 있는 소프트웨어인 파일 시스템(가령 NTFS와 ext4)이 서로 다르기 때문이다.
    - 파일 시스템은 본래 운영체제와 별개로 독립적으로 사용될 수 있으며, 오픈스택의 스위프트(Swift) 역시 오픈스택의 노바(Nova)와 글랜스(Glance)와 함께 쓰일 수도 있고 별개로 독립적으로 구축될 수도 있는 오브젝트 스토리지(Object Storage) 서비스를 구현할 수도 있다.
  • 사용자 API (User API)를 제공하는 일이다.
    - 단지 MS Windows 가 제공해주는 MFC 나 WIN32 API 와 같은 User API 만 알고 있으면 MS Windows 기반의 어떠한 애플리케이션이라도 구현이 가능하다.
  • 오픈스택 역시 클라우드 운영체제(Cloud OS)라는 이름에 걸맞게 오픈스택이 제공하는 모든 서비스들(Nova, Glance, Swift, Keystone, Horizon 등)은 각 서비스 별로 제공되는 User API를 통해 접근이 가능하다.
  • 오픈스택은 퍼블릭 클라우드와 프라이빗 클라우드 서비스를 구축하기 위해 필요한 모든 소프트웨어를 제공하는데 그 목적이 있는 오픈 소스 프로젝트이다.
728x90

'전공 > 클라우드융합' 카테고리의 다른 글

HTTP  (0) 2022.03.14
Virtualization (가상화)  (0) 2022.03.06
Comments