오픈스택(OpenStack)의 통합과 상호 작용 방식
● RESTful API를 통한 컴포넌트 상호 작용
오픈스택의 각 컴포넌트는 RESTful API를 통해 서로 통신합니다. 이 API들은 HTTP 프로토콜을 사용하여 리소스의 생성, 읽기, 수정, 삭제(CRUD) 작업을 수행합니다. 예를 들어, Nova(컴퓨트 서비스)가 사용자의 가상 머신 생성 요청을 받으면, Glance(이미지 서비스)의 API를 호출하여 필요한 이미지를 검색하고, Neutron(네트워킹 서비스)의 API를 사용하여 네트워크 설정을 구성합니다. 이러한 방식으로 컴포넌트 간의 상호 작용은 표준화되고 효율적인 방식으로 이루어집니다.
● 메시징 큐를 통한 비동기 통신
오픈스택은 RabbitMQ나 ZeroMQ 같은 메시징 큐 시스템을 사용하여 컴포넌트 간의 비동기 통신을 지원합니다. 메시징 큐는 컴포넌트 간에 메시지를 전달하는 중간자 역할을 하며, 이를 통해 시스템의 확장성과 복원력을 향상시킵니다. 비동기 메시징을 사용함으로써, 각 컴포넌트는 다른 컴포넌트의 응답을 기다리지 않고 독립적으로 작업을 수행할 수 있으며, 이는 전체 시스템의 성능과 가용성을 높입니다.
● 서비스 카탈로그를 통한 서비스 발견
Keystone(인증 서비스)은 오픈스택 내의 서비스 카탈로그를 관리합니다. 서비스 카탈로그는 클라우드 환경 내에서 사용 가능한 모든 서비스와 그 API 엔드포인트의 목록을 제공합니다. 사용자나 다른 컴포넌트는 서비스 카탈로그를 통해 필요한 서비스를 찾고, 해당 서비스와 통신할 수 있는 엔드포인트 정보를 얻을 수 있습니다. 이는 시스템 내에서 서비스 간의 동적인 상호 작용과 통합을 가능하게 합니다.
● 플러그인 및 드라이버 아키텍처
오픈스택은 플러그인 및 드라이버 아키텍처를 사용하여 확장성과 벤더 중립성을 제공합니다. 예를 들어, Neutron은 다양한 네트워킹 기술을 지원하기 위해 플러그인 아키텍처를 사용하며, Cinder는 다양한 스토리지 시스템과의 통합을 위해 스토리지 드라이버를 사용합니다. 이러한 접근 방식은 오픈스택을 다양한 하드웨어 및 소프트웨어 환경에서 유연하게 배포할 수 있게 합니다.
오픈스택의 통합과 상호 작용 방식은 클라우드 인프라스트럭처의 효율적인 관리와 확장을 가능하게 합니다. RESTful API, 메시징 큐, 서비스 카탈로그, 그리고 플러그인 및 드라이버 아키텍처를 통해 오픈스택은 모듈식, 확장 가능하며 유연한 클라우드 컴퓨팅 솔루션을 제공합니다. 이러한 특징은 오픈스택을 기업의 다양한 클라우드 컴퓨팅 요구사항을 충족시키는 데 필수적인 플랫폼으로 만듭니다.
오픈스택(OpenStack)의 동작 방식
- 동일 컴포넌트 내에서 동작하는 방식
컴포넌트는 API 서버와 Agent 로 구성되어있다
API 서버는 클라이언트의 요청 혹은 다른 컴포넌트의 요청을 받아들인다.
Agent는 자원을 생성/삭제하는 역할을 한다 (예: nova-compute agent는 vm을 생성/삭제한다)
API가 받은 요청을 Agent가 처리할 수 있도록 명령한다. 이를 rpc call라고 부른다
(nova-api가 인스턴스 생성 요청을 받으면, nova-compute(agent)가 vm을 만든다)
API와 Agent간 통신은 AMQP를 지원하는 MQ를 이용한다. (대표적으로 RabbitMQ)
- 다른 컴포넌트를 호출하는 방식
Agent가 요청 처리에 필요한 또 다른 자원을 다른 컴포넌트에게 요청하기도 한다.
( 예: nova-compute가 vm을 생성하다가, vm에 연결할 block storage 생성을 cinder에 요청 )
서로 다른 컴포넌트끼리는 REST API 를 통해 요청한다.
- 인스턴스 생성
오픈스택(OpenStack)의 자원 관리 방법
Vm, network, storage와 같은 자원을 다루는 API는 모두 비동기로 처리된다.
자원 생성의 경우, API서버는 요청을 받고 자원의 UUID와 함께 202 Accepted를 반환한다.
자원을 요청한 쪽에서는 주기적으로 UUID값으로 상태를 조회하며 생성여부를 확인한다.
( timeout 시간 만큼 시도하다가, 확인되지 않으면 전체 요청을 실패처리한다 )
OpenStack이 storage, network, vm 자체를 직접 만들지 않는다.
OpenStack은 자원의 상태만 관리하고 자원의 실체는 다른 서비스를 사용하며 실질적인 자원을 다루는 서비스와 연동하기 위해 다양한 Driver를 지원한다.
오픈스택(OpenStack) 2편 컴포넌트 알아보기
오픈스택 컴포넌트 오픈스택(OpenStack)은 주요 기능이 각각 독립된 하부 컴포넌트로 나뉘어 개발되고 있습니다. 컴포넌트는 코어 컴포넌트와 옵셔널 컴포넌트로 크게 두가지로 분류됩니다. 코어
tech.ktcloud.com
12.3 통합과 상호 작용 방식
오픈스택의 통합과 상호 작용 방식은 이 오픈 소스 클라우드 컴퓨팅 플랫폼의 핵심적인 특징 중 하나입니다. 이 시스템은 다양한 컴포넌트 간의 원활한 통합을 통해 강력하고 유연한 클…
wikidocs.net
'OpenStack' 카테고리의 다른 글
[개념] 오픈스택(OpenStack)의 구조 및 구성 요소 (0) | 2024.06.20 |
---|---|
[개념] 오픈스택(OpenStack)이란? (0) | 2024.06.20 |