본문 바로가기

블로그

LG CNS 기술블로그 DX Lounge에서 최신 IT 소식을 만나보세요!

클라우드

클라우드 환경 구축을 위한 오픈소스, OpenStack

2017.09.25

오늘 이 시간에는 LG CNS Cloud 플랫폼으로 활용 중인 OpenStack에 대해 알아보고 그 적용 사례를 소개하고자 합니다.

OpenStack의 정의와 역할

먼저 OpenStack의 정의에 대해 알아볼까요?

openstack.org에 따르면, ‘OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter’ 라고 정의되어 있습니다. 즉, IaaS(Infrastructure As A Service)를 제공하기 위해 데이터센터의 인프라를 제어하는 클라우드 오퍼레이팅 시스템(소프트웨어)이라고 할 수 있는 것이죠.

l OpenStack 정의 (출처: www.openstack.org)

위의 이미지와 같이 Common H/W(Server, Network, Storage)와 S/W기반에서 OpenStack이라는 제어도구를 활용하여 가상의 인프라 리소스를 IaaS 형태로 제공하는 역할을 담당합니다. 즉, OpenStack은 Public Cloud와 Private Cloud 환경을 구축할 수 있도록 해주는 오픈소스 소프트웨어로, ‘SDDC(Software Defined Data Center)’의 기반 플랫폼이라고도 정의할 수 있습니다.

OpenStack과 클라우드를 이야기할 때 가상화와 가장 많이 비교되는데요. 기본적으로 가상화 기술을 활용하고 있으나 전통적인 가상화 기반의 업무형태와는 다르게 활용될 수 있습니다. 아래 이미지를 보시면 이해가 쉬울 것 같습니다.

l Virtualization(좌), Cloud(우)

가상화 업무는 고객의 서비스 요구에 따라 각 요소별 전문가들이 역할을 수행하여 구성되는 반면, Cloud의 경우 Self-Provisioning 또는 단일화된 창구를 통해 서비스 인프라가 구성됩니다.

즉, 모두 가상화 기술을 이용하여 H/W 자원의 효율성은 비슷하지만 리소스 제공의 시간이 단축되므로 업무 효율성을 증가시켜 줍니다. 이처럼 Cloud의 기반이 되는 것이 OpenStack이라 할 수 있습니다.

OpenStack의 시작과 릴리즈

OpenStack은 미국의 호스팅 업체인 Rackspace와 미항공우주국 NASA가 함께 개발하여 2010년에 릴리즈한 오픈소스 기반의 플랫폼입니다. Amazon과 같은 서비스에 대응하기 위해서 만들기 시작했으며, 현재까지도 Amazon과 유사한 서비스가 추가되고 있습니다.

현재 NASA는 오픈소스 커뮤니티에서 빠지고 OpenStack 재단이 만들어지면서 독립적인 운영권을 갖게 되었는데요. OpenStack은 2010년 7월, 서버 가상화 기능인 Nova와 오브젝트 스토리지 서비스인 Swift가 더해져 Austin이라는 버전으로 처음 출시되었습니다.

이후 6개월(4월과 10월)에 한 번씩 릴리즈가 되고 있는데요. 안드로이드와 같이 알파벳 순으로 업그레이드되고 있습니다. Bexar, Cactus, Diablo 등에서 현재 2017년 4월에 발표된 Ocata까지 릴리즈 되었습니다.

최근 2년 동안 많은 기능이 추가되고 있는 모습입니다만, 추가된 기능이 서비스로서 완전하지는 않습니다. 일반적으로 최초 릴리즈된 추가 기능을 서비스로 활용하는 경우는 드뭅니다. 기능이 부족하거나 버그 등도 많이 존재하기 때문입니다.

OpenStack의 프로젝트들

OpenStack은 클라우드 서비스를 제공하기 위해 각각의 기능들을 ‘프로젝트’ 단위로 관리하고 있습니다.

이전에는 서비스로서 완성도 있는 프로젝트를 ‘Core 프로젝트’, ‘Integrated 프로젝트’라 하고, 완성도가 미숙한 프로젝트를 ‘Incubating 프로젝트’라고 하며 Incubating 중인 프로젝트의 성숙도에 따라서 투표로 ‘Integrated 프로젝트’로 격상시키는 ‘Integrated Release Model’로 운영했습니다.

하지만, 최근에는 ‘Big Tent Model’ 방식으로 변경하여 좀 더 쉽게 OpenStack의 프로젝트로 관리되도록 하는 방식을 취하고 있습니다. 아마도 이 방식 때문에 릴리즈마다 추가되는 프로젝트가 많아지고 있는 현상이 나타나는 것으로 보입니다.

현재 대표적인 OpenStack의 프로젝트를 살펴보겠습니다.

  • Nova(Compute): 서버 가상화 지원, 여러 가상화 S/W를 제어하여 VM 등을 관리합니다.
  • Swift(Object Storage): Rest API를 이용하여 URI를 가진 컨텐츠를 관리합니다. Amazon의 S3와 유사합니다.
  • Glance(Image): Nova에서 VM을 만들 때 필요한 OS이미지를 관리합니다.
  • Keystone(Identity): 모든 프로젝트의 인증 (허용된 사용자에게 서비스가 제공되도록)을 통합 관리합니다.
  • Neutron(Networking): 네트워크 서비스(L2, L3, L4, FW, VPN 등)를 지원하며, 1세대 SDN(Software Define Network)의 첫 사례로 볼 수 있습니다.
  • Cinder(Block Storage): 볼륨 서비스를 제공•관리합니다, Amazon의 EBS(Elastic Block Store)와 유사합니다.
  • Ceilometer(Telemetry): OpenStack에서 제공되는 자원의 사용량을 관리하며, 최근에는 모니터링 용도로도 확장되고 있습니다. (Monasca로분리)
  • Heat(Orchestration): 인프라 자원을 개별적으로 생성하기보다 서비스 템플릿을 정의하여 네트워크부터 VM, 볼륨 및 필요한 S/W를 설치하는 오케스트레이션을 제공합니다. Amazon의 CloudFormation과 유사합니다.
  • Trove(Database): MySQL, Redis와 같은 데이터베이스를 관리합니다. 일반적으로 데이터베이스가 설치된 VM을 제공하지만 CLI나 API로 데이터베이스 VM내의 Agent로 명령을 전달하는 방식입니다.
  • Sahara(Data Processing): Hadoop과 같은 빅데이터를 지원하는 클러스터를 관리합니다. Trove와 유사하게 Hadoop 컴포넌트가 설치된 VM을 제공하는 방식입니다.
  • Ironic(Bare metal): 가상화가 아닌 베어메탈 방식으로 서버를 제공하는 기능입니다. Amazon의 Dedicated Server 서비스와 유사합니다.
  • Zaqar(Message): Queue 서비스를 제공•관리합니다.
  • Designate(DNS): DNS 서비스를 제공•관리합니다.
  • Manila(Shared File System): NFS와 같이 공유 디스크 서비스를 제공•관리합니다.

OpenStack의 서비스 구조

혹자는 상기 프로젝트를 보면서 OpenStack만 설치하면 모든 서비스가 가능한 것으로 오해하실 수도 있지만, 전혀 그렇지 않습니다.

OpenStack은 앞서 ‘제어를 담당한다’라고 말씀드렸는데요. OpenStack은 실제 기능을 수행하는 H/W 또는 S/W에 사용자의 명령을 수행할 수 있도록 스케줄링, 전달하고 현황을 DB에 저장하여 관리하는 역할을 수행합니다.

예를 들어 OpenStack Nova를 설치했다고 해서 VM이 그냥 만들어지는 것이 아니라, Nova가 제어할 수 있는 가상화 소프트웨어(하이퍼바이저)가 있어야 한다는 뜻입니다. Nova는 사용자가 명령한 VM을 생성하기에 적합한 서버를 선택(스케줄링)하고, 서버에 설치된 하이퍼바이저에 적절한 명령을 전달하여 하이퍼바이저가 VM을 생성하도록 하는 것입니다.

OpenStack을 처음 접하는 분들이 가장 많이 오해하는 부분으로 아래의 이미지를 통해 좀 더 자세히 알아보겠습니다.

상기 이미지를 보시면 점선으로 구분된 영역이 OpenStack입니다.

사용자가 내리는 명령이 API 형태로 OpenStack에 전달되고 OpenStack이 정해진 정책과 규칙에 따라 판단한 결과에 따라 해당 기능을 실제 수행해 줄 수 있는 Legacy OS, S/W, H/W 등이 이해할 수 있는 명령어나 API로 다시 전달되어 사용자가 요구하는 IaaS를 구현한다는 것입니다.

실제 기능을 구현해주는 OS, S/W, H/W 등은 OpenStack에 자신을 제어할 수 있도록 Driver 등을 제공하여 OpenStack이 연동될 수 있도록 해주는 것입니다. 이러한 경우 사용자가 OpenStack에 내리는 명령은 하단의 S/W, H/W가 변동되거나 이기종을 사용하더라도 변하지 않으므로 유연하고 확장이 용이한 장점을 가지고 있는 것이죠.

예를 들어 전통적인 클라우드 환경에서는 ‘엔진’ 영역을 별도 개발하여 운영하였으나, 새로운 H/W나 S/W가 출시되어 활용하고자 할 때는 ‘엔진’을 새로이 개발하여야 하는 단점이 존재했었지만, OpenStack 환경에서는 Driver만 연결해준다면 이런 경우 ‘포털’이나 ‘엔진’ 등을 개발하거나 개선할 내용이 없거나 줄어드는 겁니다.

그리고 위와 같은 OpenStack의 장점을 누리기 위해서는 많은 준비와 노력도 필요합니다.

OpenStack으로 클라우드 서비스를 하기 위해서는 OpenStack 기술뿐만 아니라, 위에서 언급한 OS, S/W, H/W에 대한 전문지식도 많이 필요합니다. 더구나 OpenStack은 오픈소스 베이스라서 대부분 기능구현을 위해 오픈소스 S/W를 많이 사용하고 있습니다.

KVM(하이퍼바이저), OpenVSwitch(가상스위치), RabbitMQ, MySQL or MariaDB 데이터베이스, 리눅스OS의 Iptables, 스토리지 프로토콜(iSCSI, SAN, NAS 및 Ceph 등)에 대한 이해가 없이는 구현도 어려울 뿐 아니라, 각 요소의 이슈 발생 시 대처하기도 어려울 수 있기 때문입니다. (상기 컴포넌트는 필요에 따라 선택 가능합니다)

OpenStack을 하고자 하신다면 몇 명의 오픈소스 개발자로 시작할 것이 아니라 각 영역(서버, 스토리지, 네트워크 등)의 인프라 전문가, 그리고 데이터베이스, 빅데이터, DNS 등의 서비스 전문가 등이 함께 협업해야 원하는 결과를 얻으실 수 있을 것입니다. (몇 명의 개발자가 위에 언급한 모든 기술과 서비스를 이해하기도 어렵지만 전문기술을 단시간에 가지기란 더더욱 어렵겠지요).

일반 기업에서 위의 IT 기술 인력을 유지하고 OpenStack을 준비한다는 것은 어려울 수 있습니다. 최근 OpenStack을 구축•유지 보수하는 서비스를 상용화하여 지원하는 IT 기업들이 늘어나고 있는 이유일 것입니다.

LG CNS의 OpenStack

LG CNS는 2008년부터 Cloud 서비스를 제공하고 있습니다. 이후 하이퍼바이저나 스토리지의 변화에 따른 엔진영역의 유지보수•개선•추가개발이 많이 필요함을 느끼게 되었고, 이러한 단점을 보완하기 위해 2012년 1월부터 OpenStack을 준비했습니다.

개발 경험을 가진 인력들로 시작했었는데, 말씀드린 바와 같이 클라우드 서비스로서의 준비를 위해서는 IT 전 영역의 기술인력이 절대적으로 필요하다는 것을 느낄 수 있었습니다.

OpenStack을 PoC 수준에서 기능을 검증하는 것과는 달리 서비스 수준으로의 준비를 위해서는 컴포넌트 이중화, 운영의 방식(조직간 R&R 등) 등 많은 부분의 검토가 필요하기 때문인데요. 1년간의 R&D와 개발로 Amazon의 EC2와 유사한 ‘vHosting+’라는 이름으로 OpenStack Folsom 버전의 퍼블릭 클라우드 서비스를 2013년 5월에 오픈했습니다.

l 출처: www.openstack.org

‘vHosting+’는 Nova-Network라는 아키텍처 기반으로 모든 VM이 Flat Network에 구현되어 사용되는 구조로 테넌트 간 네트워크 분리가 아닌 공유 구조의 서비스였습니다. 네트워크가 공유구조이므로 Security Group을 이용하여 테넌트 간 보안을 유지해야 했습니다.

같은 해에 추가적인 준비로 Swift를 이용한 오브젝트 스토리지 서비스인 ‘vStorage’, Quantum(현재 Neutron)을 이용한 테넌트 별 독립된 네트워크를 제공하는 ‘VPC’ 서비스도 퍼블릭에 오픈할 수 있었습니다.

l 출처: www.openstack.org

‘VPC(Virtual Private Cloud)’는 상기 이미지와 같이 각 테넌트 별로 프라이빗 네트워크를 원하는 Tier만큼 생성할 수 있으며, 테넌트 전용의 가상라우터를 제공하여 테넌트 내 네트워크를 연결하여 운영하는 방식으로 최근까지도 대표적인 퍼블릭 클라우드 서비스에서 가장 많이 활용되는 서비스 아키텍처를 제공하는 서비스입니다.

상기 서비스는 퍼블릭뿐만 아니라 기업의 프라이빗 클라우드에서도 활용할 수 있는 아키텍처이지만 Enterprise 기업의 경우 가상 라우터에 대한 성능, 신뢰성을 염려하거나, 기존 Legacy 네트워크와의 연계 등을 위해서 다르게 응용하여 활용하기도 합니다.

2013년의 경험을 바탕으로 2014년부터는 OpenStack을 이용한 ‘프라이빗 클라우드’를 시도했습니다.

이는 고객의 데이터센터 영역 내 Legacy 네트워크에 ‘프라이빗 클라우드’ 환경을 구성하여 가상화 기반의 SDDC(Software-Defined Data Center) 서비스 환경을 구축•제공하는 서비스입니다.

‘VPC’환경과 같이 구성할 수도 있지만, 고객의 데이터센터 라우터를 이용하고자 할 때는 이와 같은 아키텍처를 이용하여 구성할 수도 있는데요. 고객의 요구에 따라 다양한 아키텍처로 ‘프라이빗 클라우드’ 환경을 제공하고 있습니다.

2014년부터 Enterprise OpenStack 아키텍처(Private)를 구축한 경험을 바탕으로 2015년에는 국내유명 인터넷 가격 비교 사이트에 프라이빗 클라우드를 구축했습니다. 현재 이는 고객의 B2C 서비스에 활용되고 있습니다.

또한, 2015년에는 자체 Cloud Manager인 ‘LG CNS Cloud Manager’를 개발하여 좀 더 쉽고 친숙한 GUI방식의 Self-Provisioning•모니터링 등의 환경을 제공하고 있습니다. 그리고 2016년부터 현재까지 공공기업 및 다양한 Enterprise에 OpenStack을 이용한 ‘프라이빗 클라우드’환경을 제공하고 있습니다.

LG CNS는 OpenStack Folsom버전부터 최근 발표된 Newton버전까지 다양한 패치를 적용하여 활용 중입니다. OpenStack이 여러 H/W를 사용할 수 있는 범용 오픈소스이고 기능 위주의 솔루션이다 보니 가끔은 운영관점의 요구사항과 배치되는 경우도 있습니다.

LG CNS는 다양한 인프라 운영 경험과 OpenStack 소스 분석•패치를 통해 사용자 의향대로 설계하여 활용하고 있습니다. 또한 대규모 클라우드 환경에서 경험 가능한 기능적 제약 사항 및 버그(Bug)들을 식별하고 소스 수정을 통해 보다 나은 품질의 서비스를 제공합니다.

지금까지 OpenStack 클라우드 플랫폼 및 LG CNS의 OpenStack의 경험과 사례를 소개해 드렸습니다. 감사합니다.

글 ㅣ LG CNS 인프라서비스담당

챗봇과 대화를 할 수 있어요