Openstack Network 구축 과정 이해 – LinuxBridge편

26. September 2016 Openstack 1

networklayout
그림1. Openstack Mitaka 설치가이드의 네트워크 구성도

Ubuntu 14.04 Openstack Mitaka Install Guide 에서는 위의 네트워크 구성도를 기반으로 설정을 진행합니다.. 이 그림만 봐서는 Provider Network 의 역할이 무엇인지, 그리고 대부분의 오픈스택의 네트워크 구성도와는 다른 모습이여서 이해하는데 많은 어려움이 있었습니다.

이 포스트에서는 Install Guide 에서 제시하는 네트워크 구성도에 대한 이해와, 그것이 내부적으로 어떻게 구성되는지 명령어단위로 하나하나 분석하면서 알아보도록 하겠습니다.

Openstack Network 종류

많이 공개된 오픈스택 네트워크 구성도를 보면 크게 아래와 같이 3가지 네트워크로 구성됩니다.

  • Management Network : 관리용 네트워크. 각 컴포넌트(Nova, Neutron 등)이 서로 API 를 호출하는데 사용됩니다.
  • Tunnel Network : vm instance 간 네트워크를 구축하는데 사용되는 네트워크입니다. GRE, VXLAN 등의 기술이 사용됩니다. Overlay Network 라고도 부릅니다.
  • External Network : vm instance 가 인터넷과 통신하기 위한 네트워크.

Host 머신에 오픈스택을 설치하기 위한 인터넷 연결으로는 별도의 네트워크를 연결하거나, Management Network 를 인터넷에 연결되도록 구성합니다.

그림1을 보면 오픈스택 설치 가이드에서는 Management Network 와 Provider Network 이렇게 두 가지의 네트워크로만 구성하고 있습니다. Provider Network 는 무엇이고 Tunnel / External Network 는 어디로 간 것일까요? 이것은 설치 가이드에 나오는 Provider / Self-Service Network 에 대해 먼저 이해하고, 가이드에서는 각각의 네트워크를 어떤 용도로 사용하는지 파악하면 알 수 있습니다.

Provider / Self-Service Network 란?

설치 가이드 문서의 Neutron 설정부분에서 네트워킹 서비스를 설정하기 위해서 2가지 옵션 중 한가지를 선택해야합니다.

  • Provider Network : 오픈스택을 서비스하는 사람이 구축한 네트워크가 vm instance 에 할당되는 네트워크입니다. 서비스하는 사람이 ‘제공’ 하는 네트워크라는 의미에서 Provider Network 라고 합니다. 이 네트워크는 인터넷에 연결이 되어있는 네트워크입니다. (그렇다고 public ip 를 반드시 가진다는 것은 아닙니다.)

  • Self-Service Network : 오픈스택을 사용하는 사용자(Tenant)가 직접 자신만의 vm instance 를 위한 네트워크를 구축할 수 있는 네트워크입니다. 이 네트워크는 provider network 를 기반으로 GRE, VXLAN 등의 터널링을 통해 구축됩니다.

이 두 가지 옵션과 위에서 설명한 3가지 네트워크 종류와의 연관성을 정리하면 다음과 같습니다.

  • Provider Network = External Network
  • Self-Service Network = Tunnel Network + External Network

Virtualbox 로 네트워크 구성하기

이제 오픈스택을 설치하기 위해, virtualbox 로 네트워크를 구성해보도록 하겠습니다.

untitled-diagram

  • Internet
    • virtualbox의 NAT 인터페이스
    • 오픈스택 설치용 네트워크
    • IP : Controller / Compute 가 동일하게 10.0.2.15
  • Provider Network
    • virtualbox 의 bridge 인터페이스
    • 공유기와 연결된 인터넷을 사용할 수 있는 네트워크
    • Controller IP : 할당하지 않음
    • Compute IP : 할당하지 않음
    • IP 대역 : 172.32.0.0/24
  • Management Network
    • virtualbox 의 host-only network
    • host에서 virtualbox 의 vm 에 접속할 수 있는 네트워크
    • Controller IP : 192.168.56.101/24
    • Compute IP : 192.168.56.102/24

Neutron 주요 설정

Neutron 설정은 Mitaka 설치 가이드의 Self-Service Network 부분대로 진행하였지만, 기록을 위해 주요 설정 부분을 보여드립니다.

Controller

/etc/neutron/plugins/ml2/linuxbridge_agent.ini

Compute

/etc/neutron/plugins/ml2/linuxbridge_agent.ini


Self-Service 네트워크가 구축되는 과정

network2-overview
그림 2. Self-Service networks 개요도

network2-connectivity
그림 3. Self-Service networks 연결도

설치 가이드 문서의 Launch Instance 의 인스턴스를 위한 네트워크 구축 – Self-Service 파트 에서 위와 같은 구성도를 보여주고 있습니다.

이제 neutron 에서 네트워크, 서브넷, 라우터를 생성하면서 그림 3의 연결도가 어떤 명령어로 어떻게 생성되는지 하나하나 살펴보도록 하겠습니다.

Self-Service Network 는 provider network 를 통해 인터넷과 통신하기에, neutron에 provider network를 사용할 수 있도록 설정해주어야 합니다.

Create the provider network

위 작업을 하고 나면 Controller 노드에 아래와 같이 구성됩니다.

1

Controller 노드에서 bridge 와 네임스페이스는 아래와 같이 구성되어있다.

어떤 명령어들이 저런 구성을 완성했는지, neutron 서비스들의 디버그 메세지를 통해 확인해보겠습니다.

아래 내용은 구성을 위한 필수 명령어들만 정리한 내용입니다.

[DHCP Agent] DHCP Namespace 생성

[Linux-Bridge-Agent] Bridge 생성

여기까지가 provider 네트워크를 생성했을 때 일어나는 일입니다. 여기서 compute 노드에 vm instance 를 생성하면, compute 쪽에서 provider bridge 가 생성되고 instance 와 연결되는 작업이 이루어집니다

이 부분은 self-service 네트워크를 생성 후, vm instance 를 만드는 것과 비슷한 작업이기에 아래에서 알아보도록 하겠습니다.


Create the Self Service Network

위와 같이 self-service network 와 서브넷을 생성하면 아래와 같이 구성됩니다.

2

그림을 보면 vxlan-70 이 eth0에 연결되어있는 것을 볼 수 있습니다. eth0 은 Management Network 로 할당된 인터페이스입니다.

이걸 통해서 Openstack Mitaka 설치 가이드에서는 Management Network 를 Tunnel Network와 같이 사용한다는 것을 알 수 있습니다.

사실 이것을 설명드리고 싶어서 이 문서를 작성한 것이 가장 큽니다. Management Network 를 통해서 Tunnel Network 를 사용하고 있었습니다.

[DHCP Agent] self-service dhcp namespace 생성

[neutron-linuxbridge-agent] bridge 생성

Create a router

self-service network 와 provider network 를 연결해주는 라우터를 생성합니다.

위 작업을 하고 나면 아래와 같은 구성이 만들어집니다.

3

[l3-agent] router namespace 생성

[neutron-linuxbridge-agent] brq34078f0c-3e bridge 에 새로운 인터페이스 추가

‘router’ 이름의 라우터를 provide 네트워크의 gateway 로 설정

이 작업을 하고 나면 본격적으로 self-service 네트워크와 provider 네트워크가 연결되어, self-service 네트워크에서 인터넷으로 트래픽이 나갈 수 있게 됩니다.

구성은 아래와 같이 됩니다.

4

네트워크 인터페이스 구성

여기까지 왔을 때, controller 노드의 네트워크 인터페이스 구성은 아래와 같이 됩니다.

[l3-agent] router namespace 에 인터페이스 추가

[neutron-linuxbridge-agent] brqc1997735-77에 인터페이스 추가


여기까지 neutron 에서 provider / self-service 네트워크를 생성 및 설정할 경우 controller 노드에서 물리적(?)으로 어떤 작업을 통해 네트워크들이 구성되는지 확인해보았습니다.

이제 self-service 네트워크에 vm instance 를 생성해보고, 어떤 일이 일어나는지 확인해보겠습니다.

Self-service 네트워크에 vm instance 생성

vm instance 를 생성하면, controller 와 compute 에 작은 변화가 생깁니다. 우선 vm instance 를 생성하면 어떻게 구성되는지 아래 그림으로 확인해보겠습니다.

5

여기서 중요한 것은, compute 노드에서 vxlan70 인터페이스가 생성되고 그것을 통해 controller 노드와 연결이 되고 있는 것입니다.

이제부터 bridge 구성을 포함해서 어떻게 리눅스에서 vxlan 설정이 들어가는지 알아보도록 하겠습니다.

[compute node 의 neutron-linuxbridge-agent] etables 설정 / 새로운 bridge 생성 / vxlan 설정

[controller node 의 neutron-linuxbridge-agent]


여기까지 아주 긴 과정을 거쳐 provider network / self-service network 를 생성 및 설정이 이루어지는 방법을 알아보았습니다.

내용은 많지만 중요한 것만 정리하면 다음과 같습니다.

  • linuxbridge 를 이용하여 네트워크를 구축할 경우, linux bridge, namespace 를 이용해서 가상 네트워크를 구축한다.
  • linuxbridge 는 vxlan 만 지원하는데 이는, bridge 라는 명령어를 통해 vxlan 을 설정한다.
  • self-service 네트워크는 provider 네트워크를 통해 외부와 통신한다.

두서없이 정리하느냐 틀린 내용이나 누락된 내용이 있을 수 있습니다. 혹 발견하시면 댓글로 남겨주시면 감사하겠습니다.


1 thought on “Openstack Network 구축 과정 이해 – LinuxBridge편”

  • 1
    Green Leigh on 2017년 June 22일 Reply

    Awesome job!!! You saved my time a lot.

Leave a Reply

Your email address will not be published. Required fields are marked *