-
Notifications
You must be signed in to change notification settings - Fork 0
CloudStack Network Model
이 문서는 오래된 내용을 다루고 있습니다. 최신 내용으로 갱신할 예정입니다.
이 문서는 2012년 당시의 CloudStack 설치 방법을 다루고 있습니다. 실습에 활용하기에는 무리가 있으니 설치 흐름을 배우는 단순 참고용으로 사용해주시기 바랍니다.
CloudStack은 완성된 소프트웨어로 잘 정리된 문서들을 제공한다. 이들 문서들만 읽어도 큰 어려움 없이 클라우드를 구축할 수 있다. 하지만 CloudStack을 이용해서 제대로된 클라우드 환경을 구축하고 운영하려면 CloudStack에서 지원하는 클라우드 네트워크 모델과 스토리지 모델을 이해하고 있어야 한다.
먼저 클라우드 스택의 network 모델을 설명한다.
이 문서의 내용은 다음 환경을 기준으로 만들었다.
- Hypervisor
- XenServer 5.3
- 운영체제
- XenServer는 리눅스에서만 작동한다.
- CloudStack
중소규모의 회사나 연구실에서 개발이나 테스트를 위한 작은 규모의 클라우드 환경을 구축하기 원할 경우에 참고할 수 있는 일반적인 구성이다.
- UTM
인터넷의 접점에 놓이는 네트워크 장비로 방화벽, 라우터, NAT, port forwarding 기능을 수행하는 장비. 인터넷으로 나가기 위해서는 NAT, 내부로 들어오기 위해서는 port forwarding을 이용한다. port forwarding 대신 SNAT을 사용할 수도 있겠다.
- L2 Switch
내부 네트워크를 연결한다.
- CNODE
Cloud node의 줄임말로 클라우드에 사용할 노드들이다. Custom VM은 CNODE에 만들어진다.
- MNODE
Cloud 인프라를 관리하기 위한 소프트웨어가 설치되는 관리노드 (Management node)로 cloudstack 소프트웨어가 설치된다.
- SNODE
Storage node로 Custom VM을 만들기 위한 ISO 이미지, VHD Template, Snapshot을 저장하기 위한 저장소를 제공한다. 대규모 클라우드를 구축하려 한다면, Custom VM의 root disk를 관리하기 위한 용도로 사용할 수도 있다. 저장소에 접근하기 위해서 NFS 혹은 ISCSI 인터페이스를 사용한다.
리눅스 시스템과 NFS, ISCSI등에 대한 이해가 있다면 그리고 문서를 꼼꼼히 읽으면서 설치한다면 3-4일 이내에 클라우드 환경을 구축할 수 있을 것이다.
바로 위에서 다루었던 클라우드 구성은 사설(private) 클라우드로 중소 규모의 회사에서 내부적으로 사용하기에 충분하다. 그러나 대학이나 큰 규모의 기업 혹은 클라우드를 서비스 하기 위해서는 그에 걸맞는 클라우드 구성이 필요하다. 다음은 대규모 클라우드 구성을 위한 제안이다.
이 구성은 몇개의 POD로 구성된다. POD는 [저장소]와 Cloud node cluster로 구성된 cloud 구성 단위로, 데이터 센터의 rack과 같다고 보면 된다.
Management POD에는 cloud를 관리하기 위한 소프트웨어를 구동하기 위한 노드들 그리고 SNODE가 위치한다.
SNODE를 보면 주저장소(primary storage)와 부저장소(secondary storage) 두 종류가 있다. primary storage는 게스트 VM의 Root Disk와 Data volume등 동적인 데이터를 저장하기 위한 공간이고, Secondary storage는 snapshot, template 등 정적 데이터를 저장하기 위한 공간이다.
VM의 Root disk와 Data volume은 vm이 생성된 CNODE의 로컬 스토리지에 저장하는 방법이 있다. 이렇게 할 경우 Primary storage를 따로 운용할 필요가 없다는 장점이 있는 반면, vm이동 backup 기능등의 구현이 어려워지며 fault tolerant한 운영이 어려워진다는 단점이 있다.
Primary storage를 따로 운용을 하면, storage까지 추상화함으로 좀더 클라우드 다운 클라우드 환경을 구축할 수 있다는 장점이 있다.
반면 Primary storage를 구축하기 위해서는 꽤 많은 별도의 비용이 필요하다는 단점이 있다. 루트 디스크와 데이터 볼륨은 대역폭과 접근속도가 중요한데, 이를 만족하기 위해서는 고성능의 장비가 필요하기 때문이다. 대신 스토리지의 기능을 이용해서 fault tolerant한 시스템을 구축할 수 있다.
예를 들어 Primary storage로 ZFS를 사용한다면 RAIDZ, snapshot, 압축, hot-spot, mirror 등의 기능을 이용해서 안정된 스토리지자원을 제공할 수 있다.
위 구성은 모든 VM이 L2로 묶이는 구성으로, 간단하게 구성할 수 있지만 동일한 브로드케스팅 영역에 있기 때문에 훌륭한 구성이라고는 할 수 없다. 클라우드로 일반 사용자에게 VM을 서비스를 한다면 유저별 Network간 격리(isolation)가 중요할 텐데, L2 네트워크에서 사용할만한 방법으로는 VLAN이 유일하다. VLAN구격인 IEEE 802.1.q는 최대 VLAN의 크기를 4092로 정하고 있다. 이는 사용자 수가 4096명을 넘어가면, 더 격리할 수가 없기 때문에 유저를 추가할 수 없음을 의미한다.
때문에 이 구성은 데이터 센터급의 클라우드 구조로는 적합하지 않다. 그러나 왠만한 중/대규모의 클라우드 센터 구축에는 충분하리라 생각된다. 이 구조를 설명한 이유는 CloudStack 2.2.13의 두 개 네트워크 모드 중 하나인 Advanced Network mode가 이 구조를 가지고 있기 때문이다.
클라우드를 서비스는 망 분리가 필수적이다. 4개로 분리하는 것이 가장 좋다.
- Public network. 인터넷으로 연결하기 위한 네트워크.
- Guest network. 일반 유저를 위한 private 네트워크.
- Manage network. CNODE와 SNODE를 관리하기 위한 네트워크, CloudStack API의 통로다.
- Storage network. Primary storage는 대량의 데이터가 이동하므로 충분한 대역폭을 제공해야 한다. Secondary storage는 서비스 규모에 따라서 Manage network에 위치해도 된다.
- 16.83.0.0/16 퍼블릭 네트워크다. 유저 VM은 이 네트워크를 이용해서 인터넷과 연결할 수 있다.
- 172.20.0.0/16 유저 VM의 private 네트워크다.
- 10.10.1.0/24 매니지먼트를 위한 네트워크다. 이 네트워크를 이용해서 클라우드 자원을 관리한다.
- 10.20.1.0/24 CNODE는 이 네트워크를 이용해서 스토리지에 접근할 수 있다.
대략 시스템 견적이 나온다.
- CNODE는 4개 정도의 1G 네트워크 카드를 가지고 있는게 좋겠다.
- MNODE는 2개의 1G 네트워크 카드를 가지고 있어야 한다.
- SNODE는 그림 상으로 2개지만 대역폭을 확보해야 하기 때문에, 메니지먼트용으로 사용할 1G 네트워크 카드와 2개 이상의 10G 네트워크카드가 필요하겠다.
Primary storage는 대역폭과 속도가 중요하므로 결국 NAS를 사용해야 할 것 같다. iSCSI를 스토리지 엑세스 프로토콜로 사용하면 되겠다. 이제 스토리지를 구성할 파일시스템을 선택해야 하는데, ZFS를 추천할만 하다.
스토리지 네트워크 구성 방법 2가지를 소개한다.
LACP를 이용 두개 이상의 NIC를 묶어서 하나의 물리적인 NIC인 것처럼 만들 수 있다. 이렇게 해서 대역폭을 확보할 수 있으며, NIC 장애에 대한 Fail Over가 가능하다. Primary storage와 Secondary storage 모두에 적용할 수 있을 것이다.
네트워크 트래픽을 두개 이상의 스위치로 분산한다. 여러 개의 물리적 NIC을 하나의 NIC처럼 보이게 할 수 있으며, fail over도 가능하다.