본문 바로가기

Cloud Native/Install_OpenStack

DevStack을 활용한 OpenStack Kilo 설치 - DVR

DevStack kilo 기반 DVR


OpenStack을 설치하면서 고생고생 한 사람들은 DevStack의 위대함을 새삼 느끼게 된다!!!


사실 OpenStack Kilo 버전이 나오면서 OpenStack 설치 및 설정이 매우 간편해지고 안정적으로 설치되는 편이지만 처음 접하는 사람들은 쉽지않을 것이다.


대부분의 OpenStack 입문자들이 만나게 되는 솔루션이 바로 DevStack인데 매우 간단하게 OpenStack이 설치된다.


본 포스팅에서는 DevStack을 사용한 OpenStack Kilo Install을 알아보고자 한다.



DevStack Kilo Install



사실 DevStack이라고 하는 것은 쉽게 말하면 OpenStack을 구성하는 각 Node에 각각 모듈을 다운 받고 DB 테이블을 생성하고 Keystone 사용자를 추가하고 각 서비스별 설정 과정을 프로그래밍화 하여 local.conf 또는 localrc 파일에 정보를 입력하면 이 파일을 가지고 OpenStack 설치를 자동화(?)하는 편리한 툴이다.


즉, 사용자는 local.conf 또는 localrc 파일만 적절하게 만들면 그 뒤는 알아서 설치 및 설정하게 되는 것이다.


본 포스팅에서는 VirtualBox를 활용하여 DevStack을 인스톨하고자 한다.



1. 준비 및 기본


1-1. VirtualBox



    • 사용 이미지
      • Ubuntu 14.04.3 Desktop 또는 이에 준하는 이미지 (예: Lubuntu 14.04.3 Desktop)
    • VirtualBox 네트워크 구성
      • 어댑터1: NAT
      • 어댑터2: Host-Only
    • 생성 VM
      • controlnode
      • networknode
      • computenode


1-2. VM 기본 설정

    • 네트워크 구성
      • eth0: VirtualBox의 NAT
      • eth1: VirtualBox의 VM 사이의  통신을 위한 인터페이스 (OpenStack의 Management Network)
    • 사용자
      • devstack 관련한 기본 사용자는 stack으로 되어 있기 때문에 될 수 있으면 VM 설치시 user 이름을 stack으로 한다.

1-3. controlnode 네트워크 기본 설정

$ sudo vi /etc/network/interfaces

------------------------------------------------------------------------
# interfaces(5) file used by ifup(8) and ifdown(8)
#auto lo
#iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.0.2.100
        gateway 10.0.2.2
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
iface eth1 inet static
        address 192.168.56.100
        netmask 255.255.255.0
-------------------------------------------------------------------------
$ sudo reboot


1-4. networknode 네트워크 기본 설정

$ sudo vi /etc/network/interfaces

------------------------------------------------------------------------
# interfaces(5) file used by ifup(8) and ifdown(8)
#auto lo
#iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.0.2.101
        gateway 10.0.2.2
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
iface eth1 inet static
        address 192.168.56.101
        netmask 255.255.255.0
-------------------------------------------------------------------------
$ sudo reboot


1-5. computenode 네트워크 기본 설정

$ sudo vi /etc/network/interfaces

------------------------------------------------------------------------
# interfaces(5) file used by ifup(8) and ifdown(8)
#auto lo
#iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.0.2.102
        gateway 10.0.2.2
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
iface eth1 inet static
        address 192.168.56.102
        netmask 255.255.255.0
-------------------------------------------------------------------------
$ sudo reboot

1-6. 공통 기본 설정
    • 기본 설정

$ sudo su

$ apt-get update

$ apt-get upgrade

$ apt-get dist-upgrade

$ reboot

    • DevStack 다운로드
$ sudo apt-get install -y git
$ git clone -b stable/kilo https://github.com/openstack-dev/devstack.git
    • DevStack 디렉토리 확인
$ cd devstack
$ ls


다음과 같이 파일을 확인할 수 있으면 정상적으로 다운로드 받은 것 이다.



위 그림에서 보는 것 처럼 devstack 디렉토리에 위치한 파일들이 내가 설정한 OpenStack을 구성하게 된다.


devstack 디렉토리 파일 중 유심히 보아야 할 파일은 stack.sh 파일이다.


local.conf 또는 localrc 파일의 설정값을 읽어서 실제 OpenStack 구성을 하는 스크립트인데 ./stack.sh 명령으로 실행된다.



2. DevStack 인스톨


DevStack은 서두에서 설명한 것 처럼 local.conf 또는 localrc 파일을 활용하여 설치한다.


DevStack은 local.conf/localrc 파일에 따라서 다음과 같이 설치된다.

    • All-in-one 설치 : VirtualBox에서 생성한 하나의 VM에 OpenStack의 Control/Network/Compute 모두 설치
    • Milti-node 설치 : VirtualBox에 각각의 Node에 해당하는 VM을 생성하고 Node별 설치

본 포스팅에서는 DVR을 활용하는 DevStack을 구성하고자 한다.

    • Control Node (VirtualBox VM) : OpenStack의 Control Node 설치
    • Network Node (VirtualBox VM) : OpenStack의 Network Node 설치 
    • Compute Node (VirtualBox VM) : OpenStack의 Compute Node 설치
즉, 위에서 생성한 VM이 3개 필요하다는 의미이다. (당연히 IP는 달라야 한다)


2-1. local.conf 파일 생성 (Control Node)

본 파일은 http://assafmuller.com/2015/04/06/multinode-dvr-devstack/ 에서 참조함

$ cd devstack

$ vi local.conf


------------------------------------------------------------------------------------

[[local|localrc]]

DEST=/opt/stack

DATA_DIR=$DEST/data

LOGFILE=$DATA_DIR/logs/stack.log

SCREEN_LOGDIR=$DATA_DIR/logs

VERBOSE=True

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_TOKEN=openstack

SERVICE_PASSWORD=openstack

ADMIN_PASSWORD=openstack


disable_service n-net

enable_service neutron

enable_service q-svc

enable_service q-meta

enable_service q-agt

enable_service q-dhcp

enable_service q-l3


# TODO: Set this host's IP

HOST_IP=192.168.56.100


[[post-config|$NEUTRON_CONF]]

[DEFAULT]

router_distributed=True


[[post-config|/$Q_PLUGIN_CONF_FILE]]

[ml2]

type_drivers=flat,vlan,vxlan

tenant_network_types=vxlan

mechanism_drivers=openvswitch,l2population


[ml2_type_vxlan]

vni_ranges=1001:2000


[ovs]

local_ip=$HOST_IP


[agent]

tunnel_types=vxlan

l2_population=True

enable_distributed_routing=True


[[post-config|$Q_L3_CONF_FILE]]

[DEFAULT]

agent_mode=dvr

router_delete_namespaces=True


[[post-config|$Q_DHCP_CONF_FILE]]

[DEFAULT]

dhcp_delete_namespaces=True

------------------------------------------------------------------------------------------


2-2. Control Node DevStack 실행


$ ./stack.sh


2-3. local.conf 파일 생성 (Network Node)

본 파일은 http://assafmuller.com/2015/04/06/multinode-dvr-devstack/ 에서 참조함

$ cd devstack

$ vi local.conf


------------------------------------------------------------------------------------

[[local|localrc]]

DEST=/opt/stack

DATA_DIR=$DEST/data

LOGFILE=$DATA_DIR/logs/stack.log

SCREEN_LOGDIR=$DATA_DIR/logs

VERBOSE=True

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_TOKEN=openstack

SERVICE_PASSWORD=openstack

ADMIN_PASSWORD=openstack


ENABLED_SERVICES=neutron,q-agt,q-l3,q-meta


# TODO: Set this host's IP

HOST_IP=192.168.56.101


# TODO: Set the controller's IP

SERVICE_HOST=192.168.56.100

MYSQL_HOST=$SERVICE_HOST

RABBIT_HOST=$SERVICE_HOST

GLANCE_HOSTPORT=$SERVICE_HOST:9292


[[post-config|/$Q_PLUGIN_CONF_FILE]]

[ovs]

local_ip=$HOST_IP


[agent]

tunnel_types=vxlan

l2_population=True

enable_distributed_routing=True


[[post-config|$Q_L3_CONF_FILE]]

[DEFAULT]

agent_mode=dvr_snat

router_delete_namespaces=True

------------------------------------------------------------------------------------


2-4. Network Node DevStack 실행


$ ./stack.sh



2-5. local.conf 파일 생성 (Compute Node)

본 파일은 http://assafmuller.com/2015/04/06/multinode-dvr-devstack/ 에서 참조함

$ cd devstack

$ vi local.conf


------------------------------------------------------------------------------------

[[local|localrc]]

DEST=/opt/stack

DATA_DIR=$DEST/data

LOGFILE=$DATA_DIR/logs/stack.log

SCREEN_LOGDIR=$DATA_DIR/logs

VERBOSE=True

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_TOKEN=openstack

SERVICE_PASSWORD=openstack

ADMIN_PASSWORD=openstack


ENABLED_SERVICES=n-cpu,neutron,n-novnc,q-agt,q-l3,q-meta


# TODO: Set this host's IP

HOST_IP=192.168.56.102


# TODO: Set the controller's IP

SERVICE_HOST=192.168.56.100

MYSQL_HOST=$SERVICE_HOST

RABBIT_HOST=$SERVICE_HOST

Q_HOST=$SERVICE_HOST

GLANCE_HOSTPORT=$SERVICE_HOST:9292


VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

VNCSERVER_LISTEN=0.0.0.0


[[post-config|/$Q_PLUGIN_CONF_FILE]]

[ovs]

local_ip=$HOST_IP


[agent]

tunnel_types=vxlan

l2_population=True

enable_distributed_routing=True


[[post-config|$Q_L3_CONF_FILE]]

[DEFAULT]

agent_mode=dvr

router_delete_namespaces=True

------------------------------------------------------------------------------------


2-6. Compute Node DevStack 실행


$ ./stack.sh




3. Horizon 확인


devstack 설치가 완료되면 horizon을 통하여 확인 가능하다.


contronnode의 devstack 설치 완료 메시지를 보면 horizon 주소 및 계정이 보인다.







4. DevStack 종료


devstack 실행 후 VM을 종료하기 위해서는 devstack 환경을 종료하여야 한다.


만일 그대로 VM을 종료한다면 문제가 발생할 수 있다.


각 노드에 다음과 같이 명령을 내린다.


$ cd devstack

$ ./unstack.sh