인턴

오픈스택 멀티 노드 설치 - Nova (Controller)

AhnCloud 2024. 7. 2. 19:43
728x90

아. Compute service 설치(컨트롤러) 및 설정


1) 데이터베이스 설정

mysql

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \  IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \  IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \  IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \  IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \  IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \  IDENTIFIED BY 'NOVA_DBPASS';

exit

 

2) nova user 생성

. admin-openrc

openstack user create --domain default --password-prompt nova

* 비밀번호: NOVA_PASS

 

openstack role add --project service --user nova admin

* service 프로젝트에 넣고 admin 권한 부여

 

3) nova 서비스 엔트리 생성

openstack service create --name nova \  --description "OpenStack Compute" compute

*다른 컴포넌트들이 nova 서비스를 인식하도록 함

 

4) nova 서비스 엔드포인트 생성

openstack endpoint create --region RegionOne \  compute public http://controller:8774/v2.1

 

openstack endpoint create --region RegionOne \  compute internal http://controller:8774/v2.1

 

openstack endpoint create --region RegionOne \  compute admin http://controller:8774/v2.1

 

5) nova 설치

apt install nova-api nova-conductor nova-novncproxy nova-scheduler

 

6) nova config 파일 설정

vi /etc/nova/nova.conf

[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

 

[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

 

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller:5672/

 

[api]
# ...
auth_strategy = keystone

 

[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000/
auth_url = http://controller:5000/
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = NOVA_PASS

 

[service_user]
send_service_user_token = true
auth_url = http://controller:5000/identity
auth_strategy = keystone
auth_type = password
project_domain_name = Default
project_name = service
user_domain_name = Default
username = nova
password = NOVA_PASS

 

[DEFAULT]
# ...
my_ip =컨트롤러 노드의 IP

 

[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

 

[glance]
# ...
api_servers = http://controller:9292

 

[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

* 패키징 버그 이슈로 인해 오픈스택 공식문서에서는 [DEFAULT] 섹션에서 log_dir 옵션 삭제를 권장

 

[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

 

su -s /bin/sh -c "nova-manage api_db sync" nova

* nova-api DB 동기화

 

su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

* cell0 DB 등록

 

su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

* cell1 cell 생성

 

su -s /bin/sh -c "nova-manage db sync" nova

* nova DB 동기화

 

su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

* cell0, cell1 등록 확인

 

* 등록 확인

 

service nova-api restart

service nova-scheduler restart

service nova-conductor restart

service nova-novncproxy restart

* nova 관련 서비스들 재시작