Study/OpenStack

OpenStack이란??

ABCD 2023. 10. 9.

OpenStack

  • 클라우드 환경에서 컴퓨팅 자원과 스토리지 인프라를 셋업하고 구동하기 위해 사용하는 오픈 소스 소프트웨어 프로젝트의 집합
  • Compute Pool(CPU, RAM...) + Storage Pool(HDD, SSD...) + Network Pool 등을 모니터링하고 관리하는 운영체제
  • 사용화된 클라우드 시스템을 사용하는 경우와 비교시, 시스템 사용에 대한 비용이 들지 않아 이점이 있다.
  • 치명적인 단점은... 구축이 어렵다는 것.

OpenStack의 구성요소

Horizon(Dashboard)

  • 웹 관리 포털
  • 사용자가 오픈스택의 구성요소들을 간편하게 사용할 수 있도록 지원해주는 UI서비스Nova (Compute)
  • VM 인스턴스 관리
  • 가상머신을 관리
  • AWS의 EC2, GCP의 Compute Engtine와 비슷한 서비스.
  • 사용자의 요청에 따라 컴퓨팅 자원을 제공하고 관리 해준다.

image

Nova는 dashboard나 커맨드 라인 명령어가 호출하는 nova-API로 부터 시작한다.
Nova-API는 Queue를 통해 Nova-compute에 인스턴스를 생성하라는 명령어를 전달하고 인스턴스 생성 명어를 전달받은 nova-compute는 하이퍼바이저 라이브러리를 통해 하이퍼바이저에게 인스턴스를 생성하라는 명령어를 다시 전달한다. 이 때 하이퍼바이저는 인스턴스를 생성한다. 생성된 인스턴스는 nova-console을 통해 사용자가 접근할 수 있게 된다.

Swift(Cloud storage service)

  • Object 스토리지 관리
  • AWS의 S3, GCP의 Cloud Storage와 비슷한 서비스.
  • 대용량 데이터를 저장할 수 있는 높은 확장성을 가진 서비스.
  • 데이터에 unique ID를 부여하고 컨테이너(버킷)에 저장하여 필요할 때 데이터에 부여한 ID를 호출하여 데이터를 사용하는 스토리지

image

swift-proxy는 account, container, object를 관리한다.
account, container는 DB를 담당하고 Object는 저장공간에 직접 저장되는 방식으로 설계되어 있다.
account(사용자 계쩡 관리), container(저장 공간의 단위, 버킷), object(데이터)

Glance(Image)

  • VM 이미지 관리
  • 우분투, 센트 등의 이미지를 관리
  • AWS의 AMI, GCP의 Boot disk와 비슷한 서비스.
  • 다양한 하이퍼바이저에서 사용할 수 있는 가상 머신 이미지를 관리한다. Nova에서 생성되는 가상머신은 Glance를 통해 가상 머신 이미지를 제공받고 관리한다. 즉 가상 디스크 이미지(.ios파일 등)들을 저장/등록/관리/전달 할 수 있게 해주는 서비스

image

Galnce 사용자들은 glance-API를 통해 이미지를 등록, 삭제 및 관리 할 수 있다.
galnce-API는 glance-registry와 glance-database에서 이미지가 관리 된다.
이미지 등록 시에는 glance-registry를 통해 glance-database에 저장된다.
등록된 이미지를 바로 사용 할 경우 glance-database에 직접 요청하여 사용한다.

Keystone(Identity service)

  • 통합 인증 관리
  • AWS, GCP의 IAM(Identity and Access management) 서비스와 비슷한 서비스.
  • 인증 토큰 시스템으로 오픈스택 클라이언트는 다양한 API를 호출하기 때문에 이를 토큰을 부여하여 관리한다.

image

KeyStone은 사용자 인증 부분과 서비스 인증 부분을 관리한다.
사용자의 경우, 사용자 그룹인 tenant, 사용자 계쩡 정보인 User Id와 PW, 사용자 권한인 Role을 가진다.
서비스의 경우, 서비스를 등록하고 해당 서비스 Endpoint URL을 등록한다.

Cinder(block storage)

  • Block 스토리지 관리
  • 일반적인 HDD, SSD인 물리적인 스토리지 관리
  • AWS의 EBS(Elastic Block Storage), GCP의 Persistent Disk와 비슷한 서비스.
  • Nova에서 생성된 인스턴스에 확장하여 사용 할 수 있는 저장 공간을 생성 및 삭제하고 인스턴스에 연결할 수 있는 기능을 제공

image

Cinder API를 통해 볼륨을 추가 및 삭제 할 수 있다.
Cinder-volume은 volume을 실제로 생성하고 데이터베이스에 volume정보를 업데이트 한다.
Cinder는 물리 하드 디스크를 LVM(Logical Volume Manager)으로 설정한다.
설정한 LVM은 cinder.conf와 nova.conf의 환경설정을 통하여 volume을 할당할 수 있다.
Cinder API를 통해 생성된 volume은 당일 인스턴스 또는 여러 인스턴스에 할당할 수 있다.

Neutron(Networking)

  • (가상) 네트워크 관리
  • AWS의 vpc, GCP의 cloud virtual networdk와 비슷한 서비스.
  • 소프트웨어 기반의 네트워킹 서비스를 제공
  • Neutron은 네트워크의 생성/변경/삭제에 대한 API를 제공하며 실제로는 Plug-in을 통해 controller를 작동시켜 네트워크에 접속한다.

image

사용자는 Neutron API를 이용하여 Neutron sever로 IP 할당을 요청한다.
Neutron sever는 들어온 요청을 Queue로 다시 요청한다.
Queue는 Neutron agent(s)와 neutron Plug-in(s)으로 IP할당 지시를 내린다.
Neutron agent(s)와 Neutron Plug-in(s)은 지시받은 작업을 Neutron database에 저장한다.
Neutron agent(s)는 network provider에게 작업을 지시한다.
수시로 작업 상태를 Neutron database에 업데이트 한다.
항당된 IP를 인스턴스에서 사용 할 수 있게된다.

Heat(Orchestration)

  • 템플릿 관리
  • AWS의 ECS(Elastic Container Service), GCP의 GKE(Google Kubernetes Engine)과 비슷한 서비스.
  • OpenStack 오케스트레이션 Heat서비스는 heat orchestration template(hot)을 사용하여 클라우드 자원을 생성하고 관리한다.
  • 오케스트레이션 서비스는 실행 중인 애플리케이션을 생헝하기 위해 OpenStack API를 호출하여 템플릿 기반의 오케스트레이션을 제공한다.

image

사용자는 API를 직접 호출하여 오케스트레이션 서비스를 요청하거나 CLI(Command Line Interface)를 통해 동일한 작업을 수행할 수 있다. 이때, CLI역시 사용자 명령을 API로 변환하여 처리하게 된다.
수신된 API server는 AMQP(Advanced Message Queueing Protocol)규격 기반의 메시지 통신을 통해 heat Engine으로 전달한다.
Heat Engine은 수신한 템플릿과 API의 파라미터에 포함된 사용자 요청 데이터를 기반으로 인프라 및 클라우드 애플리케이션을 생성하기 위하여 Nova API, Neutron API 등과 같은 오픈스택 프로젝트들의 API를 호출한다.

Ceilometer(monitoring service)

  • Metering 관리
  • AWS의 cloudwatch, GCP의 Stack Driver와 비슷한 서비스.
  • OpenStack 서비스와 관련된 측정 데이터를 효과적으로 수집하고 서비스로부터 전소오디는 알림을 모니터링.

전체적인 OpenStack의 동작 다이어그램

image

참조
https://velog.io/@baeyuna97/OpenStack-이란

728x90
반응형

'Study > OpenStack' 카테고리의 다른 글

OpenStack의 DashBoard 구성  (0) 2023.10.14
클라우드 컴퓨팅이란??  (0) 2023.10.09

댓글