Stein 오픈스택 클라우드 서버 구축(1) - 개요 (update 2020.01.23)

 

b l o g p o s t

지난번 개인 오픈스택 클라우드 시스템 구축 프로젝트를 진행하던 도중 개인 사정으로 잠시 중단했는데 다시 시작합니다. 본 포스팅은 기존 Ocata 버전으로 구축을 진행하고자 하였으나, 어느새 오래된 버전이 되었네요. 현재 Train 버전까지 릴리즈 된 상태지만, 저는 Stein 버전으로 진행해 보겠습니다. 본 포스팅은 시리즈로 작성될 예정이며, 오픈스택에 대한 개념적 설명에 대해서는 진행 과정에서 필요한 경우에 따라 간략하게 정리하거나 별도의 포스팅으로 따로 다뤄보도록 하겠습니다.

자세한 설명은 오픈스택 재단의 기술문서를 참고하시기 바랍니다.

 

 

 

전체 시스템 구성
 
 
 
본 프로젝트를 진행하는 과정은 하드웨어 자원 구성부터 OS 설치 및 기본 네트워크 세팅, 오픈스택 구성, 가상 네트워크 구축 및 KVM 기반의 가상머신을 올리고 인터넷 통신이 가능한 구성까지 전반적인 절차에 대해 다룰 예정입니다. 특히 하드웨어를 구성하는 방식은 기업의 오픈스택 클라우드 시스템을 운영하는 케이스에 따라 워낙 다양하기 때문에 가장 기초적인 구성으로 다룰 계획입니다. 즉, 본 프로젝트의 최종 목표는 오픈스택 클라우드 환경에 가상머신을 올리고 인터넷 접속이 가능한 수준까지 구축하는 것을 1차 목표로 합니다.
 
또한 이 글을 참고하시는 분들의 환경과 여러가지로 구성 방식이 다를 수 있습니다. 추후에 기회가 된다면 다양한 방법으로 노드를 구성하는 방법에 대해서도 다룰 예정입니다.
 
 
오픈스택 클라우드 노드 아키텍처

 

 

오픈스택을 구성하기에 앞서 가장 중요한 것은 노드의 아키텍쳐를 구성하는 것입니다. 노드 구성 방법은 실제 시스템을 운영하는 기업이 어떻게 설계하는가에 따라 달라질 수 있지만, 저의 경우 개인적으로 구성하는 상황이므로 활용할 수 있는 하드웨어 자원도 한정적이며, 딱히 많은 리소스가 필요하지도 않습니다. 따라서 아래와 같이 심플하게 3개의 노드만을 우선적으로 구축할 것입니다.

- Controller Node(1대)

- Compute0 Node(1대)

- Network Node(1대)

 

물론 네트워크 노드를 제외하고 컨트롤러와 컴퓨트 노드 단 두대로만 구성할 수도 있으나, 일단 네트워크 노드를 별도로 분리해 보도록 하겠습니다. 컴퓨트 노드는 실제 VM의 자원 할당을 위한 노드로 사용되며 모든 VM의 트래픽은 오버레이 네트워크(VxLAN)를 통해 네트워크 노드를 거치도록 구축됩니다. 컨트롤러 노드는 전체 클라우드 시스템을 관리하기 위해 사용되는 필수 노드입니다.

 

 

 

하드웨어 구성

 

 

앞서 설명한 노드 구성을 토대로 각 노드 별 하드웨어 자원 구성을 아래와 같이 설계해 보았습니다.

 

노드 구성

 

실제 물리 장비(Host)는 총 2대입니다. 컨트롤러와 네트워크 노드는 호스트 OS의 VMware Fusion의 가상머신 상에서 구축했습니다. 컨트롤러나 네트워크 노드는 컴퓨트0과 달리 자원을 가상화 하는 등의 작업이 없기 때문에 충분히 가상머신으로 구성 가능합니다. 물론 호스트 장비의 자원은 충분해야 합니다. 또한 성능까지 생각한다면 절대 이런 구성을 추천드리지 않습니다. 물리 장비에서 구축하실 것을 권고드립니다.

 

이와 달리 Compute0 노드의 경우, 실제 가상머신을 생성 및 관리하고 자원을 할당해야 하므로, 자원이 넉넉하게 필요합니다. 특히 가상화도 자체적으로 지원해야 합니다. 따라서 VMware로 노드를 구성하는 것 보다 실제 물리 장비 한대를 통채로 사용하였습니다.

 


 
그리고 본 설계에서 생각보다 메모리나 CPU 자원이 턱없이 부족한 것 아닌가 생각할 수 있습니다. 하지만 저의 환경에서는 오픈스택 구축이 최종 목적이기 때문에 큰 문제 없습니다. 특히 추후 VM이 생성될 때 호스트 자원으로 부터 오버커밋 되는 부분까지 고려하면, VM 1-2개, 많으면 3대까지도 운영 가능한 환경입니다. 물론 오픈스택을 실제로 운영하고 서비스하기 위해서는 물리 자원이 넉넉하게 할당되어야 할 것입니다. (더하여 실제 구성에서는 노드를 VM으로 생성하는 것부터 말이 안되겠죠)

 
네트워크 인터페이스 구성

 

 
다음 단계로 본격적인 오픈스택 구성에 앞서, 네트워크 인터페이스 구성에 대해서도 고려해 봐야 합니다. 기본적으로 오픈스택을 구성하는 과정에서 관리용 네트워크와 오픈스택 서비스 통신용 네트워크를 별도로 구성하는데, 물리 장비에 NIC를 어떻게 구성하는가에 따라 실제 오픈스택 구축 과정에서 내부 시스템에서 인터페이스 구성이 달라질 수 있습니다. 물리 NIC는 3개까지도 각 포트 별로 다른 용도로 활용할 수도 있고(스토리지 노드를 사용하면 3개를 구성할 수도 있습니다), 1개의 NIC만을 사용하고 시스템 내부에서 가상 인터페이스를 통해 구현할 수도 있습니다. 저는 아래와 같이 가장 기본 구성인 2개의 포트를 활용해 보겠습니다.
 
네트워크 인터페이스 구성
 
현재 모든 인터페이스의 네트워크는 공유기를 통해 연결된 상태입니다. 포트 별 네트워크 대역에 따라 외부 접근 여부가 갈립니다.
저의 경우 컨트롤러와 네트워크 노드는 VM을 통해 구축하기 때문에 가상의 NIC를 각 VM에 2개씩 할당해 주었습니다. 각 포트는 아래와 같이 사용될 계획입니다.
 
vNIC1관리용 인터페이스. 외부에서 시스템 관리를 위해 사용되는 포트. 이 네트워크는 외부 인터넷 접근 가능.
vNIC2오픈스택 내부 서비스 간 통신용 인터페이스. 이 네트워크는 공유기를 통해서 같은 대역끼리 연결되며, 외부 접근 불가.
 
또 앞서 언급한 것과 같이 NIC를 1개만 사용해도 네트워크 구성이 가능합니다. Compute0의 경우, 현재 제가 사용중인 물리 PC(NUC Kit)가 NIC를 하나만 가지고 있기 때문에 추후에 시스템 내부에서 가상의 인터페이스를 생성하여 사실상 1개의 NIC로 2개의 네트워크 통신이 가능하도록 구성할 예정입니다.
 
실제 IP 할당은 다음 포스팅에서 진행하도록 하겠습니다.
 

 

TAGS.

Comments