Skip to document
pieroot log
Markdown Preview

OpenStack 수동 설치 5 — Nova Compute 서비스 설치

Frontmatter

OpenStack Nova Compute 서비스를 설치하고 Cell v2를 초기화·등록한 뒤 Placement와 연동을 검증하는 단계별 가이드입니다.

OpenStack 수동 설치 5 — Nova Compute 서비스 설치
Placement까지 준비했다면 이제 인스턴스의 생성과 스케줄링을 담당하는 Nova를 설치한다. Nova는 여러 데몬이 RabbitMQ로 협업하고 controller와 compute 노드를 모두 설정해야 하므로 앞선 서비스보다 구성이 복잡하다.
이번 글에서는 Nova DB 3개 → 서비스 사용자와 엔드포인트 → controller 서비스 → compute 서비스 → Cell v2 등록 → Placement 연동 검증 순서로 진행한다.

이 글에서 다루는 내용

  • Nova API, Scheduler, Conductor, NoVNC Proxy, Compute의 역할
  • nova_api, nova, nova_cell0 DB 구성
  • Cell v2 초기화와 compute 호스트 등록
  • controller와 compute1 설정
  • Placement resource provider 등록 검증
🧪
전제 환경
  • OpenStack 2026.1 (Gazpacho)
  • Keystone, Glance, Placement 설치 완료
  • controller 192.168.56.101, compute1 192.168.56.111
  • NOVA_DBPASS, NOVA_PASS, PLACEMENT_PASS, RABBIT_PASS는 실제 값으로 교체

Nova 구성 요소

구성 요소
위치
역할
nova-api
controller
Compute API 요청 수신, 포트 8774
nova-scheduler
controller
Placement에서 후보를 조회해 실행 호스트 선택
nova-conductor
controller
compute 노드의 DB 접근 대행
nova-novncproxy
controller
브라우저 VNC 콘솔, 포트 6080
nova-compute
compute1
libvirt로 실제 인스턴스 생성

1. 데이터베이스 생성

bash
sudo mysql
sql
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

CREATE USER 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
CREATE USER 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%';
FLUSH PRIVILEGES;
EXIT;

2. 서비스 사용자와 엔드포인트

bash
source ~/admin-openrc
openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin
notion image
bash
openstack service create --name nova --description "OpenStack Compute" compute

openstack endpoint create --region RegionOne compute public http://192.168.56.101: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
notion image
notion image
bash
openstack endpoint list --service nova
notion image

3. controller 패키지와 설정

bash
sudo apt install -y nova-api nova-conductor nova-novncproxy nova-scheduler
/etc/nova/nova.conf의 주요 항목을 설정한다.
plain text
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller:5672/
my_ip = 192.168.56.101

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

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

[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/v3
auth_type = password
project_domain_name = Default
project_name = service
user_domain_name = Default
username = nova
password = NOVA_PASS

[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

[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
⚠️
패키지에 남아 있는 [DEFAULT] log_dir 항목은 제거한다. [service_user] auth_url은 DevStack 경로가 아니라 현재 환경의 http://controller:5000/v3를 사용한다.

4. Cell v2 초기화

아래 순서를 유지한다.
bash
sudo su -s /bin/sh -c "nova-manage api_db sync" nova
sudo su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
sudo su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
sudo su -s /bin/sh -c "nova-manage db sync" nova
sudo su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
bash
sudo systemctl restart nova-api nova-scheduler nova-conductor nova-novncproxy
ss -lntp | grep -E '8774|6080'

5. compute1 설치

bash
sudo apt install -y nova-compute
/etc/nova/nova.conf의 핵심 설정은 다음과 같다.
plain text
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
my_ip = 192.168.56.111

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

[vnc]
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://192.168.56.101:6080/vnc_auto.html

[glance]
api_servers = http://controller: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://controller:5000/v3
username = placement
password = PLACEMENT_PASS
가상화 지원 여부를 확인한다.
bash
egrep -c '(vmx|svm)' /proc/cpuinfo
결과가 0이면 /etc/nova/nova-compute.conf에 virt_type = qemu를 설정한다.
plain text
[libvirt]
virt_type = qemu
bash
sudo systemctl restart nova-compute

6. compute 호스트 등록과 검증

controller에서 실행한다.
bash
source ~/admin-openrc
openstack compute service list --service nova-compute
notion image
bash
sudo su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
notion image
bash
openstack compute service list
sudo nova-status upgrade check
openstack resource provider list
notion image
notion image
notion image
compute1이 up이고 resource provider 목록에 나타나면 Nova와 Placement 연동이 정상이다.

오류 확인 순서

  • compute1이 보이지 않으면 nova-compute와 RabbitMQ 5672 연결을 확인한다.
  • 서비스가 down이면 Chrony와 메시지 큐 상태를 확인한다.
  • DB 동기화 실패 시 DB 3개의 권한과 connection을 확인한다.
  • Placement 오류가 나면 [placement] 사용자와 URL부터 확인한다.

핵심 정리

  1. Nova는 controller와 compute 노드에 나뉘어 동작한다.
  1. Cell v2 초기화 명령은 순서가 중요하다.
  1. 완료 기준은 compute 서비스 up과 Placement resource provider 등록이다.

재발 방지 체크리스트

Nova DB 3개와 Cell v2가 준비됐다.
controller의 Nova 서비스 4개가 정상이다.
compute1의 nova-compute가 up이다.
discover_hosts로 compute1을 등록했다.
Placement에 compute1이 나타난다.

다음 단계

다음 글에서는 인스턴스의 네트워크, 라우터, DHCP와 보안 그룹을 담당하는 Neutron을 설치한다.

참고 자료