프라이빗 클라우드 관점에서 OpenStack
- 데이터 센터의 물리적 하드웨어를 논리적인 리소스 풀로 추상화하여, 내부 사용자에게 AWS와 유사한 셀프 서비스를 제공하는 플랫폼
- Compute Node : 수백 대의 서버 CPU/RAM을 하나의 거대한 컴퓨팅 자원으로 묶는다.
- Storage Node : 여러 스토리지 장비를 하나의 거대한 저장 공간으로 통합한다.
- Network Node : 물리적 스위치 구성을 변경하지 않고도, 소프트웨어적으로 네트워크 대역폭을 쪼개거나 합친다
- => 사용자는 내가 쓸 VM이 어떤 랙의 서버에 뜨는지 알 필요가 없으며, OpenStack이 가장 여유로운 곳에 자동으로 배치한다.
Project (프로젝트)
- OpenStack의 아키텍처를 구성하는 개별 서비스를 Project라고 부른다. (일종의 각각의 기능들, 혹은 모듈들), 이 프로젝트들은 독립적인 서비스로 실행되며, API를 통해 서로 통신한다.
- Nova (Compute)
- OpenStack의 핵심 컴퓨팅 서비스로, 컴퓨터 자원의 풀을 관리하고 자동화한다.
- Nova의 주 역할은 가상 머신(VM), 즉 인스턴스의 전체 생명 주기(Lifecycle)를 관리하는 것이다. 여기에는 인스턴스의 생성, 스케줄링(물리적 호스트 할당), 실행, 중지, 삭제가 포함된다.
- 사용자의 요청을 받아 하이퍼바이저 관리 API(libvirt 등)를 호출하여, 최종적으로
KVM, Xen, Hyper-V, VMware ESXi 같은 하이퍼바이저가 실제 VM을 생성하도록 지시한다.
- Neutron (Networking)
- 네트워킹 서비스
- 사용자(테넌트)에게 '서비스로서의 네트워킹(Networking-as-a-Service)'을 제공한다. 이는 가상 네트워크(L2), 서브넷(L3), 라우터, 로드 밸런서(LBaaS), 방화벽(FWaaS), VPN(VPNaaS) 등 가상 네트워킹 인프라를 API를 통해 생성하고 관리하는 기능을 의미한다. 또한 외부(Public) 네트워크 접근을 위한
Floating IP(유동 IP) 할당 및 관리를 담당한다.
- Cinder (Block Storage)
- 블록 스토리지 서비스
- 인스턴스에 연결할 수 있는 영구적인(Persistent) 블록 스토리지인
볼륨을 제공한다. 이는 물리적 서버의 HDD나 SSD를 연결하는 것과 유사하다. 인스턴스가 삭제되더라도 Cinder 볼륨은 데이터가 유지되며, 다른 인스턴스에 다시 연결(attach)할 수 있다. (AWS의 EBS와 유사한 역할)
- Keystone (Identity)
- ID 관리 서비스. 공통 인증 시스템
- 인증(Authentication) : 사용자가 누구인지(User, Password) 확인하고, 성공 시 범위가 지정된(Scoped) 토큰을 발급한다.
- 인가(Authorization) : 해당 사용자가 어떤 프로젝트 내에서 어떤 역할을 가졌는지 정의하고, 토큰을 기반으로 특정 API 요청을 수행할 권한이 있는지 확인한다.
- 서비스 카탈로그(Service Catalog) : Nova, Neutron, Cinder 등 다른 OpenStack 서비스들의 API 엔드포인트(Endpoint) 목록을 제공한다.
- Glance (Image)
- 이미지 서비스. 디스크 및 서버 이미지를 위한 검색, 등록, 배급 서비스 제공, 저장된 이미지들은 템플릿으로 사용 가능하다.
- VM 인스턴스를 부팅하는 데 사용되는 가상 머신 디스크 이미지의 메타데이터를 관리하고, 이미지 자체를 저장 및 배포한다.
- 이 이미지들은 운영체제가 사전 설치된 템플릿(예: Ubuntu, CentOS, Windows Server) 역할을 한다.
- 이미지 데이터를 Swift, Ceph,
Cinder 등 다양한 스토리지 백엔드에 저장할 수 있다.
- Horizon (Dashboard)
- 대시보드(GUI).
- Horizon 자체는 클라우드 리소스를 직접 관리하지 않는다. Horizon은 Keystone, Nova, Neutron, Cinder 등 다른 OpenStack 프로젝트의 REST API를 호출하는 웹 기반 클라이언트이다.
- 사용자가 Horizon UI에서 버튼을 클릭하면(예: 인스턴스 생성), Horizon은 내부적으로 Nova API에 해당 요청을 전송하고 그 결과를 받아 사용자에게 시각적으로 표시한다. CLI와 함께 사용자가 OpenStack과 상호작용하는 수단이다.
- Manila (Shared File System)
- 공유 파일 시스템 서비스.
- Cinder가 단일 인스턴스에 연결되는 블록 스토리지(1:1)를 제공하는 반면, Manila는 여러 인스턴스에서 동시에 접근(마운트)할 수 있는 공유 파일 시스템(N:1)을 제공한다.
- NFS, CIFS, GlusterFS, CephFS와 같은 파일 공유 프로토콜을 기반으로 한다. (AWS의
EFS)
- Heat (Orchestration)
- 오케스트레이션 서비스.
- IaC를 구현한다. 사용자는
HOT(Heat Orchestration Template)라는 YAML 또는 JSON 기반 템플릿 파일에 필요한 클라우드 리소스(인스턴스, 네트워크, 스토리지, 보안 그룹 등)의 관계와 속성을 정의할 수 있다.
Heat 엔진은 이 템플릿을 읽어, 정의된 모든 리소스를 순서대로 생성하고 관리(업데이트, 삭제)한다. 복잡한 애플리케이션 스택의 배포를 자동화하는 데 사용된다. (AWS의 CloudFormation)