Nova: Compute Service (컴퓨트 서비스)
✋ Prerequisties .
사전에 오픈스택 기초 환경이 구성 필요
참조: https://4betterme.tistory.com/39
Controller Node: Compute Node 관리
Compute Node: 인스턴스 생성하는 하이퍼바이저
<< ⭕ 본 Nova 서비스 설치 내용은 컨트롤러 노드에서 진행 >>
🔨 데이터 베이스 생성 및 접근 권한 설정
🟢 Mysql 에서 nova_api, nova, nova_cell0, placement 데이터 베이스를 생성한 다음, nova와 placement 계정에 데이터베이스 접속권한 부여 :
데이터베이스는 4개지만, 데이터베이스에 접근 가능한 계정은 nova 와 placement 점 유의!
# mysql -u root -p
[root 비밀번호 입력]하여 mariadb 접속
-------------------------------
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
MariaDB [(none)]> CREATE DATABASE placement;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '[nova db 비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '[nova db 비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '[nova db 비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '[nova db 비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \ IDENTIFIED BY '[nova db 비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '[nova db 비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '[placement db 비밀번호]'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '[placement db 비밀번호]';
🟢 admin credential 스크립트 실행 :
# source key_adminrc
🟢 Compute 서비스 Credential 생성 1 - nova 계정 생성 후 프로젝트 및 role에 추가 :
# openstack user create --domain default --password-prompt nova
# openstack role add --project service --user nova admin
🟢 Compute 서비스 Credential 생성 2 - nova 서비스 생성 :
# openstack service create --name nova \ --description "OpenStack Compute" compute
🟢 Compute API 서비스 endpoint 생성 :
# openstack endpoint create --region RegionOne compute public http://[컨트롤러 노드 관리용 ip]:8774/v2.1
# openstack endpoint create --region RegionOne compute internal http://[컨트롤러 노드 관리용 ip]:8774/v2.1
# openstack endpoint create --region RegionOne compute admin http://[컨트롤러 노드 관리용 ip]:8774/v2.1
🟢 Placement 서비스 Credential 생성 1 - placement 계정 생성 후 프로젝트 및 role에 추가 :
# openstack user create --domain default --password-prompt placement
# openstack role add --project service --user placement admin
🟢 Placement 서비스 Credential 생성 2 - placement 서비스 생성 :
# openstack service create --name placement --description "Placement API" placement
🟢 Placement API 서비스 endpoint 생성 :
# openstack endpoint create --region RegionOne placement public http://[컨트롤러 노드 관리용 ip]:8778
# openstack endpoint create --region RegionOne placement internal http://[컨트롤러 노드 관리용 ip]:8778
# openstack endpoint create --region RegionOne compute admin http://[컨트롤러 노드 관리용 ip]:8778
🔨 Compute 서비스 구성요소 설치 및 구성
🟢 Compute 서비스 관련 패키지 설치 :
# yum -y install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api
🟢 nova.conf 파일 수정 :
# vi /etc/nova/nova.conf
--------------------------------
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:[rabbitmq 오프스택 계정 비밀번호]@[컨트롤러 노드 관리용 ip]
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver
my_ip = [컨트롤러 노드 관리용 ip]
[api_database]
# ...
connection = mysql+pymysql://nova:[nova db 비밀번호]@[컨트롤러 노드 관리용 ip]/nova_api
[database]
# ...
connection = mysql+pymysql://nova:[nova db 비밀번호]@[컨트롤러 노드 관리용 ip]/nova
[placement_database]
# ...
connection = mysql+pymysql://placement:[placement db 비밀번호]@[컨트롤러 노드 관리용 ip]/placement
[api]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ... auth_url = http://[컨트롤러 노드 관리용 ip]:5000/v3
memcached_servers = [컨트롤러 노드 관리용 ip]:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = [nova계정 비밀번호]
[vnc]
enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip
[glance]
api_servers = http://[컨트롤러 노드 관리용 ip]:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[placement]
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://[컨트롤러 노드 관리용 ip]:5000/v3
username = placement password = [placement 계정 비밀번호]
🟢 00-nova-placement-api.conf 파일 수정 및 httpd 서비스 재실행 :
# vi /etc/httpd/conf.d/00-nova-placement-api.conf
------------------------------
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
# systemctl restart httpd
🟢 nova-api 와 placement 데이터베이스에 테이블 추가 (Populate) :
# su -s /bin/sh -c "nova-manage api_db sync" nova
🟢 cell0 데이터베이스 등록 :
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
🟢 cell1 cell 생성 :
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
🟢 nova 데이터베이스에 테이블 추가 (Populate) :
# su -s /bin/sh -c "nova-manage db sync" nova
⚫ Verification: nova cell0과 cell1 이 제대로 등록되었는지 확인 :
# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
🔨 설치 마무리
🟢 Computer 관련 서비스 실행 및 활성화 : (상태 확인 필수!)
# systemctl enable openstack-nova-api.service openstack-nova-consoleauth openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl start openstack-nova-api.service openstack-nova-consoleauth openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl status openstack-nova-api.service openstack-nova-consoleauth openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service
🔫 Trouble Shooting
🔴 ERROR : 설치 마무리 과정 중 openstack-nova-consoleauth.service 실행에서 오류 발생
Unable to connect to AMQP server on undercloud.internalapi.localdomain:5672 after None tries: (0, 0): (403) ACCESS_REFUSED
🟠 rabbitmq의 인증 문제로 추정하여 user 및 pw 확인하여 수정하였으나 여전히 오류
# rabbitmqctl list_users
# rabbitmqctl change_password openstack rabbitpass
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
🟠 공식 문서 확인 중 Rocky 패키지에서 nova(18.0.0.버전) 에서 consoleauth.service는 비추(추후 사라질 예정)한다는 내용 확인
🟢 Trouble shooting : consoleauth.service 삭제
# systemctl unmask consoleauth.service
'자기발전소 > # Manually Install OpenStack' 카테고리의 다른 글
Openstack Neutron on Centos (Rocky) 1 [Controller Node] (0) | 2020.08.22 |
---|---|
Openstack Nova on Centos (Rocky) 2 [Compute Node] (0) | 2020.08.21 |
Openstack Glance on Centos (Rocky) (0) | 2020.08.21 |
Openstack Keystone on Centos (Rocky) (0) | 2020.08.18 |
Openstack on Centos 환경 설정(Rocky, 매뉴얼 설치) (0) | 2020.08.11 |