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 사용자 등록 및 테이블 생성
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 계정 활성화
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 |
+--------+--------------------------------------------+
$ openstack service create --name nova --description "OpenStack Compute" compute
[결과]
+-------------+--------------------------------------------+
| Field | Value |
+-------------+--------------------------------------------+
| description | OpenStack Compute |
| enabled | True |
| id | f9eda7927ebd41b0b09709497c07f9d2 |
| name | nova |
| type | compute |
+-------------+--------------------------------------------+
$ 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 패키지 인스톨 및 설정
$ sudo apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient
$ 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
-------------------------------------------------------------------
$ sudo su
$ su -s /bin/sh -c "nova-manage db sync" nova
$ exit
1-5. 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 패키지 인스톨
$ sudo apt-get install nova-compute sysfsutils
$ sudo vi /etc/nova/nova.conf
[파일 수정 및 추가 내용]---------------------------------------------
[DEFAULT]
...
verbose = True
...
rpc_backend = rabbit
...
auth_strategy = keystone
...
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 서비스 재실행
$ sudo service nova-compute restart
$ sudo rm -f /var/lib/nova/nova.sqlite
3. 설정 확인
Nova Service 설치가 모두 완료되었으면 정상동작을 하는지 확인한다.
확인은 Control Node에서 시행하면 된다.
3-1. Nova Service 설정 및 동작 확인
$ 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 | - |
+--+---------------------+---------------+----------+---------+-------+----------------------------+-----------------+