본문 바로가기
오픈스택

오픈 스택이란

by 서기지망생 2024. 10. 13.

오픈 스택이란?

오픈 스택이란 오픈 소스 기반의 클라우드 컴퓨팅 플랫폼이다. 주로, IaaS(인프라 서비스) 환경을 구축하는데 사용되며, 기업에서는 데이터 센터 같은 물리적 인프라를 가상화해서 프라이빗 클라우드, 퍼블릭 클라우드, 하이브리드 클라우드를 구성할 수 있게 해준다.

주요 특징

  1. 오픈 소스
    1. Apache 2.0 라이선스를 사용하고 있어서 누구나 코드에 접근 가능하고 수정 및 배포가 가능하다.
  2. 모듈형 아키텍처
    1. 여러 개의 독립적인 모듈로 구성되어 있으며 필요한 모듈만 사용해서 클라우드 환경을 구축할 수 있다.
  3. API 기반 관리
    1. API를 통해서 각 모듈이 상호 작용하기 때문에 관리 및 자동화 환경에 적합하다.

오픈 스택 아키텍처

오픈 스택의 각 모듈을 컴포넌트라고 부르며 다음과 같은 컴포넌트가 존재한다.

  1. Nova: 가상 머신 (VM) 등의 컴퓨팅 자원을 관리하는 서비스
  2. Neutron: 네트워크 자원을 구성하고 관리하는 서비스
  3. Cinder: 블록 스토리지를 제공한다.
  4. Swift: 오브젝트 스토리지를 제공한다.
  5. Glance: 운영체제 이미지 관리
  6. Keystone: 인증과 권한 관리
  7. Horizon: 웹 기반 대시보드로, 관리자와 사용자가 오픈스택 자원을 쉽게 관리할 수 있도록 도와준다.

오픈 스택 동작방식

오픈 스택의 각 모듈간의 통신이 이뤄지는 분산 환경이다. 안정적이며 효율적인 통신이 필수적인데 이런 통신을 하기 위해서 각 모듈을 RPC(remote procedure call) 통신을 사용해서 비동기적으로 처리된다. RPC 통신을 통해서 비동기 통신을 통해 대규모 요청을 안정적으로 처리할 수 있으며 네트워크나 서비스 장애시에도 안정적으로 대응이 가능하고 모듈간 의존성을 낮추어 유지보수와 확장성도 쉽게 만들 수 있다.

오픈스택에서의 메시지 큐와 RPC의 흐름

  1. NovaRPC 호출 → 메시지 큐(RabbitMQ)로 전송
  2. 메시지 큐는 Cinder에 메시지를 전달
  3. Cinder가 작업 수행 후 결과를 메시지 큐에 전달
  4. 메시지 큐는 Nova에 결과를 반환

오픈 스택 패키지 구조

오픈 스택은 nova, neutron, cinder 등 다양한 모듈(컴포넌트)를 사용해서 자원을 관리하는데 여러 오픈스택 서비스와의 통신을 위해 추상화된 인터페이스를 제공하고 자동 인증과 통합된 API 호출을 가능하게 해서 개발자가 복잡한 HTTP 요청을 편리하게 제공할 수 있도록 Openstack sdk라는 개발자를 위한 클라이언트 라이브러리를 지원한다.

 

openstack sdk

  • 인스턴스 생성, 네트워크 설정, 볼륨 관리 등 다양한 openstack 리소스를 제어 가능하다.
  • 다양한 openstack 서비스(nova, neutron, keystone 등)와 통합된 API 호출 지원
  • 멀티 클라우드 환경 지원 (여러 openstack 클러스터에 연결 가능)

인스턴스 목록을 가져오는 샘플 코드

from openstack import connection

# OpenStack 인증 정보 설정
conn = connection.Connection(
    auth_url='<http://openstack.example.com:5000/v3>',
    project_name='my_project',
    username='admin',
    password='password',
    user_domain_name='Default',
    project_domain_name='Default'
)

# 인스턴스 목록 가져오기
for server in conn.compute.servers():
    print(f"Name: {server.name}, Status: {server.status}")

osc-lib

osc-lib은 openstackclient의 확장 및 플러그인 개발을 위한 python 라이브러리이며 기본 명령어 집합만 제공하는 python-openstackclient에 확장하여 cli를 제공할 때 사용할 수 있다. 개발자가 타겟이기 보다는 운영하는 사람이나 사용자가 cli를 통해서 편리하게 관리할 때 사용된다.

 

python-openstackclient

통합 cli를 제공하며 명령어 옵션과 플러그인은 OSC-lib 프레임워크를 통해 확장 가능하다. 또한, 새로운 openstack 서비스가 추가될 때마다 해당 서비스의 CLI 플러그인을 설치해 명령어를 확장할 수 있다. 내부적으로는 openstack rest api를 호출하여 명령을 처리한다.

샘플 CLI

openstack server list  # (Nova 인스턴스 목록 조회)
openstack network create net1  # (Neutron 네트워크 생성)

오픈 스택에 대한 개인적인 의견

클라우드 서비스를 제공하는데 VMWARE의 솔루션을 사용하는 경우도 많지만 24년도에 VMWARE 영구 라이센스를 종료하고 구독제 시스템으로 변경 후 솔루션 사용 비용이 몇 배는 늘어났기 때문에 오픈 스택이 더 각광 받지않을까라는 생각이 든다.

 

또한, 모듈 기반의 서비스를 제공하기 때문에 사용자 입장에서 필요한 모듈만 사용가능하고 API 기반의 관리가 가능하기 때문에 기업 입장에서도 상대적으로 유지보수가 용이하기 때문에 이전보다 더 수요가 많을 것으로 예상 된다. 그에 따라, 오픈 스택에 대한 전문적인 지식을 보유한 사람들도 늘어 날 것이고 클라우드 시장에 가장 중심적인 역할을 하지 않을까 싶다. 폐쇠적인 환경 보다는 오픈된 환경에서 개발 된다는 것을 기술적인 진보에 있어서 중요한 요소라고 생각된다.

댓글