IT&코딩/클라우드의 이해

7. 오픈스택 (OpenStack)

솔론 2022. 12. 18. 18:29
728x90
반응형

■ 오픈스택 (OpenStack)

 

□ 오픈스택이란? 

 

데이터 센터 전체에 걸쳐 대규모 컴퓨팅, 스토리지 및 네트워킹 리소스 풀을 API 또는 대시보드를 통하여 제어하는 클라우드 운영체제

 

표준 IaaS(SDC.SDS.SDN) 관련 기능을 제공

공통 인증 기능이 있는 API를 통하여 관리 및 프로비저닝(할당·회수) 수행

 

웹 인터페이스를 이용하여 일반 사용자가 자원을 할당·관리할 수 있도록 셀프서비스 기능을 제공하고, 대시보드를 이용하여 관리자가 권한을 통제

 

오케스트레이션, 오류 관리 및 서비스 관리 기능 등을 통하여 사용자 응용프로그램의 고가용성 보장

 

 

□ 오픈스택 LandScape

 

 

□ 오픈스택 Roadmap

 

오픈스택은 설계와 개발 과정을 공개하는 것을 보장

오픈스택 머큐니티는 6개월 개발 주기로 다음 릴리즈를 제공

각 릴리즈 사이클 동안 사용자들로부터 요구사항 수집

개발자들이 PTG(Project Teams Gathering)에서 개발작업과 프로젝트간 협업을 위한 모임을 수행

 

□ 오픈스택 최근 Realease(Xena)

 

오픈스택의 24번째 릴리즈

새로운 하드웨어 기능에 대한 지원, 컴포넌트 간 통합 향상, 신뢰할 수 있는 안정화 코어의 기술적 관리 비용 절감 목표

세계에서 가장 활발한 오픈소스 프로젝트 중 하나로, 25주 동안 125개 이상의 조직, 680명 이상의 기여자가 15,000개의 변경사항을 Xena 릴리즈에 포함시킴

 

□ 오픈스택 핵심 서비스

 

 

■ 오픈스택 구조와 서비스 개요

 

□ 오픈스택 서비스 개요

 

OpenStack 프로젝트는 Private cloud를 포함하는 모든 유형의 클라우드를 위한 오픈소스 클라우드 컴퓨팅 플랫폼

OpenStack은 간단한 구현, 대량의 확장성과 풍부한 기능을 제공하는 것을 목표로 함

OpenStack은 상호 연계된 서비스들의 집합을 통하여 IaaS를 제공하는 솔루션

각각의 서비스들은 API(Application Program Interface)를 통하여 기능을 통합

OpenStack 사용자는 필요에 따라 서비스들을 조합하여 사용

 

OpenStack Project Navigator에서 OpenStack을 구성하는 각각의 서비스들을 확인

 

각 서비스들은 서비스 유형과 릴리즈 시리즈에 따라서 분류

- OpenStack Project Navogator는 4개의 유형으로 분류하여 안내한다.

(https://www.openstack.org/software/project-navigator/openstack-components)

 

OpenStack Services : 오픈스택을 구성하는 핵심 서비스

OpenStack tooling : 모니터, 과금, 자원 관리 등의 운영 서비스

Add-Ons to Services : OpenStack Service에 Plugin 되는 서비스

Intergration enablers : 컴포넌트 간 통합 기능을 위한 서비스

 

□ OpenStack Core Service - Keystone

 

OpenStack 'Essex' 릴리즈에서부터 제공

API 클라이언트에 대한 인증과 OpenStack 서비스 발견 등을 지원하기 위한 Identity API 서비스

LDAP, OAuth, OpenID Connect, SAML 및 SQL 등을 지원

OpenStack 사용자·관리자에 대한 ID와 Password를 관리

OpenStack 서비스들에 대한 접근 URL과 같은 EndPoint를 등록하여, 각각의 서비스들 사이에 서비스 발견(Discovery) 기능을 제공

 

 OpenStack Core Service - Glance

 

'Bexar' 릴리즈에서부터 제공

SDC를 위하여 생성되는 가상머신에서 사용할 서버 이미지 관리

가상머신이 요구하는 이미지를 네트워크를 통하여 전송

이미지는 swift나 내부 폴더 등의 다양한 저장장치에 저장

REST API를 통하여 이미지를 등록하거나 다운로드할 수 있음

등록된 이미지를 다른 사용자와 공유하거나 복사할 수 있음

특정 서비스가 미리 포함된 형태의 이미지로 템플릿을 구성

 

 OpenStack Core Service - Nova

 

OpenStack 'Austin' 릴리즈에서부터 제공

OpenStack이 IaaS를 지원하기 위한 핵심 서비스

SDC(Software Defined Compute)를 담당하고 있으며 OpenStack이 클라우드 운영체제가 되기 위한 기반을 제공

SDC의 기본 기능인 컴퓨팅 자원 풀을 관리하고 자동화

초기에는 리눅스 기반의 KVM 하이퍼바이저만 지원하였으나, 현재는 VMware, Xen, Hyper-V 뿐만 아니라 LXC와 같은 컨테이너를 지원하며 고성능 컴퓨팅을 위해 Bare Metal 자원도 관리

Glance를 통해 생성한 가상머신의 이미지를 실행

 

□ OpenStack Core Service - Neutron

 

OpenStack 'Folsom' 릴리즈에서부터 제공

SDN(Software Defined Network)를 담당하고 있으며 NaaS(Network as a Service)를 위한 기반 기능을 구현

OpenStack 자체의 네트워크 및 개별 프로젝트·사용자의 네트워크를 관리하고 자동화

NAT 기능과 DHCP 및 공인 IP 주소 등의 기본적인 N/W 기능과 VLAN/VXLAN 등의 가상화와 Load Balancing 및 방화벽, VPN 등의 부가적 제공

 

□ OpenStack Core Service - Horizon

 

OpenStack 'Essex' 릴리즈에서부터 제공

OpenStack의 대시보드에 대한 표준 구현

OpenStack Service들에 대해 Web을 기준으로 사용자 인터페이스 제공

Plugin 형태로 다양한 기능을 추가할 수 있도록 구성

관리자 기능과 일반 사용자 기능이 명확하게 구분되지 않아 일부 보안상의 문제를 내포

CMS(Cloud Management System) 등에서 Horizon을 기준으로 확장 및 기능분리를 통하여 클라우드 서비스 제공

 

□ OpenStack Service - Cinder

 

OpenStack 'Folsom' 릴리즈에서부터 제공

OpenStack을 위한 Block 스토리지 제공 서비스

블록 스토리지 장치들의 관리를 가상화하여 사용자들이 디스크에 대한 기본지식이 없어도 셀프서비스 API를 통하여 원하는 용량 만큼의 디스크를 사용할 수 있도록 지원

가상화 기능을 통하여 사용자가 사용하는 디스크가 실제 물리적인 디스크 중 어디에 설치되는지 몰라도 구성이 가능

초기에는 리눅스 시스템의 LVM 기능을 통하여 구현하였으며, 스토리지 제조사들은 Plugin Driver를 통해 지원

 

 OpenStack Service - Swift

 

OpenStack 'Austin' 릴리즈에서부터 제공

고가용성과 분산처리 및 일관성을 제공하는 Object 저장소

데이터와 데이터를 설명하는 메타데이터를 통합하여 Object로 관리하며, Object ID를 기준으로 객체에 접근

다수의 서버를 이용하여 확장서잉 뛰어난 스토리지를 제공

하나의 객체(Object)를 2곳 이상에 분산하여 저장하고 하나의 서버에 장애가 발생하는 경우, 분산 저장된 객체를 이용하여 다른 서버에 객체를 추가로 저장하는 방식으로 동작

 

□ 오픈스택 개념적 아키텍처

 

https://docs.openstack.org/ko_KR/install-guide/get-started-conceptual-architecture.html

 

□ 오픈스택 논리적 아키텍처

 

https://docs.openstack.org/ko_KR/install-guide/get-started-logical-architecture.html

 

 


 

■ 오픈스택 예제 아키텍처 및 실습준비

 

□ 오픈스택 실습준비

 

오픈스택 프로젝트

- 다양한 서비스로 구성되며, API를 이용하여 서비스 간 통합을 수행하고 개별 서비스 내에서는 메시지 큐(AMQP)를 기반으로 구성요소 간 통합 수행

 

오픈스택은 리눅스에 충분한 경험이 있는 사용자들에 대해 개념증명(PoC)의 형태로 서비스 기반의 구축을 가이드함

 

개별 패키지를 설치하는 서비스 기반의 구축 방식은 시험과 학습을 위한 목적으로만 사용

 

□ 오픈스택 기본 예제 아키텍처

 

기본적으로, 서비스 인스턴스를 실행할 수 있는 최소 두 노드로 구성

- SDC를 위한 컨트롤러와 컴퓨터 시스템이며, 가상먼신도 가능

 

선택적으로, SDS 구성을 위한 블록 스토리지와 오브젝트 스토리지 등을 구성하기 위해 추가적인 노드 사용 가능

- SDN 구성을 위한 네트워크는 컨트롤러 노드에서 지원

 

□ 오픈스택 기본 예제 하드웨어 요구사항

 

https://docs.openstack.org/ko_KR/install-guide/overview.html

 

□ 오픈스택 기본 예제 구성 - Controller

 

컨트롤러 노드에는 식별(Keystone) 이미지(Glance), Placement(스케쥴러), 컴퓨트 관리 부분(Nova), 네트워크 관리 부분(Neutron) 및 에이전트 그리고 대시보드(Horizin)가 실행됨

SQL 데이터베이스와 메시지 큐 및 NTP 서비스를 실행하고 있음

선택적으로 블록 / 오브젝트 스토리지, 오케스트레이션, 텔레메트리 서비스 실행

컨트롤러 노드는 최소한 두 개의 네트워크 인터페이스가 필요

실습을 위해서는 세 개의 네트워크 인터페이스를 사용

 

□ 오픈스택 기본 예제 구성 - Compute

 

컴퓨터 노드는 인스턴스(VM)을 동작시키는 hypervisor를 실행

KVM 하이퍼바이저를 기본적으로 사용

인스턴스에 가상 네트워크를 제공하는 네트워크 서비스 에이전트를 실행하고 security groups 그룹을 통해 방화벽 기능을 제공

하나 이상의 compute 노드를 배포할 수 있으며 각 노드는 최소한 두 개의 네트워크 인터페이스가 필요함

실습을 위해서는 세 개의 네트워크 인터페이스를 사용

 

□ 오픈스택 기본 예제 구성 - Block(스토리지)

 

블록 스토리지 노드는 선택적으로 추가할 수 있으며 인스턴스들을 위한 Block Storage

예제에서 compute 노드와 스토리지 노드 사이의 서비스 트래픽은 관리 네트워크를 통하여 제공

실제 운영환경에서는 별도의 스토리지 네트워크를 구현하여 성능과 보안을 향상시킬 필요가 있음

하나 이상의 block storage 노드를 배포할 수 있으며 각 노드는 하나 이상의 네트워크 인터페이스가 필요함

 

□ 오픈스택 기본 예제 구성 - Object(스토리지)

 

Object 스토리지 노드도 선택적으로 추가할 수 있으며 계정, 컨테이너, 오브젝트들을 저장하기 위해 사용하는 디스크를 포함

예제에서 compute 노드와 스토리지 노드 사이의 서비스 트래픽은 관리 네트워크를 통하여 제공 

실제 운영환경에서는 별도의 스토리지 네트워크를 구현하여 성능과 보안을 향상시킬 필요가 있음

두 개의 노드를 필요로 하며, 각 노드를 하나 이상의 네트워크 인터페이스가 필요함

 

□ 오픈스택 기본 예제 구성 - Network

 

가상 네트워크는 두 가지 옵션 중에서 하나를 선택하여 설치

 

1) 프로바이더(Provider) 네트워크

- Layer-2 서비스 및 네트워크에 대한 VLAN 기능을 가능한 한 단순한 방식으로 사용할 수 있도록 하는 옵션

- 가상 네트워크를 물리 네트워크에 직접 연결하고, Layer-3 서비스는 물리 네트워크에 으존

 

2) 셀프서비스(self-service) 네트워크

- VXLAN과 같은 오버레이 네트워크 방식을 사용하여 사용자별 네트워크 구성을 가능하게 함

- 가상 네트워크를 NAT를 사용하여 물리 네트워크로 라우팅(layer-2)하며, LBaaS, FWaaS와 같은 고급 서비스의 기반을 제공

- 사용자는 네트워크 인프라에 대한 기반 지식 없이 가상 네트워크 생성 가능

 

* 옵션 1에 따른 노드 구성

 

https://docs.openstack.org/ko_KR/install-guide/overview.html

 

 

* 옵션 2에 따른 노드 구성

 

https://docs.openstack.org/ko_KR/install-guide/overview.html

 

예제의 네트워크 구성

 

실선 : Core component

점선 : Optional conponent 

 

점선은 실습에서 사용하지 않음

 

□ 오픈스택 기본 예제 구성- VM 준비

 

기존에 설치한 Ubuntu 서버 Base 이미지를 복제(Clone)하여 컨트롤러와 컴퓨트 노드를 준비

Base 이미지에서는 최소 사양을 기준으로 준비되어 있으므로 환경설정을 변경하여 실습용 VM을 준비하여야 함

컨트롤러와 컴퓨트 노드 모두 두 개의 네트워크 인터페이스를 사용하므오 Base 이미지 생성시에 2개의 NIC응 사용하도록 하는 것도 무방

 

https://docs.openstack.org/ko_KR/install-guide/overview.html

 

https://docs.openstack.org/ko_KR/install-guide/overview.html

 

기존에 설치한 Ubuntu 서버 Base 이미지는 1개의 네트워크 인터페이스 카드(NIC)만 설치되어 있음

 

컨트롤러 노드와 컴퓨터 노드에 각각 2개의 네트워크 인터페이스가 필요하므로 VM의 설정사항을 편집하여 네트워크 인터페이스를 추가

 

추가한 네트워크는 관리용 네트워크(10.0.0.0/24)를 사용할 예정이며, NAT 네트워크를 이용함

 


 

■ 오픈스택 실습용 VM 생성

 

□ 오픈스택 실습용 VM 네트워크 구성

 

 

Host Only Interface

- VirtualBox 내부의 VM과 Host 사이의 통신

- Host 컴퓨터 외부로의 통신은 불가

- OpenStack 실습 시 VM 제어 및 설정용 Interface

 

IPv4 주소 대역 : 192.168.0.0/24

 

controller : 192.168.0.11

compute : 192.168.0.31

 

□ 오픈스택 실습용 Host Only Interface

 

Windows 내부에서만 동작하는 Intereface

- 도구 -> 호스트 네트워크 관리자

 

 

호스트 네트워크 관리자

- 기존 네트워크를 수정하거나 신규 생성 가능

- "만들기(C)"를 이용하여 신규 생성

 

 

호스트 네트워크 관리자

- Windows 자체의 인터페이스를 변경하므로 관리자 권한이 요구됨

 

 

- 네트워크 추가 진행중 

 

 

- 신규 네트워크 추가결과(IPv4 자동 생성)

- "속성(P)" 아이콘을 클릭하여 내부속성 수정

 

 

- 호스트 네트워크 변경에 따른 권한 요청

- 신규 생성된 네트워크의 IPv4 주소 수정

 

 

NAT 네트워크 Interface

- Host 컴퓨터 외부로의 통신을 담당

- Host 컴퓨터 내부에서는 고유의 IP를 사용

- Host 컴퓨터 외부에서는 Host의 IP를 사용

- 내부와 외부의 중계를 위한 Table을 이용

- OpenStack 실습 시 2개의 네트워크를 사용

 

IPv4 주소 대역 : 10.0.0.0/24, 203.0.113.0/24

controller : 10.0.0.11, 203.0.113.11

compute : 10.0.0.31, 203.0.113.31

 

□ 오픈스택 실습용 VM 네트워크 생성(NAT)

 

VirtualBox - 환경설정

- 도구 -> 환경설정

 

 

- 네트워크 항목 선택

- 우측의 "+" 아이콘을 통하여 신규 NAT 생성

 

 

- 신규 생성 시, 이름과 내부 속성 자동 생성됨

- 신규 생성 후 편집 아이콘을 통하여 내부 수정

 

- 첫 번째 네트워크는 Management 네트워크

- IPv4 주소 대역은 변경 필요(10.0.0.0/24)

- Management 네트워크의 IPv4 주소 대역변경

 

- 두 번째 네트워크 ㅊ추가

- 두 번째 네트워크는 Provider 네트워크

- IPv4 주소 대역은 변경 (203.0.113.0/24)

 

- NAT 네트워크 설정 완료

 

□ 오픈스택 실습용 VM 복제(Clone)

 

 

Ubuntu_Base 이미지 선택

 

- 마우스 우클릭 후 팝업메뉴 확인

- 복제(O)메뉴 선택 후 신규 VM 정보 입력

 

- 이름 : Node 이름

- 경로 : VM의 디스크 파일등이 위치하는 경로

- MAC :  새 MAC 주소 생성 

 

- 복제 방식 결정

완전한 복제 : 디스크 용량 2배, 원본 불필요 (보통 완전한 복제 선택)

연결된 복제 : 디스크 용량 최소, 원본 필요

 

- 가상머신 환경설정 및 디스크 복제

 

Controller Node 이미지 생성 완료

- 환경설정을 통하여 네트워크와 메모리 수정

 

□ 오픈스택 실습용 VM 환경 설정

 

Controller - 설정

- Controller 이미지 선택 및 "설정(S)" 선택

- 네트워크 메뉴 선택

- 네트워크 -> 어댑터1 -> 다음에 연결됨(A) -> 호스트 전용 어댑터 -> 이름 -> Host-Only Ethernet Adapter #2

 

 

- 네트워크 -> 어댑터2 -> 다음에 연결됨(A) -> NAT 네트워크 -> 이름 -> NatNetwork -> 고급 -> 무작위 모드(P) -> 모두 허용 (Management용)

 

- 네트워크 -> 어댑터3 -> 이름 -> ProviderNetwork -> 고급 -> 무작위 모드(P) -> 모두 허용

 

네트워크 설정 완료

- 네트워크 어댑터 3개 설정 확인

 

 

- Controller Node 복제 및 환경설정 완료

728x90
반응형