[TIL] About OpenStack

lifeisgenie·2025년 10월 28일

오늘의 끄적끄적..

목록 보기
3/3
post-thumbnail

1일차를 클라우드 컴퓨팅으로 마무리했고, 오늘은 그 흐름을 이어 머릿속에 흩어져 있던 OpenStack 개념을 정리해 보려 한다. (네트워크 가상화는 다음에 ..)

단순히 서비스를 나열하기보다, 각 구성요소가 운영 환경에서 어떤 역할을 맡고 서로 어떻게 연동되는지에 초점을 맞출 것이다.

먼저 클라우드 서비스의 기본 단위를 간단히 정리하고, 이후 OpenStack의 아키텍처와 주요 컴포넌트의 동작 원리를 차근차근 살펴보겠다 ..!!


클라우드 서비스

VM Service

VM(Virtual Machine)이란?

소프트웨어를 통해 물리 서버를 다수의 가상 서버로 분할하는 기술

  • 하나의 물리서버에서 애플리케이션이 동작하기 위해 필요한 자원들을 묶어 하나의 객체 형태로 사용 가능
  • 클라우드 서비스에 서버를 사용할 때 일반적으로 물리 서버가 아닌 가상화된 서버를 제공 받음 (베어메탈도 제공하는 경우가 있음)

도움을 주는 옵션

  • 로드밸런서: 외부의 통신 데이터 양에 따라 부하를 분산
  • 오토스케일: 통신량에 따라 가상 서버의 개수를 자동으로 늘이거나 줄이는 기능
  • 정기적인 스냅샷(백업기능): 이용자가 설정한 주기별로 관리 서버 디스크의 백업을 생성하여 복제

Network Service

클라우드 서비스 위에 전용 네트워크 환경을 구축 가능하게 해주는 서비스

  • Subnet :
    • 하나의 큰 네트워크가 분할되어 나눠진 작은 네트워크
    • 고유한 IP 주소 범위를 가지며, 이 범위 내에서 IP 주소를 할당 받아 사용함
  • VPN(Virtual Private Network):
    • 공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 외부에 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망
  • DNS(Domain Name Service):
    • 특정 컴퓨터의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별번호(IP주소)로 변환하며, 흔히 ‘전화번호부’에 비유

트래픽 흐름

  1. 사용자가 DNS로 서비스 도메인 조회 → 로드밸런서 IP 반환

  2. 로드밸런서에서 트래픽 분산 → 각 Zone의 Subnet/서버로 전달
    (이 과정에서 방화벽이 보안정책 적용)

  3. 외부와 안전한 통신 필요 시, 인터넷 게이트웨이/VPN 게이트웨이를 통해 외부망 또는 타 거점으로 트래픽 송신

  4. VPN 게이트웨이에서 IPsec 터널 생성 → 외부 IPsec VPN 방화벽으로 전송

  5. 필요시, IP-VPN 전용선을 통해 가상 회선 연결

  6. 외부 방화벽에서 인증/복호화 → 내부망/서비스로 트래픽 전달

Storage Service

블록/파일/오브젝트 스토리지로 구분되면, 저장소·보관(아카이브)·백업(보호)·파일 서버·재해 대책 등의 용도로 사용

  • 파일 스토리지: 폴더와 파일로 이루어지는 계층 구조를 갖는 스토리지

    • 데이터를 찾기 위해 경로를 알아야 함
    • 데이터 양이 늘어나면 파일과 폴더를 계속 추적하기 위한 자원 요구가 늘어나 성능 떨어짐
    • NAS에서 자주 사용
  • 블록 스토리지: 정해진 블록안에 데이터를 저장하는 형식

    • 파일 스토리지와 같이 단일 데이터 경로에 의존하지 않아서 좀 더 신속하게 검색
    • 효율적이고 안정적인 저장 방법
  • 오브젝트 스토리지: 블록이나 폴더에 보관하는 대신 각각 독립적인 객체로 저장

    • 저장된 위치를 알 필요 없이 키 값만 알면 접근 가능
    • 확장성 우수
    • 데이터 종류와 양이 많아질수록 오브젝트 스토리지 사용 증가

Database Service

관계형 데이터베이스 관리시스템(RDBMS)

데이터를 테이블 형태(스키마)로 구성하는 관계형 모델에 따라 구조화해 저장 및 관리

  • 장점

    • 분류, 정렬, 탐색 속도가 비교적 빠름
    • 중복없이 한번만 저장
  • 단점

    • 부하 발생 시, 처리가 어려움
    • 스케일업만 지원하여 비용이 기하급수적으로 늘어날 수 있음

비관계형 데이터베이스 관리시스템(NoSQL)

관계형 데이터베이스와 반대되는 방식으로 보다 자유롭게 데이터 저장

  • 장점
    • 대규모의 데이터를 유연하게 처리, 설계 단순, 수평 확장에 용이
    • 데이터 분산이 용이하여 스케일업과 스케일아웃 모두 가능
  • 단점
    • 데이터 중복이 발생할 수 있음

OpenStack이란?

IaaS를 제공하기 위해 데이터센터의 인프라(컴퓨팅, 네트워크, 스토리지)를 제어하는 오픈소스 클라우드 오퍼레이팅 시스템이다.

  • 6개월 단위로 개발 및 릴리즈되고 있으며, 잦은 업그레이드로 인한 문제점 해결을 위해 1년마다 업그레이드하는 "SLURP" 릴리즈로 변화했다.

특징

  • SDDC(Software-Defined Data Center) 환경 구축 및 운영관리
  • 가상화 리소스에 대한 프로비저닝
  • API를 통한 내·외부 시스템 간 연동 가능
  • 독립적 멀티 테넌시 환경 구현
  • SSL/TLS 등 보안 프로토콜 지원

주요 기능

  • SDC(Software Defined Computing):

    • 가상화 기술을 사용하여 물리적인 컴퓨팅 리소스를 가상 환경으로 추상화
    • 사용자에게 VM에 대한 생성 및 관리 기능 제공
    • 자동화된 프로비저닝과 스케일링을 통해 컴퓨팅 리소스에 대한 동적 조정
    • 컴퓨팅 리소스의 중앙 집중식 관리와 모니터링 기능
  • SDN(Software Defined Network):

    • 네트워크 인프라를 Data Plane과 Control Plane로 분리하여 네트워크 가상화와 프로그래밍 가능성을 제공하는 중앙집중식 네트워크 구조
    • 소프트웨어로 정의된 네트워크 구성 요소를 사이의 동적인 데이터 전달 경로 설정 가능
    • Control Plane을 통해 전체 네트워크 동작을 프로그래밍 가능하게 하여 접근제어나 보안 규칙 등 복잡한 작업에 대한 단일 인터페이스 제공
  • SDS(Software Defined Storage):

    • 분산 저장 시스템 아키텍처를 채택하여 데이터 저장 공간을 가상화
    • 여러 물리적인 스토리지 디바이스를 하나의 추상적인 스토리지 풀로 연결 가능하게 하여 확장 가능하고 안정적인 데이터 저장 환경 제공

Architecture

VM 생성 과정

  1. 사용자가 가상 서버 생성을 요청
  2. 서버 가상화 제어(Nova)가 사용자가 요청한 가상서버 생성을 위한 컴퓨팅 서버를 배정하고 서버 가상화(Nova-Compute)에 가상서버 생성을 요청
  3. Nova-Compute는 네트워크 가상화 제어(Neutron)과 스토리지 가상화 제어(Cinder)에 가상서버용 네트워크 및 스토리지 생성을 요청
  4. Neutron은 네트워크 가상화(vSwitchAgent)에 가상 스위치 및 가상 NIC 생성 요청
  5. Cinder는 스토리지 가상화(Ceph)에 가상서버 볼륨 생성 요청
  6. Nova-Compute는 가상 네트워크 및 스토리지 생성이 완료되면, 하이퍼바이저에 가상서버 생성 요청
  7. 하이퍼바이저는 Nova-compute가 제공한 정보(네트워크, 스토리지) 참조하여 가상서버 생성

주요 컴포넌트

Keystone(OpenStack Identity)

인증과 권한 관리 서비스를 제공하는 서비스로 오픈스택 서비스 전반에 걸친 인증과 권한 관리 수행

  • 유저 인증 및 오픈스택 컴포넌트의 접근 권한 확인 등 공통 인증 프레임워크
  • Users, tenants 및 권한에 대한 정책 정의 및 관리
  • API 제공을 위한 Service endpoint(네트워크 URL) 관리하고 이를 user나 service에 제공(Catalog)

동작 방식

  1. 사용자가 Keystone에 아이디와 비밀번호를 입력하여 인증을 요구함
  2. Keystone은 사용자의 정보를 확인하고, 해당 사용자가 어떤 서비스에 접근할 수 있는 권한을 가지고 있는지 확인
  3. 인증이 성공하면 Keystone은 사용자에게 토큰을 발급함
  4. 사용자는 성공하면 토큰을 이용하여 다른 오픈스택 서비스에 접근함
  5. 서비스는 받은 토큰의 유효성을 Keystone에게 확인

Nova(OpenStack Compute)

VM의 라이프사이클을 관리하는 컴포넌트(컴퓨팅 서비스를 제공)

  • VM을 생성하고 종료하는 등 VM의 관리 역할 수행
  • KVM, XenServer가 많이 사용되며, 윈도우 계열인 Hyper-V도 지원
  • 특별한 하드웨어 없이 레거시 하드웨어를 사용해서 확장성 용이(Scalability)

구성요소

구분설명
Nova-compute실제로 가상 서버를 생성하고 관리하는 데몬
하이퍼바이저(KVM, Xen 등)와 상호 작용하여 가상 서버 실행
Nova-scheduler새로운 가상 서버를 생성할 때, 어떤 컴퓨팅 노드에 할당할지를 결정하는 스케줄러
Nova-api외부에서 Nova에 접근하기 위한 RESTful API를 제공
Nova-conductorNova-compute와 Nova-scheduler 사이의 통신을 중개하는 역할

동작 방식

  1. 사용자가 새로운 가상 서버를 생성하도록 요청
  2. Nova-api는 사용자의 요청을 받아 Nova-scheduler에게 전달
  3. Nova-scheduler는 적절한 컴퓨팅 노드를 선택하고, Nova-conductor에게 알림
  4. Nova-conductor는 Nova-compute에게 가상 서버 생성 요청 전달
  5. Nova-compute는 하이퍼바이저를 이용하여 가상 서버를 생성하고, 필요한 자원을 할당

Glance(OpenStack Image)

VM 생성을 위한 디스크 이미지를 제공하는 서비스

  • VM 생성 시 사용할 OS 이미지를 템플릿 형태로 제공
  • 이미지 저장, 이미지 검색, 이미지 등록 및 삭제 기능 제공

Swift(OpenStack Object Storage)

대용량 비정형 데이터를 저장하고 관리하는데 특화된 분산형 오브젝트 스토리지 서비스

  • 프록시 서버, 컨테이너 서버, 계정 서버, 오브젝트 서버로 구성

Neutron(OpenStack Networking)

VM에 사용자가 직접 네트워크를 정의하여 제공하는 서비스

  • 가상 네트워크를 생성/관리하며, VM에 네트워크를 연결하고, 부하 분산, 방화벽 등 다양한 네트워킹 기능을 제공
  • Software Defined Network(SDN)을 위한 프레임워크 제공
  • 가장 기본적인 API 사용과 다양한 벤더의 요구사항을 수용하기 위해 플러그인-에이전트 구조로 구성
    • 하드웨어 및 소프트웨어 기반 네트워크 솔루션의 통합 가능

Cinder(OpenStack Block Storage)

VM에 블록 스토리지 서비스 제공. 디스크 볼륨을 생성하고 관리하는 기능 제공

  • 생성된 VM에 부착되어 사용자 데이터를 지속적으로 저장하기 위한 블록 스토리지
  • 마치 컴퓨터의 하드 디스크처럼, 가상 서버에 필요한 저장 공간을 제공하고 관리하는 역할 수행
  • 블록 스토리지 볼륨 생성, 볼륨 스냅샷 생성, 볼륨 확장/축소, 볼륨 암호화 기능 제공

기타 컴포넌트

Ceilometer(Telemetry)

  • 관제 서비스와 과금을 위한 미터링 서비스 제공

Trove(Database)

  • 관계형 데이터베이스와 비관계형 데이터베이스를 서비스로 제공하는 배포 엔진
  • Trove는 데이터베이스가 아니며, MySQL과 같은 데이터베이스를 클라우드 서비스 형태로 가상 머신에 제공하는 기능

Sahara(Elastic Map Reduce)

  • Hadoop 클러스터를 간단한 방법으로 사용자에게 제공하는 서비스로 Hadoop 클러스터의 구성 기능과 클러스터 노드 추가 및 제거 기능을 제공

Ironic(Bare-metal)

  • 하이퍼바이저 위에 동작하는 가상 머신을 대신하여 비어 있는 컴퓨터를 Compute Instance로 사용할 수 있도록 지원
  • PXE나 IPMI를 이용해 빈 상태의 컴퓨터를 네트워크로 부팅시켜 컴퓨트 서비스를 제공할 수 있도록 지원
  • Icehouse 릴리즈에 처음 추가되었으며, Juno 릴리즈부터 Nova에 통합됨

Zaqar(Messaging)

  • 웹 또는 모바일 개발에 사용 가능한 메시징 서비스를 제공하는 프로젝트로, 클라우드 환경에 적합하도록 멀티 테넌트 환경 지원
  • 다양한 커뮤니케이션 컴포넌트(웹 클라이언트, 모바일 클라이언트, 서버 데몬, 오픈스택 서비스 등)들이 메시지를 주고 받을 수 있는 API 제공

Manila(Shared File System)

  • NFS나 CIFS를 이용한 공유 파일 시스템을 대체하기 위한 프로젝트로, 가상 머신 간에 공유 가능한 파일 시스템 제공
  • Cinder가 제공하는 블록 스토리지는 단일 가상 머신에서만 접근이 가능한 스토리지이며, 이런 한계는 가상 머신의 마이그레이션에 많은 제약사항을 만듦

Designate(DNS)

  • DNS의 기능을 서비스로 제공하기 위한 프로젝트
  • 멀티 테넌트를 지원하는 동시에 REST API와 BIND 형태로 제공하는 것을 목표로 함

Barbican(Key Management)

  • 각종 비밀번호, 암호화 키, X.509 인증서 등을 안전하게 보관할 수 있는 공간을 제공하기 위한 프로젝트

Magnum(Containers)

  • Docker 또는 Kubernetes와 같은 컨테이너 서비스를 오픈스택에 통합하기 위한 프로젝트
  • Docker K8s를 포함한 운영체제 이미지를 제공하기 위해 Heat를 사용하고, 그 운영체제 이미지를 가상 머신 또는 베어메탈 서버에서 실행하여 컨테이너 서비스 제공

Murano(Application Catalog)

  • 클라우드에서 구동이 가능한 애플리케이션들을 카테고리 형태로 정리하여 카탈로그를 제공하고, 배포 가능하게 하는 기능 제공

Congress(Governance)

  • 동적으로 변화하는 클라우드 환경의 관리와 규칙을 준수할 수 있도록 정책을 제공하는 프로젝트
  • 메뉴얼 형태로 관리되는 운영 규칙과 작업 절차 등을 시스템화하기 위한 서비스

고가용성(HA) Structure

  1. HAProxy & Pacemaker 기반 고가용성 소프트웨어 LB 서비스 제공, 물리 LB로 대체 가능

  2. Core API 서비스는 Stateless 서비스로 장애 시 서비스 영향도가 없음 (해당 요청 처리에만 영향).

    • Cinder & Glance 백엔드는 Ceph 백엔드로 정의하여 노드 장애 시 데이터 영속성을 보장
  3. MariaDB 데이터 복제 이중화 구성과 Quorum 투표 참여 3중 구성으로 고가용성 구현 (Galera 복제 기반 클러스터로 실시간 동기화 Active/Active 구성)

  4. RabbitMQ 이중 구성으로 메시지 큐 동기화

    • Client Round-Robin Call: RabbitMQ Client는 자체 LB 기능을 이용하여 RabbitMQ 서버에 연결

마무리하며

오늘은 클라우드 서비스의 기본 구조를 다시 짚고, OpenStack의 주요 컴포넌트와 아키텍처를 정리했습니다. 이 과정을 통해 OpenStack이 단순한 가상화 관리 솔루션이 아니라, 컴퓨팅·네트워크·스토리지를 통합 제어하는 클라우드 인프라 플랫폼임을 다시 확인할 수 있었다 ㅎㅎ

다음에는 OpenStack과 긴밀히 연동되는 Ceph를 다룰 예정입니다. Ceph는 OpenStack의 블록·오브젝트·파일 스토리지 백엔드로 동작하며, 고가용성과 데이터 영속성을 보장하는 핵심 구성요소이다.

OpenStack의 SDS(Software-Defined Storage) 개념이 실제로 어떻게 구현되는지 함께 정리해보려 한다!!

profile
인프라 엔지니어가 되고 싶은 삶은 지니의 끄적끄적..

0개의 댓글