OpenStack Class 22016.08.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 탭을 클릭해 봅니다. 아래와 같은 아이콘 형태의 네트워크 토폴로지를 확인할 수 있습니다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by naleejang
OpenStack Class 22016.08.18 15:12


데브스택을 이용해서 오픈스택 Neutron 설치하기

앞에서 데브스택 공식 설치 문서를 이용하여 네트워크 구성도를 그려봤습니다. 그럼, 여기서는 네트워크 구성도에 따라 VirtualBox에 가상서버를 생성하고 그 위에 데브스택을 설치해 보겠습니다.



VirtualBox에서 가상 서버 생성

 VirtualBox에서 가상 서버를 생성하는 방법은 이미 앞에서 다루었습니다. 이번에는 가상 서버 생성 시 이전과 다르게 설정할 부분만 따로 살펴보겠습니다.

 


1.     VirtualBox를 이용해서 가상 서버를 만들고 [설정]을 클릭합니다. 설정 창이 열리면 [시스템]에서 CPU를 설정하고, [저장소]에서 우분투 서버를 설정한 후 [네트워크]를 선택합니다. [어댑터 1] 탭에서 [호스트 전용 어댑터]를 선택하고 고급에서 무작위 모드를 [모두 허용]으로 선택합니다. 지금 설정한 어댑터는 우분투 서버의 enp0s3이며 관리용 네트워크로 사용됩니다.


 

2.     [어댑터 2] 탭을 선택하고 [브리지 어댑터]를 선택합니다. 그리고, 고급에서 무작위 모드를 [모두 허용]으로 선택합니다. 여기서 설정한 어댑터는 우분투 서버의 enp0s8이 되며, 외부용 네트워크로 사용됩니다.

 

 

데브스택 설치

VirtualBox를 이용해서 가상 서버를 생성하고 생성한 가상 서버에 우분투를 설치했습니다. 오픈스택 공식 매뉴얼로 제공되는 데브스택 설치 매뉴얼을 이용하여 어떻게 뉴트론 네트워크를 구성하면 되는지를 알아보고, 데브스택을 설치 하겠습니다.



1.     VirtualBox를 이용하여 우분투 서버를 생성하였으며, SSH 클라이언트를 통해 생성한 우분투 서버에 접속합니다. 그리고, vi 에디터를 이용해 /etc/network/interfaces를 아래와 같이 수정합니다. 이때 사용되는 IP는 네트워크 구성도에서 미리 설정했던 IP를 입력합니다.

root@devstack:~# vi /etc/network/interfaces

 

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

source /etc/network/interfaces.d/*

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

auto enp0s3

iface enp0s3 inet static

   address 192.168.56.103

   netmask 255.255.255.0

   gateway 192.168.56.1

 

auto enp0s8

iface enp0s8 inet static

   address 192.168.0.22

   netmask 255.255.255.0

   gateway 192.168.0.1

 


2.     IP 설정이 완료되었으면, 설정한 IP를 아래와 같은 명령어를 이용하여 시스템에 반영합니다. 그리고, 설정이 제대로 되었는지 ifconfig 명령을 이용하여 확인합니다.

root@devstack:~# systemctl restart networking

root@devstack:~# ifconfig

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:234 errors:0 dropped:0 overruns:0 frame:0

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

          collisions:0 txqueuelen:1000

          RX bytes:23856 (23.8 KB)  TX bytes:49794 (49.7 KB)

 

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::a00:27ff:fe9f:df14/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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

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

          collisions:0 txqueuelen:1000

          RX bytes:40428565 (40.4 MB)  TX bytes:1332 (1.3 KB)

 

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:438 errors:0 dropped:0 overruns:0 frame:0

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

          collisions:0 txqueuelen:1

          RX bytes:27980 (27.9 KB)  TX bytes:27980 (27.9 KB)

 


3.     DevStack을 설치하기 위한 stack 계정을 생성하고, 패스워드 입력없이도 sudo를 사용할 수 있도록 /etc/sudoers에 아래와 같이 추가합니다. 그리고, 패스워드를 설정합니다.

root@devstack:~# useradd -U -G sudo -s /bin/bash -m stack

root@devstack:~# echo "stack ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

root@devstack:~# passwd stack

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

root@devstack:~#

 


4.     Stack 계정이 추가되면 root 계정에서 stack 계정으로 사용자를 전환합니다.

root@devstack:~# su stack

To run a command as administrator (user "root"), use "sudo <command>".

See "man sudo_root" for details.

 

stack@devstack:/root$ cd

stack@devstack:~$

 


5.     git을 이용해 데브스택 쉘 스크립트를 받습니다. 이때 만일 특정 버전의 오픈스택을 설치하고 싶다면 –b 옵션을 사용하여 설치할 수 있습니다. 설치할 데브스택의 버전은 다음 URL에서 확인할 수 있습니다. (데브스택 Git 사이트 : https://git.openstack.org/cgit/openstack-dev/devstack)

stack@devstack:~$ git clone https://git.openstack.org/openstack-dev/devstack

Cloning into 'devstack'...

remote: Counting objects: 33951, done.

remote: Compressing objects: 100% (16089/16089), done.

remote: Total 33951 (delta 24108), reused 26880 (delta 17412)

Receiving objects: 100% (33951/33951), 6.60 MiB | 974.00 KiB/s, done.

Resolving deltas: 100% (24108/24108), done.

Checking connectivity... done.

stack@devstack:~$

 


6.     DevStack를 다운로드 받았으면 이번에는 local.conf 파일을 생성하고, 환경설정을 해보겠습니다. Vi 에디터를 이용해 아래와 같이 local.conf을 열고, 오픈스택 기본 정보와 Nova-network 서비스를 비활성화 하고, Neutron 네트워크 서비스를 활성화합니다. 그리고, Netron 네트워크 정보들을 그 아래와 함께 입력합니다. 이때, 입력하는 IP들은 위에서 미리 그려본 네트워크 구성도에 따라서 설정하면 됩니다. 

stack@devstack:~/devstack$ vi local.conf

 [[local|localrc]]

HOST_IP=192.168.56.103

SERVICE_HOST=192.168.56.103

MYSQL_HOST=192.168.56.103

RABBIT_HOST=192.168.56.103

GLANCE_HOSTPORT=192.168.56.103:9292

ADMIN_PASSWORD=openstack

DATABASE_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

 

# Do not use Nova-Network

disable_service n-net

# Enable Neutron

ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt,q-l3

 

## Neutron options

Q_USE_SECGROUP=True

FLOATING_RANGE="192.168.0.0/24"

FIXED_RANGE="10.0.0.0/24"

Q_FLOATING_ALLOCATION_POOL=start=192.168.0.100,end=192.168.0.200

PUBLIC_NETWORK_GATEWAY="192.168.0.1"

PUBLIC_INTERFACE=enp0s8

 

# Open vSwitch provider networking configuration

Q_USE_PROVIDERNET_FOR_PUBLIC=True

OVS_PHYSICAL_BRIDGE=br-enp0s8

PUBLIC_BRIDGE=br-enp0s8

OVS_BRIDGE_MAPPINGS=public:br-enp0s8

 


7.     localrc 파일 설정이 완료되면 stack.sh를 실행하고 네트워크 상황에 따라 40분~ 50분 정도 기다리면 설치가 완료됩니다.

stack@devstack:~/devstack$ ./stack.sh

+ unset GREP_OPTIONS

+ umask 022

+ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/sbin:/usr/sbin:/sbin

+++ dirname ./stack.sh

=========================

DevStack Component Timing

=========================

Total runtime         1564

 

run_process            67

test_with_retry         3

apt-get-update         11

pip_install           303

restart_apache_server  12

wait_for_service        9

git_timed             427

apt-get               113

=========================

 

 

 

This is your host IP address: 192.168.56.103

This is your host IPv6 address: ::1

Horizon is now available at http://192.168.56.103/dashboard

Keystone is serving at http://192.168.56.103:5000/

The default users are: admin and demo

The password: openstack

2016-05-25 01:51:11.914 | stack.sh completed in 1564 seconds.

stack@devstack:~/devstack$

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by naleejang
OpenStack Class 22016.08.02 15:51


Neutron을 설치하기 위한 네트워크 구성도를 그려보자


오픈스택을 설치하기 전에는 반드시 네트워크 구성도를 그려보고 설치해야 합니다. 네트워크 구성도를 그려보지 않고 설치하면 환경설정에서 어떤 IP를 설정해야 할지 몰라 당황하게 됩니다. 이번에는 오픈스택 공식 매뉴얼로 제공되는 데브스텍 설치 매뉴얼을 이용하여 어떻게 네트워크 구성도를 그리면 되는지를 함께 살펴보겠습니다.

 

1.     웹브라우저를 열어 데브스택 공식 문서(https://docs.openstack.org/developer/devstack)에 접속을 합니다.


2.     우측 메뉴에서 [DevStack with Neutron Networking]을 클릭합니다. 안내 메시지가 나오면 이때 [Neutron Networking] 을 클릭합니다. 그러면, 아래와 같은 화면을 확인할 수 있습니다.


3.     방문한 페이지의 하단에 보면 Physical Network Setup의 네트워크 구성도를 확인할 수 있습니다. 여기서는 가장 기본인 Physical Network Setup의 네트워크 구성도를 활용해 여기서 설치할 네트워크 구성도를 그려보겠습니다.

 


4.     이렇게 해서 완성된 네트워크 구성도는 아래와 같습니다.


우선, IP 공유기의 게이트웨이 IP 192.168.0.1이고, 서브넷마스크는 255.255.255.0이라고 가정합니다. VirtualBox를 설치한 맥 PC IP 192.168.0.12로 설정되어 있습니다. VirtualBox를 이용해 생성한 우분투 가상 서버는 ens0s3 ens0s8이라는 네트워크 디바이스가 두개입니다. ens0s8는 인터넷과 외부에서 접속할 수 있는 Floating IP의 통로 역할을 하며, ens0s3은 관리용 네트워크로 데쉬보드와 API를 접속할 수 있습니다. 외부 네트워크를 담당하는 Floating IP Range IP공유기 범위인 192.168.0.0/24를 사용하고, 2개의 가상 라우터와 연결이 되어 있습니다. 각각의 라우터는 테넌트 네트워크와 연결되어 있습니다. Router1에는 10.0.0.0/24 Fixed IP Range로 사용하고, Router2에는 10.0.1.0/24 Fixed IP Range로 사용합니다. Router1의 외부 게이트웨이는 192.168.0.100이고, Router2의 외부 게이트웨이는 192.168.0.101입니다. Nova-network와 달리 물리 네트워크와 연결되는 브리지 네트워크가 필요한데 이때 IP enp0s8 IP 192.168.0.22을 사용합니다. 이때 공유기 IP를 모두 다 사용하면 안되므로 할당 가능한 IP 범위를 설정해야 합니다. 할당 가능한 IP 범위는 192.168.0.100에서 192.168.0.200을 사용하겠습니다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by naleejang
OpenStack Class 22016.07.23 15:49


SSH 클라이언트 툴을 이용한 인스턴스 접속

이번에는 SSH 클라이언트 툴을 이용해 방금 전에 생성한 인스턴스에 접속하겠습니다.

 

1.     [접근 & 보안]을 선택하고 [보안 그룹] 탭에 클릭합니다. 우선 default로 보안 규칙을 설정하겠습니다. [규칙 관리]를 클릭합니다.


2.     보안 그룹 규칙을 추가할 수 있는 페이지가 나타나면 [+규칙 추가]를 클릭합니다.

 

3.     Ping을 사용할 수 있는 ALL ICMP 규칙을 아래와 같이 추가합니다. 규칙 항목에서 [모든 ICMP]를 선택하면 원격 항목과 CIDR 항목의 내용으로 자동으로 채워집니다.


4.     이번에는 인스턴스에 안전하게 접속을 하기 위한 SSH 규칙을 아래와 같이 추가합니다.


5.     보안 그룹의 규칙을 추가하면 아래와 같이 추가된 규칙을 확인 할 수 있습니다


6.     이번에는 외부에서 접속할 수 있는 유동(Floating) IP를 설정하겠습니다. [접근 & 보안]에서 [Floating IP] 탭을 선택하고 [프로젝트에 IP 할당]을 클릭합니다.

 

7.     Floating IP 할당 창이 열리면 [IP 할당]을 클릭합니다.

 

8.     Floating IP가 할당되면 이번에는 IP를 인스턴스와 연결해야 합니다. 할당된 IP를 연결하는 방법은 두가지가 있는데 하나는 아래 화면의 [연결]버튼을 클릭하는 것과 인스턴스 화면에서 Floating IP 연결을 하는 방법이 있습니다.

 

9.     여기서는 인스턴스 창에서 Floating IP를 연결해 보겠습니다. 인스턴스 화면의 목록을 보면 생성된 인스턴스 마다 좌측에 작업이라는 항목을 가지고 있습니다. 스냅샷 생성 이라는 작업 버튼을 클릭하면 아래와 같이 다양한 작업 목록이 나오는데 이중에서 [Floating IP 연결]을 클릭합니다.

 

10.  그리고, 생성한 인스턴스와 IP를 선택하고 확인을 하면 아래와 같이 Floating IP가 인스턴스에 할당이 됩니다.

 

11.  이제 인스턴스에 접속할 준비가 모두 완료되었습니다. 이제 인스턴스에 접속을 해 보도록 하겠습니다. 우선, 터미널을 열고, ping 테스트를 먼저 해 보겠습니다.

naleejangui-MacBook-Pro:~ naleejang$ ping 192.168.0.226

PING 192.168.0.226 (192.168.0.226): 56 data bytes

64 bytes from 192.168.0.226: icmp_seq=0 ttl=63 time=1.937 ms

64 bytes from 192.168.0.226: icmp_seq=1 ttl=63 time=0.724 ms

64 bytes from 192.168.0.226: icmp_seq=2 ttl=63 time=0.629 ms

64 bytes from 192.168.0.226: icmp_seq=3 ttl=63 time=0.641 ms

^C

--- 192.168.0.226 ping statistics ---

4 packets transmitted, 4 packets received, 0.0% packet loss

round-trip min/avg/max/stddev = 0.629/0.983/1.937/0.552 ms

naleejangui-MacBook-Pro:~ naleejang$

 

12.  ping 테스트가 정상적으로 이루어졌다면 인스턴스에 접속을 할 수 있다는 뜻입니다. 터미널에서 ssh 명령을 이용하여 아래와 같이 인스턴스에 접속해 봅시다.

naleejangui-MacBook-Pro:~ naleejang$ ssh cirros@192.168.0.226

The authenticity of host '192.168.0.226 (192.168.0.226)' can't be established.

RSA key fingerprint is SHA256:ywIXNOHagZhbH8Ny+gUs77hSkdEOn68MJZIXcN3lfSg.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.0.226' (RSA) to the list of known hosts.

cirros@192.168.0.226's password:

$ ifconfig

eth0      Link encap:Ethernet  HWaddr FA:16:3E:62:DF:4F 

          inet addr:10.11.12.3  Bcast:10.11.12.255  Mask:255.255.255.0

          inet6 addr: fe80::f816:3eff:fe62:df4f/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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

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

          collisions:0 txqueuelen:1000

          RX bytes:14029 (13.7 KiB)  TX bytes:5484 (5.3 KiB)

 

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:16436  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:0

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

 

 

13.  이번에는 인스턴스에서 인터넷이 되는지 ping 테스트를 한번 해 보겠습니다. Ping 명령어를 이용하여 google.com으로 연결이 되는지 확인해 보도록 하겠습니다. 아래와 같이 ping이 잘 된다면 인터넷이 잘 되는 것입니다.

$ ping google.com

PING google.com (58.123.220.84): 56 data bytes

64 bytes from 58.123.220.84: seq=0 ttl=57 time=94.921 ms

64 bytes from 58.123.220.84: seq=1 ttl=57 time=15.010 ms

64 bytes from 58.123.220.84: seq=2 ttl=57 time=15.991 ms

^C

--- google.com ping statistics ---

3 packets transmitted, 3 packets received, 0% packet loss

round-trip min/avg/max = 15.010/41.974/94.921 ms

$

 

14.  이번에는 SSH Key를 이용해 로그인을 해 보도록 하겠습니다. 똑같이 터미널을 열고, 좀 전에 생성한 SSH key 의 파일 권한을 변경합니다. Chmod명령어를 통해 소유주만 읽을 수 있도록 권한을 변경합니다.

naleejangui-MacBook-Pro:~ naleejang$ chmod 600 openstack.pem

naleejangui-MacBook-Pro:~ naleejang$ ls -l openstack.pem

-rw-------  1 naleejang  staff  1683  5 14 00:07 openstack.pem

naleejangui-MacBook-Pro:~ naleejang$

 

15.  이제 SSH key를 이용하여 아래와 같이 접속을 합니다. 비밀번호를 묻지 않고 바로 로그인이 되는 것을 확인 할 수 있습니다.

naleejangui-MacBook-Pro:~ naleejang$ ssh cirros@192.168.0.226 -i openstack.pem

$ ifconfig

eth0      Link encap:Ethernet  HWaddr FA:16:3E:62:DF:4F 

          inet addr:10.11.12.3  Bcast:10.11.12.255  Mask:255.255.255.0

          inet6 addr: fe80::f816:3eff:fe62:df4f/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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

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

          collisions:0 txqueuelen:1000

          RX bytes:33246 (32.4 KiB)  TX bytes:19898 (19.4 KiB)

 

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:16436  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:0

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

 

$

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by naleejang

티스토리 툴바