이 포스팅은 2022 오픈소스 컨트리뷰션 아카데미 지역 스프린트 @전주에 참여해 멘토님과 함께 단일 노드 오픈스택을 구축한 내용입니다.
4학년 캡스톤 프로젝트로 오픈스택을 이용한 서비스를 만들어보기로 했다.
일반적으로 오픈스택을 구축할 때는 여러 개의 노드를 가지고 구성한다.
노드들끼리 연결된 tenent 네트워크 하나, 각자의 노드가 외부 인터넷과 연결된 관리 네트워크 하나. 이렇게 하나의 노드는 총 두 개의 네트워크를 가진다.
하지만 우리가 구축하려는 노드가 학교 네트워크 내에 위치해 있어서 공인 IP를 받기가 어렵다.
그래서 하나의 컴퓨터로 compute, controller 노드를 구성해보기로 했다.
먼저 아키텍쳐의 구성은 아래와 같다.
네트워킹 서비스를 설정하기 위해서는 Provider와 Self-Service 두 옵션 중 한 가지를 선택한다.
Provider는 물리적인 네트워크로 서비스 제공자가 제공하는 네트워크이다. Provider가 인터넷에 연결된다. 공인 IP가 할당된다.
Self-Service는 논리적인, 가상의 네트워크이다. Self-Service는 사용자가 자신만의 vm 인스턴스를 구축하는 네트워크이다.
학교 랩실에서 구축할 때는 학교 네트워크 망을 사용하므로 Provider Network가 학교 인터넷 대역이 된다. 하지만 학교에서 이 네트워크를 열어 주는 것은 불가능해 이를 가상으로 구축한다. 노드 안에서 더미인터페이스로 가상의 네트워크를 구성하고 이를 학교 외부 인터넷망과 연결을 해서 학교 외부와 연결을 한다. 이렇게 구성을 하게 되면 vm에서 요청받은 Provider Network는 노드 내의 더미 인터페이스로 요청을 넘겨주고 이와 연결된 학교 외부 인터넷망이 요청을 받아 응답을 해 외부 인터넷과 연결이 가능하게 된다.
오픈스택 구축에 사용한 Ubuntu 20.04 버전이고 Openstack 버전은 Xena이다.