오픈스택 멀티 노드 설치 - Nova (Controller)
아. 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 관련 서비스들 재시작