티스토리 뷰

OpenStack Class 2

[개정판]10. Neutron 네트워크 구성하기

나리 짱!!! naleejang 2016. 8. 29. 17:23


Neutron 네트워크 구성하기

앞에서 그린 구성도를 참고해서 이미 구성된 네트워크를 확인하고, 새로 생성할 네트워크를 구성하겠습니다. Tenant1에 해당하는 네트워크는 데브스택이 설치될 때 자동으로 설치됩니다. 그러나 Tenant2에 해당하는 네트워크는 설치되지 않습니다. 여기서는 Tenant2에 해당하는 네트워크를 만들겠습니다.

 

1.     DevStack 설치가 완료되었으면, ifconfig 명령어를 이용해 네트워크가 어떻게 설정되었는지를 먼저 확인합니다. br-enp0s8이라는 브리지 네트워크가 생성된 것을 확인할 수 있으며, enp0s8에 설정되어 있던 IPbr-enp0s8IP로 설정되어 있는것을 확인할 수 있습니다.

stack@devstack:~$ ifconfig

br-enp0s8 Link encap:Ethernet  HWaddr 08:00:27:9f:df:14 

          inet addr:192.168.0.22  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::246a:1aff:feb1:5e49/64 Scope:Link

          inet6 addr: 2001:db8::2/64 Scope:Global

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:4838 errors:0 dropped:0 overruns:0 frame:0

          TX packets:3358 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:10523621 (10.5 MB)  TX bytes:248255 (248.2 KB)

 

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:b6:2d:a7 

          inet addr:192.168.56.103  Bcast:192.168.56.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:feb6:2da7/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:28414 errors:0 dropped:0 overruns:0 frame:0

          TX packets:28309 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:1907489 (1.9 MB)  TX bytes:5859080 (5.8 MB)

 

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:9f:df:14 

          inet6 addr: fe80::a00:27ff:fe9f:df14/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:372037 errors:0 dropped:0 overruns:0 frame:0

          TX packets:123745 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:543530375 (543.5 MB)  TX bytes:8759310 (8.7 MB)

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:168953 errors:0 dropped:0 overruns:0 frame:0

          TX packets:168953 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:74520199 (74.5 MB)  TX bytes:74520199 (74.5 MB)

 

virbr0    Link encap:Ethernet  HWaddr 52:54:00:53:cc:40 

          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

2.     이번에는 ovs-vsctl show 명령어를 이용하여 Open vSwitch의 가상 네트워크 현황을 확인해 보겠습니다. br-int 라는 내부용 가상 브리지와 컴퓨트 노드의 인스턴스 간 통신을 위한 br-tun 이라는 브리지, 그리고 외부 통신을 위한 br-enp0s8 이라는 브리지가 생성되어 있는것을 확인할 수 있습니다. 또한 br-enp0s8에는 외부 통신을 할때 실제로 사용되는 네트워크 디바이스인 enp0s8이 추가되어 있는 것을 확인할 수 있습니다.

stack@devstack:~$ sudo ovs-vsctl show

3f70ad60-a2f9-4123-8d2a-d98f64b19a48

    Bridge br-int

        fail_mode: secure

        Port br-int

            Interface br-int

                type: internal

        Port patch-tun

            Interface patch-tun

                type: patch

                options: {peer=patch-int}

        Port "qr-9ac11f5c-18"

            tag: 1

            Interface "qr-9ac11f5c-18"

                type: internal

        Port "qr-82d915df-63"

            tag: 1

            Interface "qr-82d915df-63"

                type: internal

        Port "qg-b9c70e65-2e"

            tag: 2

            Interface "qg-b9c70e65-2e"

                type: internal

        Port "tapb34cbe12-5d"

            tag: 1

            Interface "tapb34cbe12-5d"

                type: internal

        Port "int-br-enp0s8"

            Interface "int-br-enp0s8"

                type: patch

                options: {peer="phy-br-enp0s8"}

    Bridge br-tun

        fail_mode: secure

        Port patch-int

            Interface patch-int

                type: patch

                options: {peer=patch-tun}

        Port br-tun

            Interface br-tun

                type: internal

    Bridge "br-enp0s8"

        Port "br-enp0s8"

            Interface "br-enp0s8"

                type: internal

        Port "enp0s8"

            Interface "enp0s8"

        Port "phy-br-enp0s8"

            Interface "phy-br-enp0s8"

                type: patch

                options: {peer="int-br-enp0s8"}

    ovs_version: "2.5.0"

stack@devstack:~$

 

3.     통신을 하기 위해서는 게이트웨이를 서로 연결시켜주는 라우터가 필요합니다. 그리고, IP를 자동으로 할당해 주기 위해서는 DHCP 서버도 필요합니다. 오픈스택 Neutron에서도 이런 네트워크 디바이스들을 필요로 합니다. Open vSwitch를 이용하여 가상 네트워크를 만들었으니 가상 라우터와 가상 DHCP 서버가 필요한 건 당연한 일입니다. Ip netns show 명령어를 이용하여 가상으로 만들어진 라우터와 DHCP 서버를 확인할 수 있습니다.

stack@devstack:~$ sudo ip netns show

qrouter-2def024e-298f-40a2-ab4f-2c74052872ab

qdhcp-b2203d5b-f33c-4509-b717-3c0769705013

stack@devstack:~$

 

4.     그럼, 가상 라우터에 어떤 IP들이 매핑되었는지 확인해 보도록 하겠습니다. 아래와 같이 sudo ip netns exec 입력하고 위에서 확인한 가상 라우터 ID를 복사한 후 붙여넣기를 한 뒤 ifconfig 라는 명령어를 추가하면 가상 라우터에 할당된 가상 네트워크와 IP를 확인할 수 있습니다.

stack@devstack:~$ sudo ip netns exec qrouter-2def024e-298f-40a2-ab4f-2c74052872ab ifconfig

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

qg-b9c70e65-2e Link encap:Ethernet  HWaddr fa:16:3e:1f:f7:70 

          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::f816:3eff:fe1f:f770/64 Scope:Link

          inet6 addr: 2001:db8::1/64 Scope:Global

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:276 errors:0 dropped:0 overruns:0 frame:0

          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:46743 (46.7 KB)  TX bytes:1704 (1.7 KB)

 

qr-82d915df-63 Link encap:Ethernet  HWaddr fa:16:3e:9a:78:77 

          inet6 addr: fd3c:62f4:60dc::1/64 Scope:Global

          inet6 addr: fe80::f816:3eff:fe9a:7877/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:2 errors:0 dropped:0 overruns:0 frame:0

          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:92 (92.0 B)  TX bytes:2658 (2.6 KB)

 

qr-9ac11f5c-18 Link encap:Ethernet  HWaddr fa:16:3e:ed:e1:79 

          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr: fe80::f816:3eff:feed:e179/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:19 errors:0 dropped:0 overruns:0 frame:0

          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:1944 (1.9 KB)  TX bytes:864 (864.0 B)

 

stack@devstack:~$

 

5.     이번에는 가상 라우터를 확인한 방법과 같은 방법으로 DHCP 설정을 확인해 보겠습니다. Tapb34cbe12-5d 라는 가상 네트워크가 생성되었고, IP 10.0.0.2가 매핑되어 있는 것을 확인할 수 있습니다.

stack@devstack:~$ sudo ip netns exec qdhcp-b2203d5b-f33c-4509-b717-3c0769705013 ifconfig

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

tapb34cbe12-5d Link encap:Ethernet  HWaddr fa:16:3e:f8:24:40 

          inet addr:10.0.0.2  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr: fd3c:62f4:60dc:0:f816:3eff:fef8:2440/64 Scope:Global

          inet6 addr: fe80::f816:3eff:fef8:2440/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:22 errors:0 dropped:0 overruns:0 frame:0

          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:2204 (2.2 KB)  TX bytes:726 (726.0 B)

 

stack@devstack:~$

 

6.     오픈스택을 설치한 우분투 서버에 생성된 가상 네트워크를 모두 확인해 봤습니다. 이번에는 데쉬보드에 접속해 가상 네트워크를 확인해 보겠습니다. 웹브라우저를 열어 Devstack 설치시 안내되었던 URL로 접속합니다. 그리고, 관리자용 사용자 이름과 암호를 입력하고 하단의 [연결]버튼을 클릭합니다.


7.     로그인이 되면 우측 메뉴에서 [관리자] > [시스템] > [네트워크]를 선택합니다. 그러면 아래와 같이 네트워크 목록을 확인할 수 있는 페이지로 이동합니다. 인스턴스에 고정(Fixed) IP를 할당해 줄 private 네트워크와 외부통신용(Floating) IP를 할당해 줄 public 네트워크가 생성되어 있는 것을 확인할 수 있습니다. IPv4에 해당하는 IP CIDR(Classless Inter-Domain Routing)IPv6에 해당하는 IP CIDR가 함께 할당되어 있는 것을 확인할 수 있습니다.

 

8.     네트워크 목록에서 private 를 클릭해 상세정보를 확인해 보겠습니다. 네트워크 개요와 서브넷, 그리고 포트 정보를 확인할 수 있습니다.

 

9.     좌측의 스크롤바를 아래로 내리면 DHCP 에이전트 현황도 함께 확인할 수 있습니다. 서브넷에는 private 네트워크의 고정(Fixed) IP 범위와 게이트웨이 IP 정보를 IPv4IPv6로 확인해 볼 수 있으며, 포트 목록에서는 라우터와 연결된 게이트웨이 IP 정보를 확인할 수 있습니다. 또한 DHCP로 설정된 IP 정보도 함께 확인할 수 있습니다.  

 

10.  다시 네트워크 목록으로 돌아가 이번에는 public 네트워크를 선택합니다. 그러면, public 네트워크의 상세정보를 확인할 수 있습니다. Public 네트워크 정보 역시 private 네트워크와 마찬가지로 외부통신용(Floating) IP 대역과 게이트웨이 IP 주소를 IPv4IPv6로 확인할 수 있습니다.

 

11.  public 네트워크의 상세화면 좌측 스크롤바를 아래로 내리면 private 네트워크에서처럼 DHCP 에이전트가 활성화 되어 있는 것을 확인하실 수 있습니다. 그러나, private 네트워크와는 다르게 포트 정보에 DHCP로 설정된 IP 정보는 보이지 않습니다.

 

12.  이번에는 라우터를 살펴보겠습니다. 데쉬보드의 우측 메뉴에서 [관리자] > [시스템] > [라우터]를 선택합니다. 라우터 목록에는 이미 router1이라는 라우터가 하나 생성되어 있는 것을 확인할 수 있습니다. 이 라우터는 DevStack을 설치할때 미리 생성된 라우터입니다.

 

13.  라우터 목록에서 router1를 클릭하면 아래와 같이 상세 정보를 확인할 수 있습니다. 개요 탭에서는 라우터 이름, ID 등 기본 정보와 외부 게이트웨이 정보를 확인할 수 있습니다.

 

14.  인터페이스 탭에서는 private 네트워크의 게이트웨이 IPpublic 네트워크의 게이트웨이 IP를 목록으로 확인할 수 있습니다.

 

15.  이번에는 네트워크 토폴로지를 확인해 보겠습니다. Admin 계정으로 로그인되어 있는 데쉬보드를 로그아웃하고 Demo 계정으로 다시 로그인을 합니다. 그리고, 우측 메뉴에서 [프로젝트] > [네트워크] > [네트워크 토폴로지]를 클릭합니다. 그러면 아래와 같이 지금 생성되어 연결되어 있는 네트워크 토폴로지 현황을 그래픽으로 확인할 수 있습니다. 아래 보이는 이미지는 Small 탭의 네트워크 이미지로 가장 최소정보만을 보여줍니다.

 

16.  [기본]탭을 클릭하면 아래와 같이 라우터 이미지가 좀 더 구체적으로 표현이 됩니다. 

 

17.  기본 네트워크 토폴로지를 확인했으면 이번에는 Graph로 확인을 해보겠습니다. 상단의 [Graph] 탭을 클릭하면 아래와 같은 이미지로 네트워크 정보를 확인할 수 있습니다.

 

18.  이번에는 네트워크 탭을 한번 클릭해보겠습니다. 우측 메뉴에서 [프로젝트] > [네트워크] > [네트워크]를 클릭합니다. 그러면 아래와 같이 네트워크 목록을 확인할 수 있습니다. Admin 계정의 네트워크 목록과는 다르게 public 네트워크 정보에서 관련 서브넷 정보가 보이지 않는다는것을 확인할 수 있습니다. 그럼, 지금부터 위에서 그려면 네트워크 구성도대로 새로운 가상 라우터와 가상 네트워크를 만들어 보겠습니다. 네트워크 화면 좌측 상단의 [+네트워크 생성] 버튼을 클릭합니다.

19.  그러면, 네트워크 생성창이 팝업됩니다. 그러면 생성하고자 하는 네트워크 이름을 입력합니다. 앞에서 미리 그려본 네트워크 구성도에서처럼 네트워크 이름을 private2 라고 입력하고 [다음]을 클릭합니다.

 

20.  서브넷 이름은 알기 쉽게 private2_subnet이라고 입력하고 네트워크 주소에 인스턴스에 할당할 고정 IP 범위를 CIDR로 입력합니다. 여기서 IP 범위는 앞에서 미리 그려본 네트워크 구성도에 따라 10.0.1.0/24로 입력하였습니다. 게이트웨이 IP 10.0.1.1을 입력합니다. 그리고, 하단의 [다음] 버튼을 클릭합니다.

 

21.  서브넷 세부 정보 창이 나오면 DHCP 사용에 체크를 하고 하단의 [생성] 버튼을 클릭합니다.

 

22.  네트워크 목록에 방금전에 생성한 private2 네트워크가 생성되었습니다.

 

23.  이번에는 라우터를 생성해 보겠습니다. 우측 메뉴에서 [프로젝트] > [네트워크] > [라우터]를 클릭합니다. 라우터 목록이 나오면 좌측 상단에 [+라우터 생성] 버튼을 클릭합니다.

 

24.  라우터 생성창이 팝업되면 라우터 이름에 router2라고 입력하고 외부 네트워크에서 public 네트워크를 선택한 후 하단의 [라우터 생성] 버튼을 클릭합니다.

 

25.  라우터가 잘 생성이 되었습니다.


26.  생성된 라우터 router2를 클릭하여 상세 정보를 확인합니다. 라우터 기본 정보와 외부 게이트웨이 정보를 확인할 수 있습니다.

 

27.   그러나 인터페이스 탭을 클릭하면 인터페이스 목록에 아무런 정보도 보이지 않습니다. 그럼, 지금부터 인터페이스를 추가해보겠습니다. 좌측 상단에 [+인터페이스 추가] 버튼을 클릭합니다.

 

28.  인터페이스 추가 창이 팝업되면 조금 전에 생성한 private2 네트워크를 서브넷에서 선택합니다.

 

29.  그러면 아래와 같이 private2 네트워크의 게이트웨이가 인터페이스로 추가됩니다.

 

30.  앞에서 생성한 라우터와 private2 네트워크의 DHCP 설정은 터미널에서 ip netns show 명령어로 아래와 같이 확인할 수 있습니다.

stack@devstack:~$ sudo ip netns show

qrouter-aa332b06-210c-4e9b-9961-657119f53742

qdhcp-dddd20f6-c9b4-4d5a-9497-96d9cf1cff44

qrouter-2def024e-298f-40a2-ab4f-2c74052872ab

qdhcp-b2203d5b-f33c-4509-b717-3c0769705013

stack@devstack:~$

 

31.  그럼, 새로 생성된 가상 라우터를 확인해 보겠습니다. Ip netns exec 명령어 뒤에 앞에서 확인한 라우터 ID를 복사해 붙여넣기를 합니다. 그리고 그 뒤에 ifconfig를 하면 가상 라우터의 인터페이스를 확인할 수 있습니다.

stack@devstack:~$ sudo ip netns exec qrouter-aa332b06-210c-4e9b-9961-657119f53742 ifconfig

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

qg-d4ee5068-93 Link encap:Ethernet  HWaddr fa:16:3e:20:db:d4 

          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::f816:3eff:fe20:dbd4/64 Scope:Link

          inet6 addr: 2001:db8::3/64 Scope:Global

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1892 errors:0 dropped:0 overruns:0 frame:0

          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:318837 (318.8 KB)  TX bytes:1368 (1.3 KB)

 

qr-6d6278e7-7f Link encap:Ethernet  HWaddr fa:16:3e:82:37:3d 

          inet addr:10.0.1.1  Bcast:10.0.1.255  Mask:255.255.255.0

          inet6 addr: fe80::f816:3eff:fe82:373d/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:1 errors:0 dropped:0 overruns:0 frame:0

          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:28 (28.0 B)  TX bytes:864 (864.0 B)

 

stack@devstack:~$

 

32.  가상 DHCP 설정 확인 역시 ip netns exec 명령어 뒤에 앞에서 확인한 DHCP ID를 복사해 붙여넣고 ifconfig를 붙이면 DHCP 에이전트용 IP를 확인할 수 있습니다.

stack@devstack:~$ sudo ip netns exec qdhcp-dddd20f6-c9b4-4d5a-9497-96d9cf1cff44 ifconfig

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

tap37cfd8b4-88 Link encap:Ethernet  HWaddr fa:16:3e:2f:c4:cb 

          inet addr:10.0.1.2  Bcast:10.0.1.255  Mask:255.255.255.0

          inet6 addr: fe80::f816:3eff:fe2f:c4cb/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1

          RX packets:5 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1

          RX bytes:412 (412.0 B)  TX bytes:648 (648.0 B)

 

stack@devstack:~$

 

33.  새로 생성한 가상 네트워크와 라우터는 네트워크 토폴로지에서도 확인할 수 있습니다. Demo 계정으로 데쉬보드를 로그인 한 뒤 우측 메뉴에서 [프로젝트] > [네트워크] > [네트워크 토폴로지]를 선택하면 아래와 같이 router2라는 가상 네트워크가 생성된 것을 토폴로지로 확인할 수 있습니다.

 

34.  이번에는 Graph 탭을 클릭해 봅니다. 아래와 같은 아이콘 형태의 네트워크 토폴로지를 확인할 수 있습니다.

댓글
댓글쓰기 폼