EverGiver
오픈스택 기초 본문
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