[클라우드] 오픈스택

Letmegooutside·2022년 2월 9일
0

클라우드 컴퓨팅

목록 보기
6/6

오픈스택

모든 타입의 클라우드 컴퓨팅 플랫폼을 개발하고 관리할 수 있는 오픈 소스 소프트웨어 기반의 클라우드 운영체제

서비스형 IaaS를 쉽게 구축할 수 있는 플랫폼으로 관리자는 데이터센터의 프로세싱, 스토리지, 네트워킹 자원들을 대시보드를 통해 제어할 수 있고 사용자는 웹을 통해 필요한 기능을 사용한다.

서버의 하드웨어와 운영체제에 관계 없이 클라우드 컴퓨팅 개발의 표준을 제공하는 것이 목표이다.

OpenStack은 데이터 센터 전체에서 컴퓨팅, 스토리지 및 네트워킹 리소스의 대규모 풀을 제어하는 클라우드 운영 체제이며, 모두 관리자가 제어권을 갖는 대시보드를 통해 관리되며 사용자가 웹 인터페이스를 통해 리소스를 프로비저닝할 수 있도록 지원합니다

오픈스택 구성

오픈스택은 필요에 따라 구성 요소를 추가할 수 있도록 서비스로 구분되어 있다.

Heat

Heat Orchestration Template(HOT)을 사용하여 클라우드 자원을 생성하고 관리한다.
(인스턴스 생성, 네트워크 설정 등 일련의 과정을 자동화한다)

Heat은 템플릿 기반의 오케스트레이션 서비스를 제공하는 프로젝트로 사용자가 구성하고자하는 가상 자원들을 템플릿에 명시하도록 한다. HOT 템플릿은 YAML을 인코딩 방식으로 사용한다.

구조

  1. 사용자는 API를 호출하거나 CLI를 통해 오케스트레이션 서비스를 요청한다.
    이 때 CLI 역시 사용자 명령을 API로 변환하여 처리한다.

  2. 수신된 API서버는 AMQP 규격 기반의 메시지 통신을 통해 Heat Engine으로 이를 전달한다.

  3. Heat Engine은 수신한 템플릿과 API의 파라미터에 포함된 사용자 요청 데이터를 기반으로 인프라 및 클라우드 애플리케이션을 생성하기 위해 Nova API, Neutron API 등과 같은 오픈스택 프로젝트들의 API를 호출한다.


Nova

컴퓨트 서비스의 핵심이며 하이퍼바이저, 메세지 큐, 인스턴스 접속을 하는 콘솔 등 다양한 기능이 유기적으로 연결되어 가상 서버를 생성할 수 있는 시스템을 구성한다.

RESTful API를 지원하고, 아마존 EC2 API와 연동이 가능하다.

구조

  1. 대시보드나 CLI가 호출하는 nova-api로부터 시작한다.

  2. nova-api는 큐를 통해 nova-compute에 인스턴스를 생성하라는 명령어를 전달한다.

  3. nova-compute는 하이퍼바이저 라이브러리를 통해 인스턴스를 생성하라는 명령어를 다시 전달한다.

  4. 하이퍼바이저는 인스턴스를 생성하고 생성된 인스턴스는 nova-console을 통해 사용자가 접근할 수 있게 된다.


Swift

오브젝트 스토리지 중 하나이며 오픈소스 프로젝트이다. 분산 구조의 Object 데이터 저장 스토리지 체계로서 가장 많이 사용된다.

대용량, 비정형 데이터를 저장하기에 적합한 스토리지로 데이터를 파일과 메타데이터로 저장하며 각각의 파일을 복제 방식을 이용해 분산 관리하고 계정마다 저장공간을 분리하지 않고 하나로 사용하여 공간을 최대한으로 활용하는 분산형 오브젝트 스토리지다.

구조

  1. Swift-proxy, account(사용자 계정 관리), container(저장 공간의 단위), object(실 데이터)로 구성된다.
  2. swift-proxy는 acount, container, object를 관리한다.
  3. accout, container는 DB로 데이터를 관리하고 Object는 저장공간에 직접 저장되는 방식으로 설계되어 있다.

Swift API

  • Swift는 API를 통해 Object를 관리할 수 있도록 다양한 기능을 제공하며 개발자의 편의를 위해 다양한 형태의 API를 제공한다.

  • API요청을 받고 이를 처리하는 역할은 프록시 서버가 담당하며 요청의 종류에 따라 실제 데이터의 처리를 어디서 수행하게 될지를 결정한다.


블록 스토리지

데이터를 블록이라는 일정한 크기의 조각으로 나누어 저장하는 것을 의미한다.

  • 클라우드 컴퓨팅에서 인스턴스에 추가하는 하드 디스크를 블록 스토리지라고 한다.
  • 운영체제가 설치된 인스턴스에 추가로 확장해 사용할 수 있는 디스크로, 데이터나 파일 등을 보관하려는 목적의 저장 공간이다.
  • 원래 있던 인스턴스에서 연결을 해제한 후 다른 인스턴스에 연결해서 사용할 수 있다.

오브젝트 스토리지

오브젝트로 불리는 각각의 데이터 단위가 개별 단위로 저장되는 스토리지 유형이다.

  • 오브젝트에는 데이터와 그 데이터의 식별번호, 메타데이터가 포함되며 이 고유의 식별번호를 통해 빠르게 데이터를 검색할 수 있다.
  • 계층 구조의 파일 시스템과 달리 평면적인 저장 방식을 가진다.
  • 블록 스토리지와 다르게 단독으로 구성할 수 있으며, 사용자 계정의 컨테이너에 파일이나 데이터를 저장할 수 있는 저장공간이다.
  • 사용자별로 저장 공간을 나누는 스토리지 시스템을 구축할 때는 오브젝트 스토리지를 사용해야 한다.
  • 동영상, 이미지, 디스크 이미지 등의 대용량, 비정형 데이터를 저장하기에 적합한 스토리지이며 URL 방식으로 접근이 가능하다.

클라우드에서 오브젝트 스토리지를 사용하는 이유

  • 확장성과 속도, 저렴한 가격 때문이다.

RESTful Protocol(HTTP)을 이용해서 Get혹은 Post로 요청하면 파일을 내려주고 그 이상은 알필요가 없다. 또한 파일에 대해 가지고 있는 정보가 적기 때문에 파일이 아무리 많아져도 블록 스토리지나 파일 스토리지에 비해 빠르게 작동하고 공간을 효율적으로 사용하기 때문에 저렴하다.


Glance

다양한 하이퍼바이저에서 사용할 수 있는 가상머신 이미지를 관리하고, 가상머신에 설치된 운영체제를 보관 및 관리한다.

구조

  1. glance-api를 통해 이미지를 등록, 삭제 및 관리할 수 있다.

  2. glance-registry와 glance-database에서 이미지가 관리된다.

  3. 이미지를 등록할 때는 glance-registry를 통해 glance-database에 저장된다.

  4. 등록된 이미지를 사용할 때는 glance-database에 바로 사용요청을 한다.

Glance의 이미지 : 이미 하이퍼바이저에서 생성한 가상머신에 운영체제를 설치한 이미지를 Glance에 등록시키고, 등록시킨 이미지를 이용하여 인스턴스를 생성하는 것이다.(가상머신을 생성한 후 운영체제를 별도로 설치하는 것이 아님)


Keystone

오픈스택 내의 자원을 아무나 사용하는 것이 아닌 오픈스택 구성원만 사용할 수 있도록 사용자 인증을 통해 물리 서버내의 자원을 사용할 수 있도록 관리한다.

인증 외에도 사용자 관리, 보안 그룹 관리, 각종 서비스의 Endpoint URL (REST API)을 관리하는 기능을 제공한다.

타인이나 해커로부터 시스템을 안전하게 보호하고 사용자 등록 및 삭제, 권한 관리, 사용자가 접근할 수 있는 서비스 포인트 관리까지 사용자 인증에 관한 모든 관리를 수행하기 때문에 모든 서비스를 관장하는 자리에 위치한다.

동작 절차

  1. 사용자가 Keystone으로부터 UnScoped(범위 비지정) 토큰 획득

    1. 사용자가 Nova 서비스가 제공하는 가상머신을 사용하기 위해 Keystone에 접속한다.
    2. Keystone은 사용자에게 신분 증명을 요구한다.
    3. Keystone은 인증에 성공한 사용자에게 UnScoped 토큰을 발급한다. 이 때 토큰에는 사용자가 사용 가능한 서비스들에 대한 범위가 포함되어 있지 않다.
  2. Keystone이 사용자가 접속 가능한 프로젝트 찾기

    1. 신분 증명을 완료하여 UnScoped 토큰을 받은 사용자는 이 토큰을 통해 자신이 접속 가능한 프로젝트를 요청한다.
    2. Keystone은 이 사용자에게 할당된 역할에 따라 프로젝트의 종류와 수행 가능한 EndPoint목록을 작성한다.
  3. 사용자가 Keystone으로부터 Scoped(범위지정) 토큰 획득

    1. Keystone은 사용자가 접속 가능한 프로젝트 목록과 사용자가 사용을 원하는 프로젝트를 결정한다.
    2. 이 정보(프로젝트와 역할)가 포함된 토큰을 사용자에게 보낸다.
  4. 사용자가 서비스에게 서비스 요청하기

    1. 범위가 지정된 토큰을 받은 사용자는 토큰 내부의 EndPoint를 확인하고, 서비스에게 서비스를 요청한다.
  5. 요청을 받은 서비스가 Keystone에게 토큰 검증 의뢰하기

    1. 서비스는 사용자가 요청과 함께 제출한 토큰의 메타데이터 정보가 유효한지 검증하기 위해 Keystone에 의뢰한다.
    2. Keystone은 서비스로부터 받은 메타데이터와 Policy Backend에 저장된 메타데이터를 비교한다.
  6. 검증이 완료된 토큰을 서비스에게 제공

    1. 사용자가 요청한 서비스에 접근이 가능한지 토큰의 메타데이터 검증을 마친 Keystone은 그 결과를 서비스에게 제공한다.
  7. 서비스가 사용자의 요청 실행하기

    1. 서비스는 Keystone으로부터 토큰 검증을 완료한 후 인스턴스를 실행하라 또는 볼륨을 생성하라 등의 요청을 수행한다.
  8. 결과 보고하기

    1. 서비스는 사용자의 요청에 대한 실행 결과를 사용자에게 보고한다.

Neutron

네트워크와 IP 주소들을 관리하기 위한 시스템으로 네트워크가 병목 현상에 처하지 않도록 보증하며 네트워크 구성을 통해서 사용자에게 자체 서비스 기능을 제공한다.

Neutron은 네트워크의 생성, 변경, 삭제에 대한 API만 제공할 뿐 실제로는 플러그인을 통해서 네트워크가 구성되는 것이다.

구조

  1. 사용자는 Neutron API를 이용하여 Neutron 서버로 IP 할당을 요청한다.

  2. Neutron 서버는 들어온 요청을 큐로 다시 요청한다.

  3. 큐는 Neutron 에이전트와 플러그인으로 IP 할당 지시를 내린다.

  4. Neutron 에이전트와 플러그인은 지시 받은 작업을 DB에 저장한다.

  5. Neutron 에이전트는 네트워크 프로바이더에게 작업을 지시한다.

  6. 그리고 수시로 작업상태를 DB에 업데이트 한다.

  7. 할당된 IP를 인스턴스에서 사용할 수 있다.


Cinder

블록 스토리지인 Cinder는 Nova에서 생성된 인스턴스에 확장하여 사용할 수 있는 저장공간을 생성 및 삭제하고 인스턴스에 연결할 수 있는 기능을 제공한다.

구조

  1. Cinder API를 통해 볼륨을 추가 및 삭제할 수 있다.

  2. Cinder-volume은 볼륨을 실제로 생성하고 DB에 볼륨 정보를 업데이트 한다.

  3. Cinder는 물리 하드 디스크를 LVM(Logical Volume Manager)으로 설정한다.

  4. 설정한 LVM은 cinder.conf와 nova.conf의 환경설정을 통하여 볼륨을 할당할 수 있다.

  5. cinder API를 통해 생성된 볼륨은 단일 혹은 여러 인스턴스에 할당할 수 있다.


Ceilometer

클라우드에서 배포된 자원의 사용량 및 성능을 측정하여 사용자가 자원의 상태를 모니터링 할 수 있는 기능을 제공한다.

여러 분산된 클라우드 시스템의 자원 상태를 모니터링함으로써 가시성과 통찰력을 제공하고 자원의 통계를 확인할 수 있다.


Horizon

사용자가 웹 UI를 통해서 인스턴스 생성과 삭제 및 관리 등을 쉽고 빠르게 처리할 수 있도록 해주는 웹서비스이다.

아파치 웹서버를 사용하며 대시보드는 파이썬 장고 프레임워크로 구현되어 있다.





Reference
https://velog.io/@dojun527/오픈-스택이란
https://naleejang.tistory.com/110

0개의 댓글