Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

IaaS

가상 인프라용 클라우드 서비스라고 부릅니다. Infrastructure as a Service의 줄임말입니다. "이 서비스는 기본 빌딩 블록에 대한 액세서를 서비스하는 형태로 제공되는 클라우드 서비스입니다."라고 소개를 하더군요. 한마디로 무슨말인지 모르겠습니다. "빌딩 블록"이 의미하는 바가 너무 애매모호 하기 때문이죠. 여기에서 빌딩 블록은 "저장공간", "CPU와 메모리를 포함하는 완전한 서버", 데이터 베이스를 의미합니다.

현재 IaaS는 운영체 가상화 기술을 이용해서 구현하는게 일반적인 추세인 것으로 보입니다. 대게의 서비스들이 운영체제 단위로 구성하는게 단순하기 때문일 겁니다. 이해하기도 쉽죠. 웹 테스트를 위한 서버 자원이 필요하다. 그러면 웹 테스트를 위한 가상 서버를 할당하는 방식이죠.

가상화와 Iaas

앞으로 다른 형태의 IssA 구현이 나올 수도 있겠지만, 여기에서는 가상화를 중심으로 IaaS 서비스의 구조를 살펴볼 생각입니다. 단순한 네트워크 구성부터 복잡한 구성까지 알아보고 싶습니다. 아니 네트워크에 대한 지식이 많은 건 아니니까. 공부하면서 알아본다는 표현이 적당할 것 같네요.

가상화 도구는 이미 나온 것들이 있습니다. Xen, Kvm, Vmware, VirtualBox 역사도 오래돼서 이제는 믿고 사용할 수 있는 수준이 됐는데요.

가상화 기반의 IaaS는 ISO 이미지와 VM 이미지를 관리하기 위한 인프라위에 구축이 됩니다.

소규모의 IaaS

하나의 스위치로 구성되는 소규모 IaaS의 구성에 대해서 알아보겠습니다. 회사에서 내부적인 정보관리를 위해서 사용하는 구성이 되겠죠 ?

간단하게 생각하면, 사실 수작업으로 구성이 가능합니다. 가상화 프로그램을 가진 리눅스 배포판 하나 만들어서 설치하고 자주 사용하는 운영체제의 ISO를 CD로 구워서 뛰어 다니면서 설치하면 됩니다. 운영체제의 VM이 필요하다면, 나중에 사용할 수 있도록 복사하면 되구요.

이렇게 하면 관리가 짜증나겠죠. 다양한 종류의 VM와 ISO 이미지를 뛰어다니면서 수작업으로 관리하다 보면, 나중에는 관리자체가 안될 겁니다. 소규모의 IaaS 시스템 구축은 결국 이 과정을 관리 가능하도록 자동화 하는 겁니다.

이를 위해서 필요한 것들은 다음과 같겠죠.
  1. ISO 이미지와 VM 이미지를 공통 저장소에 저장한다.
이들 이미지들은 메타 정보를 가지도록 관리해야 겠죠. 그래야 어떤 목적의 이미지인지를 확인할 수 있을 테니까요.
  1. 가상화 소프트웨어가 설치되면, 공통 저장소의 이미지를 이용해서 VM의 인스턴스를 생성한다.
생성한 VM인스턴스에 대한 정보도 관리 해야 겠죠. 어떤 VM Host에서 인스턴스가 어떤 VM 이미지로 떴는지 등등의 정보입니다.
  1. VM은 시작, 중단을 할 수 있어야 하고 상태 모니터링도 가능해야 합니다.
대게의 가상화 프로그램은 CLI 인터페이스를 제공하는데요. 이 CLI 인터페이스를 이용해서 시작, 중단, 상태와 같은 기본 모니터링이 가능합니다. 상당한 수준에서의 상태 모니터링도 가능합니다. 시스템 관리자 수준에서의 정보가 필요하다면 별도의 프로그램을 만들어야 겠죠.

대략 네트워크 구성은 다음과 같을 겁니다.

참고로 이 구성은 VM 관리 소프트웨어에서 사용하는 일반적인 구성입니다. XenServer, VMWare Center 등 hypervisor별로 관리 소프트웨어 들이 있는데, 약간의 차이가 있지만 위의 방식으로 구성됩니다. 이미 관련 소프트웨어들이 개발돼 있지만, 구성을 살펴보면서 소프트웨어를 더 잘 이해할 수 있을 겁니다. 나중에 규모를 확장 하기 위해서 새로운 구조를 만들 때도 많은 도움이 될 거구요.

Network Storage에는 VM Root Disk, SnapShot, ISO Image, Template, Data Volume등이 올라갑니다. 규모에 따라서 Network Storage를 두 개로 구성할 수도 있을 겁니다. 하나는 동적인 데이터인 VM Root Disk와 Data Volume을 저장하기 위해서, 다른 하나는 SnapShot와 ISO Image등의 정적인 데이터를 저장에 사용하는 구성입니다. 각각 Primary Storage, Secondary Storage라고 부르기로 하겠습니다.

잠깐 몇 개 생소한 용어를 정리하고 넘어가도록 하겠습니다.
  • Root Disk : 운영체제를 포함한 디스크 볼륨입니다. 루트 마운트 볼륨으로 보시면 되겠습니다.
  • SnapShot : 가상화 소프트웨어는 현재 디스크를 그대로 떠서 저장하는 기능을 제공하는데요. 이기능을 SnapShot이라고 합니다. SnapShot는 데이터 복구 용도로 사용할 수 있습니다. 아주 믿을 만한 데이터 백업/복구 방식이라고 하기는 좀 힘니다. 메모리 내용까지 스냅샷 뜨지는 않기 때문입니다. 어떤 가상화 소프트웨어는 메모리에 있는 걸 디스크에 모두 기록을 하고 나서 스냅샷을 뜨는 기능도 있다고 하는데, 확실하지 않습니다.
  • ISO Image : 운영체제 설치를 위한 ISO 이미지입니다. 애플리케이션 구성에 따라 다양한 ISO Image를 만들 수 있을 겁니다. 데이터 베이스 서비스를 위한 ISO 이미지, 웹 서비스를 위한 ISO 이미지 등이죠.
  • Data Volume : Volume는 크게 Root Disk Volume와 Data Volume이 있습니다. Root Disk Volume은 루트 마운트 디스크 볼륨이고, Data Volume는 추가 디스크 볼륨입니다. 고객이 저장공간 확장을 원할때 Data Volume을 할당해줄 수 있겠죠. 그럼 고객은 할당받은 공간을 마운트해서 사용할 수 있습니다.
이들 스토리지는 iSCSI와 NFS 등으로 마운트 해서 사용할 수 있도록 구성됩니다.

Storage 구성

클라우드 컴퓨터는 공간과 시간을 하나로 통일한 다음 이를 나눠주겠다는 개념입니다. 관리 시스템이라는 것은 이 공간과 시간을 제어하는 거죠. IaaS에서 공간과 시간은 VM 입니다. VM으로 사용자에게 독립된 공간과 시간을 주는 거죠. 시간은 CPU가 되겠고 공간은 저장공간이 될겁니다. 그러므로 VM을 관리하기 위한 Storage를 구성해야 합니다.

Storage는 주로 NFS(:12)와 iSCSI(:12)로 구성되는 것 같습니다. 일반적으로 iSCSI가 NFS보다 좋은 성능을 보여주는데, 그 때문인지 입출력이 많은 Root Disk나 Data Volume을 위한 Storage는 iSCSI로, ISO Image, SnapShot 등은 NFS로 구성하는 경우가 많습니다.

자유롭게 Volume을 관리할 수 있어야 하기 때문에, ZFS(:12)나 LVM(:12)같은 로직컬 볼륨 관리 기능을 가진 파일 시스템을 선호합니다. 이를테면 ZFS로 파일 시스템을 구성하고 iSCSI로 네트워크 인터페이스를 제공하는 식입니다.

대략 아래와 같은 구성을 가지게 될 겁니다.

<img src="https://docs.google.com/drawings/pub?id=17F_2gTXEc0ig3lXXVG-Z7I0xbh9ERmynO-LXlwpI2F4&amp;w=461&amp;h=511">

참고글

history

  1. 작성일 : 2011년 8월 15일