VMware에 오픈스택 설치하기 (Newton)

이번 강좌에서는 윈도우 환경에서 오픈스택을 VMWare에 설치를 해보도록 하겠습니다. Controller node (Network node 포함), Compute node, 2개의 노드로 구성을 하도록 하겠습니다. 설치는 Packstack 을 사용하도록 하겠습니다. 

본 강좌를 따라하기 위해서는 기본적인 리눅스 지식과 VMWare의 지식이 필요합니다. 또한 OS상에 VMware Workstation이나 VMWare Player가 설치 되어 있어야 합니다.
  • 구성
    • OS: Centos 7
    • OpenStack: Newton
    • VM1 (Controller node, Network node):
      • 2 vCPUs
      • 4096MB RAM
      • 50GB Disk
      • 1 NAT NIC
      • Server with GUI
      • IP: 192.168.168.137
    • VM2 (Compute node):
      • 2 vCPUs
      • 4096MB RAM
      • 100GB Disk
      • 1 NAT NIC
      • Minimal Install
      • IP: 192.168.168.136
  • 필수 항목
    • VMWare
    • CentOS 7 installation image
    • 인터넷 커넥션

VM 생성

컨트롤러 노드, 네트워크 노드와 컴퓨트 노드가 설치될 2개의 VM을 생성하기 위해서 다음의 절차를 실행해 주십시오.

사전 준비

실행 노드: controller node, compute node

controller와 compute 양 노드에 root 유저로 로그인 하여 하기의 절차를 실행합니다.

오픈스택은 firewalld 대신에 iptables를 사용하므로 CentOS 7 의 디폴트 파이어월인 firewalld를 정지하고, 비활성화를 시킵니다.
systemctl stop firewalld
systemctl disable firewalld
오픈스택 네트워크는 NetworkManager가 활성화 되어 있으면 작동을 하지 않기 때문에 CentOS 7에 디폴트로 활성화 되어 있는 NetworkManager 서비스를 정지하고 비활성화 시킵니다.
systemctl stop NetworkManager
systemctl disable NetworkManager
디폴트로 network 서비스가 활성화 되어 있지만 한 번 더 확인합니다.
systemctl start network
systemctl enable network
호스트 파일을 편집합니다. 호스트의 IP는 자신이 설정한 IP에 맞게 편집합니다.
vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.168.137 controller controller.example.com
192.168.168.136 compute compute.example.com

패키지 준비

실행 노드: controller node, compute node

controller와 compute 양 노드에 root 유저로 로그인 하여 하기의 절차를 실행합니다.

오픈스택 Newton 버전의 패키지를 설치합니다.
yum install -y centos-release-openstack-newton
openstack-newton의 리포지토리를 다시 한 번 활성화합니다.
yum-config-manager --enable openstack-newton
시스템에 설치된 모든 패키지를 업데이트 합니다.
yum update -y

커널이 업데이트 되었으므로 리부팅을 실행합니다.

reboot

Packstack 설치

실행 노드: controller node

controller 노드에 root 유저로 로그인 하여 하기의 절차를 실행합니다.

오픈스택 설치를 위해서 packstack 패키지를 설치합니다. Packstack은 Puppet 모듈을 사용, SSH를 통해 오픈 스택을 자동으로 설치하는 유틸리티입니다. Packstack에 대해서 더 알고 싶으시면 여기를 참조하여 주십시오. 
yum install -y openstack-packstack
Openstack 설치 옵션이 들어가는 answer 파일을 생성합니다.
packstack --gen-answer-file /root/answers.txt
NIC 디바이스명 확인
2번의 디바이스명을 메모합니다. 저의 경우는 "eno16777736"입니다.
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:b4:eb:30 brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.137/24 brd 192.168.168.255 scope global dynamic eno16777736
       valid_lft 1796sec preferred_lft 1796sec
    inet6 fe80::20c:29ff:feb4:eb30/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 500
    link/ether 52:54:00:a9:de:63 brd ff:ff:ff:ff:ff:ff
생성된 "answers.txt" 파일을 vi 편집기로 편집합니다.
vi /root/answers.txt
하기의 항목을 찾아 똑같이 수정합니다.
"COMFIG_COMPUTE_HOSTS"에는 자신의 compute 노드의 IP를 입력합니다.
"CONFIG_NEUTRON_OVS_BRIDGE_IFACES"에는 위에서 확인한 자신의 NIC 디바이스명을 입력합니다.
CONFIG_COMPUTE_HOSTS=192.168.168.136
CONFIG_KEYSTONE_ADMIN_PW=openstack
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eno16777736
CONFIG_PROVISION_DEMO=n
Packstack을 실행하여 오픈스택 설치를 시작합니다.
packstack --answer-file=/root/answers.txt
설치가 정상적으로 끝나면 아래와 같은 메세지가 출력 됩니다.
 **** Installation completed successfully ******

Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.168.137. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.168.137/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * To use Nagios, browse to http://192.168.168.137/nagios username: nagiosadmin, password: 2dd002f363334276
 * The installation log file is available at: /var/tmp/packstack/20171008-005439-k_nFBN/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20171008-005439-k_nFBN/manifests

설치 정상성 확인

실행 노드: controller node, compute node

controller와 compute 양 노드에 root 유저로 로그인 하여 하기의 절차를 실행합니다.

openstack-status 명령어로 오픈스택 서비스를 확인합니다.
openstack-status
bash: openstack-status: command not found...
openstack-status 커맨드가 설치되어 있지 않습니다.
openstack-status 커맨드가 포함되어 있는 openstack-utils 패키지를 설치합니다.
yum install -y openstack-utils
설치가 완료되면 컨트롤러 노드에서 openstack-status 명령어를 실행합니다.
openstack-status
== Nova services ==
openstack-nova-api:                     active
openstack-nova-compute:                 inactive  (disabled on boot)
openstack-nova-network:                 inactive  (disabled on boot)
openstack-nova-scheduler:               active
openstack-nova-cert:                    active
openstack-nova-conductor:               active
openstack-nova-console:                 inactive  (disabled on boot)
openstack-nova-consoleauth:             active
openstack-nova-xvpvncproxy:             inactive  (disabled on boot)
== Glance services ==
openstack-glance-api:                   active
openstack-glance-registry:              active
== Keystone service ==
openstack-keystone:                     inactive  (disabled on boot)
== Horizon service ==
openstack-dashboard:                    active
== neutron services ==
neutron-server:                         active
neutron-dhcp-agent:                     active
neutron-l3-agent:                       active
neutron-metadata-agent:                 active
neutron-openvswitch-agent:              active
neutron-metering-agent:                 active
== Cinder services ==
openstack-cinder-api:                   active
openstack-cinder-scheduler:             active
openstack-cinder-volume:                active
openstack-cinder-backup:                active
== Ceilometer services ==
openstack-ceilometer-api:               inactive  (disabled on boot)
openstack-ceilometer-central:           active
openstack-ceilometer-compute:           inactive  (disabled on boot)
openstack-ceilometer-collector:         active
openstack-ceilometer-notification:      active
== Heat services ==
openstack-heat-api:                     active
openstack-heat-api-cfn:                 active
openstack-heat-api-cloudwatch:          inactive  (disabled on boot)
openstack-heat-engine:                  active
== Support services ==
mariadb:                                active
openvswitch:                            active
dbus:                                   active
target:                                 active
rabbitmq-server:                        active
memcached:                              active
== Keystone users ==
Warning keystonerc not sourced
컴퓨트 노드에서도 openstack-status 명령어를 실행합니다.
openstack-status
== Nova services ==
openstack-nova-api:                     inactive  (disabled on boot)
openstack-nova-compute:                 active
openstack-nova-network:                 inactive  (disabled on boot)
openstack-nova-scheduler:               inactive  (disabled on boot)
== neutron services ==
neutron-server:                         inactive  (disabled on boot)
neutron-dhcp-agent:                     inactive  (disabled on boot)
neutron-l3-agent:                       inactive  (disabled on boot)
neutron-metadata-agent:                 inactive  (disabled on boot)
neutron-openvswitch-agent:              active
== Ceilometer services ==
openstack-ceilometer-api:               inactive  (disabled on boot)
openstack-ceilometer-central:           inactive  (disabled on boot)
openstack-ceilometer-compute:           active
openstack-ceilometer-collector:         inactive  (disabled on boot)
== Support services ==
openvswitch:                            active
dbus:                                   active
Warning novarc not sourced
정상적인 서비스 상태를 확인하였습니다.
 
이번에는 오픈스택의 웹 인터페이스인 Horizon이 문제없이 작동하는지 확인하여 보겠습니다.
브라우저를 실행하고 컨트롤러 노드의 IP로 접속을 합니다.
주소: http://192.168.168.137/dashboard
User Name: admin
Password: openstack



정상적으로 로그인이 되면 아래와 같은 메인 화면을 볼 수 있습니다.

버그 수정

Newton 버전에서 발견되는 버그를 수정하겠습니다.
Horizon에서 네트워크 설정을 변경시 문제없이 변경은 되지만 에러 메세지를 띄우는 버그가 있습니다.
이 버그의 원인은 Horizon의 백엔드인 Django에서 사용하는 "/usr/share/openstack-dashboard/openstack_dashboard/api/neutron.py"입니다. 이 파일을 수정하도록 하겠습니다.
vi /usr/share/openstack-dashboard/openstack_dashboard/api/neutron.py
아래와 같이 102번 행을 주석처리합니다.
 97 class Network(NeutronAPIDictWrapper):
 98     """Wrapper for neutron Networks."""
 99 
100     def to_dict(self):
101         d = dict(super(NeutronAPIDictWrapper, self).to_dict())
102         #d['subnets'] = [s.to_dict() for s in d['subnets']]
103         return d
수정을 마쳤으면 컨트롤러 노드에서 웹서버를 리스타트합니다.
systemctl restart httpd
수고하셨습니다~! 다음 강좌에서는 프로젝트, 유저, 가상 네트워크, 이미지, 인스턴스 등의 생성을 통해 간단한 오픈스택 구성을 만들어 보겠습니다.



 

blog comments powered by Disqus