Cloud 플랫폼위에 컨테이터 클러스터 구성
Openstack 인프라위에 Docker Swarm 을 배포해봅니다.
목표
- Docker Swarm의 개념과 Openstack에 대해 알아봅니다.
- Docker Swarm을 간편하게 구성해 주는 Openstack Heat Service를 알아봅니다.
- Heat를 이용하여 Docker Swarm을 구축합니다.
개요
오픈스택을 이용하여 인프라가 구성되어 있다는걸 전제로 설명합니다. 오픈스택 인프라위에 오케스트레이션 서비스인 Heat를 사용하여 Docker Swarm을 구성하는 방법을 정리해봅니다.
Openstack
오픈스택은 수십 개의 오픈 소스 프로젝트들의 집합입니다. 이러한 오픈 소스 프로젝트들은 “클라우드 컴퓨팅”을 위한 주요 구성 요소들로 각각의 특징과 용도가 다릅니다.
흔히 사용하는 클라우드 플랫폼인 AWS 와 비슷한 성격을 가지고 있다고 볼 수 있습니다.
엄밀하게는 오픈스택(OpenStack)과 AWS(Amazon Web Services)는 클라우드 컴퓨팅을 위한 두 가지 주요 플랫폼이지만, 각각의 특징과 용도가 다릅니다. 오픈스택은 “기업용 프라이빗 클라우드” 환경을 구축하기 위함이고 AWS는 다수의 사용자를 타겟으로 IaaS 서비스를 제공하는 “퍼블릭 클라우드” 환경을 제공합니다.
프라이빗과 퍼블릭 클라우드를 같이 사용하는 하이브리드 클라우드개념도 존재합니다. 주로 민감한 데이터는 프라이빗 클라우드 플랫폼을 이용하고 온디맨드성 서비스는 퍼블릭 클라우드를 사용합니다.
다시 Openstack 으로 돌아와 Openstack 서비스들에 대해서 알아봅니다. AWS와 Openstack은 유사한 기능을 제공하는 서비스들이 존재합니다. AWS의 각 서비스들과 Openstack을 빗대어 생각하면 쉽게 이해할 수 있습니다.
여기서는 Openstack의 핵심 서비스들만 정리하였습니다.
- Nova (Compute Service) - AWS EC2
- Nova는 가상 머신(VM)을 프로비저닝하고 관리하는 오픈스택의 서비스입니다.
- AWS EC2는 비슷한 역할을 하는 서비스로, 가상 서버를 생성하고 실행합니다.
- Neutron (Networking Service) - AWS VPC
- Neutron은 네트워크를 가상화하고 관리하는 오픈스택의 서비스입니다.
- AWS VPC는 가상 사설 클라우드 네트워크 환경을 제공하며, 네트워크 관리를 지원합니다.
- Cinder (Block Storage Service) - AWS EBS
- Cinder는 블록 스토리지를 제공하는 오픈스택의 서비스로, 가상 머신용 영구 스토리지를 관리합니다.
- AWS EBS는 비슷한 역할을 하는 서비스로, EC2 인스턴스에 연결하여 블록 스토리지를 제공합니다.
- Glance (Image Service) - AWS AMI
- Glance는 가상 머신 이미지를 관리하는 오픈스택의 서비스입니다.
- AWS AMI(Amazon Machine Image)는 EC2 인스턴스를 시작하기 위한 이미지를 정의하고 관리합니다.
- Swift (Object Storage Service) - AWS S3
- Swift는 객체 스토리지 서비스로, 대량의 비정형 데이터를 저장하고 검색합니다.
- AWS S3는 비슷한 역할을 하는 서비스로, 객체 스토리지를 제공합니다.
- Keystone (Identity Service) - AWS IAM
- Keystone은 오픈스택에서 인증 및 인가를 관리하는 서비스입니다.
- AWS IAM(Identity and Access Management)은 비슷한 역할을 하는 서비스로, 사용자 및 권한을 관리합니다.
- Horizon (Dashboard) - AWS Management Console
- Horizon은 오픈스택의 웹 대시보드로, 사용자가 리소스를 관리하고 모니터링할 수 있도록 합니다.
- AWS Management Console은 AWS 서비스를 관리하는 데 사용되는 웹 인터페이스입니다.
- Heat (Orchestration Service) - AWS CloudFormation
- Heat는 템플릿을 사용하여 리소스를 자동으로 프로비저닝하고 스택을 관리하는 오픈스택의 서비스입니다.
- AWS CloudFormation은 비슷한 역할을 하는 서비스로, 리소스 및 인프라스트럭처를 정의하고 배포합니다.
- Ceilometer (Telemetry Service) - AWS CloudWatch
- Ceilometer는 클라우드 환경에서 리소스 사용량 및 성능 데이터를 수집하고 모니터링하는 오픈스택의 서비스입니다.
- AWS CloudWatch는 AWS 리소스 및 애플리케이션 성능을 모니터링하는 서비스입니다.
위와 같은 서비스들을 이용하여 AWS와 같은 클라우드 컴퓨팅 플랫폼을 구축할 수 있습니다.
예를 들어 사용자가 요청한 사양에 맞게 VM을 생성하여 제공하고, 사용자가 직접 네트워크를 구성하여 사용하려는 작업에 맞는 인프라 환경을 사용할 수 있도록 제공합니다.
환경
현재 오픈스택 테스트베드의 인프라 구성은 아래와 같습니다.
- Openstack 인프라를 구성하는 코어 서비스들로 이루어져 있으며 좀 더 복잡한 인프라 구성으로 되어 있지만 Docker Swarm을 구축하는데는 아래와 같은 환경으로도 가능합니다
- Openstack Version은 2022년 10월에 릴리즈된 Zed 버전을 사용합니다.
- 노드는 총 4대로 구성되어 있습니다.
System Architecture
실제 물리 장비인 node 구성도로는 4대의 노드로 구성되어 있습니다.
각 노드안에 프로세스들은 실행되고 있는 프로세스들 입니다.
1 |
|
Heat Service Install
1. Heat 서비스를 위한 유저를 생성
- 대문자로 이루어진 PASSWORD와 NETWORK_HOST_NAME은 설치하는 환경에 맞추어 설정이 필요합니다.
1 |
|
2. Heat 서비스 데이터를 저장할 DataBase를 생성
1 |
|
3. Network 노드에 Heat을 설치
1 |
|
4. Heat 설정하기
- PASSWORD, NETWORK_HOST_NAME, CONTROLLER_HOST_NAME은 설치하는 환경에 맞추어 변경이 필요합니다.
1 |
|
Dashboard에 heat ui plugin 설정
- 오픈스택 대시보드 서비스인 호라이즌에 heat ui plugin을 사용하여 heat ui를 사용할 수 있습니다.
1. heat 대시보드 설치 (Controller Node)
1 |
|
2. Heat 대시보드 플러그인 활성화 (Controller Node)
1 |
|
3. Heat 대시보드 설정 ( Compute Node)
1 |
|
Docker Swarm Template 생성
- Heat는 yaml 형식의 템플릿 파일을 읽어 프로비저닝을 가능하게 합니다.
- Openstack 공식문서에서 Heat Template 가이드가 존재하며 자세하게 확인할 수 있습니다.
- 아래는 제가 만들어본 Heat Template 입니다.
- Docker Swarm Master, Worker VM을 생성하는 템플릿으로 구성되어 있습니다.
DockerSwarmMaster.yaml
1 |
|
DockerSwarmWorker.yaml
1 |
|
- 프로젝트 탭 → Stack 탭으로 진입합니다.
- Launch Stack 클릭합니다.
- 파일 선택 버튼을 클릭해 생성한 템플릿을 지정합니다.
- 템플릿에 Default 값으로 설정되어 있는 값들을 자신의 환경에 맞는 값으로 바꿔줍니다.
- 해당 정보로 새로운 stack이 생성됩니다.
- 생성한 Master, Worker 노드에 SSH 접속하여 Docker Swarm을 구성합니다.
1 |
|
1 |
|