본문 바로가기

Cloud Native/Install_OpenStack

OpenStack Kilo Install - Compute Service

OpenStack Nova Install

OpenStack은 가상네트워크를 생성하고 Virtual Machine(VM)을 생성하여 VM간의 네트워킹을 제공한다.


VM 생성에 관련된 서비스는 Nova 서비스이다.


Nova 서비스를 사용하여 VM에 대한 관리를 할 수 있다.


Nova 서비스는 Nova 서버 역할을 담당하는 부분과 실제 Nova 서비스가 시행되는 부분으로 나뉠 수 있다.


즉, Control Node에서 Nova 관리를 담당하고 Compute Node에서 Nova 관련 서비스가 실행된다고 생각하면 된다.


Nova 서비스는 Control Node 및 Compute Node에 설치가 되어야 한다.



OpenStack Nova Install



1. Control Node


1-1. Nova DataBase 사용자 등록 및 테이블 생성

    • DB 사용자 등록 (nova)
$ mysql -u root -p
    • nova DB 생성
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> exit


1-2. Nova 관련 OpenStack CLI 사용을 위한 admin 계정 활성화

$ source admin-openrc.sh

1-3. Keystone Nova 서비스 등록

    • nova 사용자 등록
      • 여기서 설정한 Password는 nova.conf 등 여러 파일에 사용하여야 함 (기억할 것)
$ openstack user create --password-prompt nova

[결과]
User Password:
Repeat User Password:
+----------+--------------------------------------------+
| Field       | Value                                           |
+----------+--------------------------------------------+
| email      | None                                            |
| enabled   | True                                             |
| id           | 8d15185f66b942b1811169618ab28ab8 |
| name      | nova                                             |
| username | nova                                             |
+----------+---------------------------------------------+
    • admin 및 nova 사용자의 nova 관련 제어를 위한 role 생성
$ openstack role add --project service --user nova admin

[결과]
+--------+--------------------------------------------+
| Field     | Value                                           |
+--------+--------------------------------------------+
| id        | 9c6551f223cc492392c51c2e454756e4   |
| name    | admin                                           |
+--------+--------------------------------------------+
    • nova 서비스 entry 생성
$ openstack service create --name nova --description "OpenStack Compute" compute

[결과]
+-------------+--------------------------------------------+
| Field          | Value                                           |
+-------------+--------------------------------------------+
| description  | OpenStack Compute                       |
| enabled      | True                                            |
| id              | f9eda7927ebd41b0b09709497c07f9d2 |
| name         | nova                                            |
| type           | compute                                      |
+-------------+--------------------------------------------+
    • nova 서비스 end point 등록
$ openstack endpoint create --publicurl http://controlnode01:8774/v2/%\(tenant_id\)s --internalurl http://controlnode01:8774/v2/%\(tenant_id\)s --adminurl http://controlnode01:8774/v2/%\(tenant_id\)s --region RegionOne compute

[결과]
+--------------+--------------------------------------------------+
| Field            | Value                                                  |
+--------------+--------------------------------------------------+
| adminurl       | http://controlnode01:8774/v2/%(tenant_id)s |
| id                | 6b035f7255cf487e92961c87cc4d9f51          |
| internalurl     | http://controlnode01:8774/v2/%(tenant_id)s |
| publicurl       | http://controlnode01:8774/v2/%(tenant_id)s |
| region          | RegionOne                                           |
| service_id      | f9eda7927ebd41b0b09709497c07f9d2        |
| service_name | nova                                                   |
| service_type   | compute                                             |
+--------------+--------------------------------------------------+

1-4. Nova 패키지 인스톨 및 설정

    • nova 패키지 인스톨
$ sudo apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient
    • nova 환경 설정
      • /etc/nova/nova.conf
$ sudo vi /etc/nova/nova.conf

[파일 내용 추가 및 수정]----------------------------------------
[DEFAULT]
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
my_ip = 10.0.0.11
...
vncserver_listen = 10.0.0.11
vncserver_proxyclient_address = 10.0.0.11
...
verbose = True

[oslo_messaging_rabbit]
...
rabbit_host = controlnode01
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = <nova 사용자 등록시 설정한 Pass>

[database]
connection = mysql://nova:NOVA_DBPASS@controlnode01/nova

[glance]
...
host = controlnode01

[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
-------------------------------------------------------------------
    • 수정된 nova DB sync
$ sudo su
$ su -s /bin/sh -c "nova-manage db sync" nova
$ exit

1-5. Nova 서비스 재 실행

  • nova 서비스 재실행
$ sudo service nova-api restart
$ sudo service nova-cert restart
$ sudo service nova-consoleauth restart
$ sudo service nova-scheduler restart
$ sudo service nova-conductor restart
$ sudo service nova-novncproxy restart

$ sudo rm -f /var/lib/nova/nova.sqlite


2. Compute Node


Control Node에 Nova 설치 및 설정이 완료되면 Compute node에 nova 서비스를 설치하고 설정한다.


지금부터는 Compute Node에 설치할 내용이니 다시한번 Compute Node인지 확인하자.


2-1. Nova 패키지 인스톨

  • nova 패키지 인스톨
$ sudo apt-get install nova-compute sysfsutils
  • nova 서비스 설정
    • /etc/nova/nova.conf
$ sudo vi /etc/nova/nova.conf

[파일 수정 및 추가 내용]---------------------------------------------

[DEFAULT]
...
verbose = True
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
my_ip = 10.0.0.31
...
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 10.0.0.31
novncproxy_base_url = http://<Controlnode01의 Public IP>:6080/vnc_auto.html

[oslo_messaging_rabbit]
...
rabbit_host = controlnode01
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

[keystone_authtoken]
...
auth_uri = http://controlnode01:5000
auth_url = http://controlnode01:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = <control node에 nova 사용자 등록시 설정한 Pass>

[glance]
...
host = controlnode01

[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
-------------------------------------------------------------------------
  • Compute Node HW acceleration 확인 및 Virtual Type 설정
    • HW acceleration 설정 확인
      • 결과값이 0인 경우 H/W에서 가상화 관련 지원을 하지 않음
$ egrep -c '(vmx|svm)' /proc/cpuinfo
    • Virtual Type 설정
      • /etc/nova/nova-compute.conf
$  sudo vi /etc/nova/nova-compute.conf

[파일 내용 수정]--------------------------------------------

[libvirt]
...
virt_type = qemu
--------------------------------------------------------------

* 만일 H/W 가상화를 지원하는 경우 KVM을 사용할 수 있다.
[파일 내용 수정]--------------------------------------------

[libvirt]
...
virt_type = kvm
--------------------------------------------------------------

2-2. Nova 서비스 재실행

  • nova 재실행
$ sudo service nova-compute restart

$ sudo rm -f /var/lib/nova/nova.sqlite



3. 설정 확인


Nova Service 설치가 모두 완료되었으면 정상동작을 하는지 확인한다.


확인은 Control Node에서 시행하면 된다.


3-1. Nova Service 설정 및 동작 확인

  • admin 사용자 계정 활성화

$ source admin-openrc.sh

  • nova 서비스 확인
$ nova service-list

[결과]
+--+---------------------+---------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary                 | Host            | Zone     | Status    | State | Updated_at                  | Disabled Reason |
+--+---------------------+---------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-cert            | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:32.000000 | -               |
| 2  | nova-consoleauth | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:36.000000 | -               |
| 3  | nova-scheduler    | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:33.000000 | -               |
| 5  | nova-conductor   | controlnode01 | internal | enabled | up    | 2015-10-01T01:50:38.000000 | -               |
| 6  | nova-compute     | compute01     | nova     | enabled | up    | 2015-10-01T01:50:33.000000 | -               |
+--+---------------------+---------------+----------+---------+-------+----------------------------+-----------------+
  • nova endpoint 확인
$ nova endpoints
  • nova image 연동 확인
$ nova image-list