클라우드를 도와주는 오픈소스 OpenStack(오픈스텍)

2022. 2. 4. 01:18잡다한 IT/개발자도 궁금한 IT인프라

IaaS사업자가 주로 사용하는 OpenStack은 은 풀링된 가상의 리소스를 사용하여서 프라이빗, 퍼블릭 클라우드를 구축 및 관리하는 플렛폼이다. 2010년에 오픈소스 프로젝트로 시작되서 매년 2회씩 업데이트가 되고있으며 전 세계에서 약 500여 개의 기업에서 15,000명 이상의 개발자들이 지원을 해 주고 있다. 

 

최초로 나타난 오픈스텍은 렉스페이스와 나사의 지원이 있었기에 만들어질 수 있었는데 이 두곳의 회사에서 핵심 영역의 소스코드를 기부했으며 이것을 바탕으로 지금까지 만들어진것이다. 가상화 개념과 비슷한 내용이 많지만 차이점으로는 환경에서 프로세스를 '자동화' 할 수 있으며 NIST(미국 국립 표준 기술원)에서 잡은 5가지 기준점을 충족하는 환경을 제공해 준다.

 

한국에서는 KT유클라우드 서비스에서 실제로 구축한 서비스가 있다.

오픈스텍은 서비스의 집합체 이다. 기존의 인프라 기능들이 소프트웨어 적으로(SDx-Software Defined Anything) 구현되어있다. 이것을 설치하기 전에는 일반적인 서버이지만 설치 후 각각의 서비스를 배치하면 한 서버가 서버 가상화 하이퍼바이저가 되기도 하고 네트워크 장비가 되기도 하고 스토리지가 되기도 한다. 배치만 잘 하면 에플리케이션을 구동하기 위한 서버의 기능뿐 아니라 인프라의 각 영역을 담당하는 멀티플레이어가 되곤 한다.

경제성을 확보하기 위해서는 약 100대이상의 서버가 클라우드 위에서 구성되어야 하며, 업무 시스템이 10~20중화 정도는 되어야 한다.

Horizon은 서비스 포털 개념이다. 내가 어떤 서비스를 사용할 수 있는지 나타나있는 GUI이다. CLI를 사용할 수 도 있다.

Nova는 가장 핵심이 되는 서비스로서 VM을 생성, 삭제, 기동, 종료 하는 등의 일을 한다. 즉 서버 컴퓨팅 자원을 배분하는 일을 한다. Neutron과 Cinder와 Swift라는 스토리지 서비스가 있으며 Keystone은 사용자의 권한과 인증을 담당한다. Glance는 프로파일 관리 서비스를 해 준다. Ceilometer는 사용량을 측정해 주며 Heat는 인터페이스를 하나로 통합해 준다. 전용 데이터베이스 서비스인 Trove와 Hadoop클러스터와 연결하기 위한 인터페이스 서비스인 Sahara도 있다.

 

핵심 서비스인 Nova는 컴퓨터의 자원 풀을 관리하고 자동화 하는것이다. 이런 설명만 보면 vmware와 Xen등과 착각하기 쉽지만 노바는 하이퍼 바이져 기술이나 리눅스 컨테이너 등을 제어하는 개념이다. 파이썬으로 형성되어 있기 때문에 다른 레거시 시스템들과 Third-arty제품들과 연동하는 기능이 강력하다.

 

여기서 클라우드 아키텍쳐는 기본적으로 클라우드 서비스를 구성할때 컨트롤러 노드와 컴퓨팅 노드, 그리고 블록 스토리지 노드와 오브젝트 스토리지 노드로 구성한다. 노바는 컨트롤러 노드에 노바 컨트롤러를 설치하고  컴퓨팅 노드에 노바 클라이언트를 설치한다. 그러고 나면 수많은 노바 모듈과 라이브러리가 설치된 것을 확인할 수 있다. 

 

노바 컨트롤러는 클라이언트를 제어하고 클라이언트는 각각의 하이퍼바이저에 API기반으로 명령을 한다. 명령을 수신받은 하이퍼바이저는 각각의 VM을 제어한다. 오픈스텍을 설치하고 나면 리눅스에서 사용되는 표준 가상화 기술인 QEMU-(Quick EMUlator)타입의 가상 시스템이 리눅스 커널을 하이퍼 바이저로 전한하기 위한 가상 기술인 KVM(Kernel-based Virual Machie 커널 기반 가상 머신) 기반으로 설치된다. 그렇기에 주로 우분투, 센트os등에 설치가 된다.

 

Swift는 오브젝트 스토리지(데이터 저장 단위이다. avi, jpg파일 등)로서 VM이나 컨테이너 이미지를 저장해 두고 Glance를 통해서 프로파일화 하여 호라이즌 웹 데시보드로 GUI를 제공한다. 

 

Neutron은 네트워크 기반의 서비스로서 NFV(Netwok Function Virtualization)과 비슷한 개념이다. 수 많은 네트워킹 기술을 소프트웨어 기반으로 하여 구현했. 즉 OSI 7의 모든 계층, 그리고 방화벽 등의 네트워크 관련 장비의 모든 기능을 다 수행한다. Pluggable플러거블)아키텍쳐라고도 한다. 특별히 무엇인가를 할 필요 없이 단순히 데시보드에서 L3계층에 삽입만 하면 구축이 된다.

 

Keystone은 인증서비스로서 상요자와 권한을 인증 받은 것을 다른 서비스에 인증할 수 있는 URL형식을 만들어 준다고 보면 된다. 어떤 방법, 어떤 서비스에 접근할 수 있는지, 어떤 Ternent(사용자 모임)인지 정의하게 된다.

 

Cinder는 블록 스토리지를 관리할 수 있다. 리눅스는 LVM(Logical Volume Manager) 를 LV(Logical Volume)단위로 isCSI프로토콜을 사용하여 각 VM에 블록 디바이스를 제공해 줄 수 있다.

 

이런 많은 서비스들을 VM을 만들때 마다 일일이 사용한다면 굉장히 번거롭다. 그렇기 때문에 Heat를 사용하게 된다. 오픈스텍은 모든 서비스에 대해 REST API를 제공하는데 이것을 사용해 각각의 서비스에 일관된 명령어를 한 번에 전송함으로 손쉽게 vm을 관리할 수 있게된다.

 

Trove는 데이터베이스 서비스로서 안정성에 대한 의문이 있어서 잘 사용되지는 않는다. 그렇기에 오픈스텍 생태계에 맞도록 발전하고 있다.