작년 입사와 동시에 팀 대상으로 혼자 진행했던 스터디 및 세미나 자료를 다시 한번 정리하여 공개한다.
오픈스택 컴포넌트 전부
Component type | Service type | Service name | Description | etc.. |
---|---|---|---|---|
Compute | Instance | Nova | 인스턴스 | |
Compute | Resource management | Placement | 가상화 리소스 관리 | allocate, pool |
Deploy | Orchestration | Heat | 템플릿 기반 인스턴스 배포 서비스 | |
Backup | Instance Backup | Freezer | 인스턴스 백업 및 스냅샷 | |
HA | Instance HA | Masakari | 인스턴스 고가용성 | |
Storage | Image Storage | Glance | 인스턴스 이미지 관리 | 공유 |
Storage | Object Storage | Swift | 오브젝트 스토리지 | like S3 |
Storage | Block Storage | Cinder | 인스턴스 블록 스토리지 관리 | |
Storage | Distributed Storage | Ceph | 분산 스토리지 백엔드 | Cinder, Glance 백엔드 |
Storage | Shared File System | Manila | NAS 서비스 | NFS, CIFS |
Network | Network | Neutron | 인스턴스 네트워크 제공 서비스 | |
Network | LB | Octavia | LBaaS | |
Dashboard | Backoffice (user) | Horizon | 오픈스택 관리 대시보드 | 공유 |
Auth | Identity | Keystone | 오픈스택 인증/인가 서비스 | 공유 |
Metering | Monitoring | Ceilometer | 오픈스택 모니터링 | |
Metering | Monitoring | Gnocchi | 오픈스택 모니터링 |
- 메인 컴포넌트 : Nova, Glance, Swift, Cinder, Neutron, Horizon, Keystone
- 유효한 컴포넌트 : Ceph, Manila, Octavia, Masakari, Heat, Freezer, Ceilometer, Gnocchi, Placement
오픈스택의 메인 컴포넌트 및 유효한 컴포넌트 리스트 정리
메인 컴포넌트
오픈스택이 작동하기 위해 꼭 필요한 필수 컴포넌트
Component type | Service type | Service name | Description | etc.. |
---|---|---|---|---|
Compute | Instance | Nova | 인스턴스 | |
Storage | Image Storage | Glance | 인스턴스 이미지 관리 | 공유 |
Storage | Object Storage | Swift | 오브젝트 스토리지 | like S3 |
Storage | Block Storage | Cinder | 인스턴스 블록 스토리지 관리 | |
Network | Network | Neutron | 인스턴스 네트워크 제공 서비스 | |
Dashboard | Backoffice (user) | Horizon | 오픈스택 관리 대시보드 | 공유 |
Auth | Identity | Keystone | 오픈스택 인증/인가 서비스 | 공유 |
Nova
- 개념 : OpenStack Compute
- 관리하는 리소스 : 인스턴스의 CPU, Memory, Disk 관리 및 인스턴스 생명주기
- 기능 : 가상 인스턴스 생성, 스케줄링, 회수
Glance
- 개념 : OpenStack Image Service
- 관리하는 리소스 : 인스턴스를 생성할 때 사용되는 이미지를 제공
- 기능 : 가상 머신 디스크 이미지, 가상 머신을 생성할 때 사용되는 이미지를 제공
Swift
- 개념 : OpenStack Object Storage
- 관리하는 리소스 : 객체 스토리지를 관리
- 기능 : 오픈스택에 오브젝트 스토리지 제공
Cinder
- 개념 : OpenStack Block Storage, Persistent Block Storage Project
- 관리하는 리소스 : 블록 스토리지 볼륨을 생성, 연결, 분리하는 등의 기능을 제공
- 기능 : 인스턴스에 블록 스토리지 제공
Neutron
- 개념 : OpenStack Network
- 관리하는 리소스 : 네트워크, 서브넷, 포트, 라우터 등을 생성하고 관리하여 가상 머신 간의 통신 관리
- 기능 : 가상 머신 간 및 외부와의 네트워크 연결을 제공
Horizon
- 개념 : OpenStack 대시보드
- 기능 : 웹 기반 포털
Keystone
- 개념 : Identity 서비스.
- 관리하는 리소스 : 오픈스택 컴포넌트 인증/인가 리소스 관리
- 기능 : 인증정보 관리와 각 리소스 인가 기능, 토큰 발급. endpoint 카탈로그 제공
유효한 컴포넌트
메인 컴포넌트 포함 +
Component type | Service type | Service name | Description | etc.. |
---|---|---|---|---|
Compute | Resource management | Placement | 가상화 리소스 관리 | allocate, pool |
Deploy | Orchestration | Heat | 템플릿 기반 인스턴스 배포 서비스 | |
Backup | Instance Backup | Freezer | 인스턴스 백업 및 스냅샷 | |
HA | Instance HA | Masakari | 인스턴스 고가용성 | |
Storage | Distributed Storage | Ceph | 분산 스토리지 백엔드 | Cinder, Glance 백엔드 |
Storage | Shared File System | Manila | NAS 서비스 | NFS, CIFS |
Network | LB | Octavia | LBaaS | |
Metering | Monitoring | Ceilometer | 오픈스택 모니터링 | |
Metering | Monitoring | Gnocchi | 오픈스택 모니터링 |
Placement 📌
- 개념 : 가상화 리소스의 분배와 할당에 관련된 역할을 전담
- 관리하는 리소스 : 인스턴스를 배치하기 위해 가용한 노드의 리소스를 관리.
- 기능 : 호스트 및 노드에서의 가용한 리소스를 추적하고, 이 정보를 기반으로 가상 머신의 배치를 최적화.
Heat 📌
- 개념 : 템플릿 기반 인스턴스 배포 서비스 (오케스트레이션)
- 관리하는 리소스 : 오픈소스 인스턴스 템플릿
- 기능 : 템플릿 기반의 오케스트레이션을 통해 가상 인프라 및 애플리케이션 스택을 관리
Freezer 📌
- 개념 : 오픈스택 인스턴스 백업
- 관리하는 리소스 : 인스턴스 백업 및 복원
- 기능 : 오픈스택에서의 데이터 백업 및 복원 서비스를 제공. 가상 머신, 볼륨, 이미지 등 다양한 데이터 유형을 백업하고, 필요한 경우 이를 복원할 수 있는 기능을 제공
Masakari 📌
- 개념 : 인스턴스 고가용성
- 관리하는 리소스 : 가용성 관리
- 기능 : 인스턴스의 가용성을 관리하고, 하이퍼바이저 레벨에서 발생하는 장애에 대한 자동 복구를 제공
Ceph
- 개념 : 분산 스토리지
- 관리하는 리소스 : 오픈스택 스토리지 서비스에 대한 백엔드
- 기능 : 객체 스토리지, 블록 스토리지, 파일 시스템을 지원, Cinder, Swift, Manila의 백엔드
Manila 📌
- 개념 : 오픈스택 파일 공유 서비스
- 관리하는 리소스 : 파일 공유 (NAS)
- 기능 : 인스턴스간 네트워크 파일 시스템 지원 CIFS, NFS 지원.
Octavia 📌
- 개념 : 오픈스택 Load Balancer as a Service
- 관리하는 기능 : 로드 밸런서
- 기능 : 수평확장 가능한 로드 밸런서, 로드 밸런싱 서비스를 제공하여 트래픽을 여러 서버에 분산시키고 관리
Ceilometer 📌
- 개념 : 오픈스택에서 발생하는 이벤트 및 텔레메트리 데이터를 수집, 저장, 및 검색하는 역할
- 관리하는 리소스 : 인스턴스, 네트워크, 스토리지 등에서 발생하는 사용량 및 이벤트 수집
- 기능 : 가상 머신 및 인프라 이벤트의 수집 (예: 가상 머신 시작, 정지, 네트워크 사용량 등), 보고서 생성
Gnocchi 📌
- 개념 : Ceilometer에서 수집된 텔레메트리 데이터를 저장, 처리, 및 검색하는 서비스
- 관리하는 리소스 : 메트릭 데이터
- 기능 : 고성능, 확장 가능한 저장소 및 쿼리 엔진 제공, 데이터 압축 및 집계를 통한 저장 최적화, 간단하고 효율적인 데이터 검색 및 쿼리 지원
Ceilometer는 텔레메트리 데이터의 수집과 이벤트 관리를 담당하고,
Gnocchi는 수집된 데이터를 효율적으로 저장하고 조회할 수 있도록 하는 역할.
오픈스택의 메인 컴포넌트간 연결 관계 스터디
OpenStack Component Architecture

Architecture Guide Red Hat Enterprise Linux OpenStack Platform 7 | Red Hat Customer Portal
OpenStack 컴포넌트간 통신
- RESTful API : 컴포넌트간 명령
- AMQP (RabbitMQ) : 컴포넌트 내 RPC나 pub-sub 구조의 이벤트 발행이 필요한 경우
서비스 데이터베이스
- RDB (MySQL) : 설정, 사용자 인증, 이벤트 정보
VM 생성 라이프사이클 스터디

Horizon
- REST API Horizon → Keystone
Horizon에서 인증 요청을 하면 Keystone에서 인증과 인가 후 token을 발급합니다. - REST API Horizon → Nova
nova-api
→ Keystonenova-api
로 요청한 호출에 대해 Keystone에 token 검사를 합니다.
Nova (compute)
- Database
nova-api
→ Nova database
새 인스턴스에 대한 정보를 데이터베이스에 저장 합니다. - Message Queue
nova-api
→nova-scheduler
메시지 브로커를 통해nova-scheduler
로 새 인스턴스를 실행할 적절한 노드를 찾기 위해 RPC를 호출합니다. - Message Queue
nova_scheduler
→nova_compute
메시지 브로커를 통해nova_compute
로 새 인스턴스를 시작하도록 요청 합니다. - Message Queue
nova_compute
→nova_conductor
인스턴스 준비를 위해nova_conductor
에 RPC 호출을 합니다. - Message Queue
nova_conductor
→ Message Queue
Flavor (인스턴스 생성 템플릿) 을 조회 한 후 새 인스턴스의 상태를 MQ로 게시 합니다.
Glance (Instance image)
- REST API
nova_compute
→glance_api
새 인스턴스 요청을 MQ로 부터 얻어 Flavor의 이미지를 Glance로 REST 요청합니다. 이때 Glance는 Keystone으로 token 검사를 합니다. - REST API
glance_api
→nova_compute
이미지를 Database에서 검색하여nova_compute
로 전달 합니다.
Neutron (Network)
- REST API
nova_compute
→neutron_server
Glance 와 마찬가지로 새 인스턴스 요청에 대해 Neutron으로 REST 요청 합니다. 똑같이 Neutron은 Keystone으로 token 검사를 합니다. - Database
neutron_server
→ovn-nb
새 인스턴스의 네트워크 정보를 데이터베이스에 추가합니다. - Database
ovn-northd
→ovn-sb
ovn-nb
에 저장된 논리 구성을 데이터 경로 흐름으로 변환하여ovn-sb
에 다시 저장합니다. - Database
ovn-controller
→ovs-vswitchd
,libvirt
→nova_compute
ovn-sb
로 부터 구성을 가져와 OpenFlow 컨트롤러로 연결합니다. 또한libvirt
에서 얻은 DHCP와 L2정보를 MQ에 반환합니다.
반환한 정보는nova_compute
가 받아서 인스턴스 데이터베이스에 정보를 추가합니다.
Cinder (Block device)
- REST API
nova_compute
→cinder_api
Neutron과 마찬가지로 새 인스턴스에서 사용할 볼륨의 생성을 Cinder로 REST 요청 합니다. 똑같이 Cinder는 Keystone으로 token 검사를 합니다. - Message Queue
cinder_api
→cinder_scheduler
새 인스턴스에서 사용할 볼륨을 생성하거나 찾기 위해cinder_scheduler
에 RPC 호출을 합니다. - Message Queue
cinder_scheduler
→nova_scheduler
메시지 브로커를 통해nova_scheduler
로 볼륨의 정보를 전달 합니다. nova_compute
→libvirt
이제까지의 정보를 가지고libvirt
를 사용하여 인스턴스를 생성합니다.- Message Queue
cinder_volume
→libvirt
cinder_scheduler
에서 MQ로 전달한 볼륨 정보를libvirt
로 전달해 마운트 합니다.