---
title: "OpenStack 수동 설치 5 — Nova Compute 서비스 설치"
description: "OpenStack Nova Compute 서비스를 설치하고 Cell v2를 초기화·등록한 뒤 Placement와 연동을 검증하는 단계별 가이드입니다."
date: "2026-08-05"
last_modified: "2026-08-23T04:31:00.000Z"
type: "Post"
tags:
  - "openstack"
  - "install"
  - "ubuntu"
categories:
  - "📗 Docs"
series:
  - "오픈스택 설치"
canonical_url: "https://blog.pieroot.xyz/nova-compute-install"
markdown_url: "https://blog.pieroot.xyz/nova-compute-install.md"
---

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

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

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 구성 요소

### 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
```

![image](https://blog.pieroot.xyz/api/image-proxy?id=6f7f36c8-6679-44d7-a049-3bd03147cff3&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=0788add5-6c89-4718-9a20-dda8a21b82c5)

```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
```

![image](https://blog.pieroot.xyz/api/image-proxy?id=a8810c79-9103-4d02-9bd7-b116beb55ce6&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=e1b57afa-c021-4c47-9e95-f1484db6e6c9)

![image](https://blog.pieroot.xyz/api/image-proxy?id=57e91cb6-8ea0-4eb4-b471-bf607717aafb&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=78b09e73-a273-4e62-8e6a-0db5f9b6f75f)

```bash
openstack endpoint list --service nova
```

![image](https://blog.pieroot.xyz/api/image-proxy?id=a896aa8f-4608-4315-a90c-73d329920116&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=c98ef2c5-3463-4758-bb83-63595f517f78)

### 3. controller 패키지와 설정

```bash
sudo apt install -y nova-api nova-conductor nova-novncproxy nova-scheduler
```

`/etc/nova/nova.conf`의 주요 항목을 설정한다.

```
[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`의 핵심 설정은 다음과 같다.

```
[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`를 설정한다.

```
[libvirt]
virt_type = qemu
```

```bash
sudo systemctl restart nova-compute
```

### 6. compute 호스트 등록과 검증

controller에서 실행한다.

```bash
source ~/admin-openrc
openstack compute service list --service nova-compute
```

![image](https://blog.pieroot.xyz/api/image-proxy?id=f2158d99-4528-4163-9825-f055a8a0c229&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=cba5f060-3290-40cc-b57c-db40d8b8662a)

```bash
sudo su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
```

![image](https://blog.pieroot.xyz/api/image-proxy?id=27914e0d-d56b-453b-bbda-f78f227cfb80&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=414c9d49-9c8a-4f59-bd5a-47f86da6166e)

```bash
openstack compute service list
sudo nova-status upgrade check
openstack resource provider list
```

![image](https://blog.pieroot.xyz/api/image-proxy?id=5abeab35-22db-46d9-ab49-2932b0b61b2a&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=c662bc68-cf68-4090-8f93-4e12b02242d1)

![image](https://blog.pieroot.xyz/api/image-proxy?id=754e4126-f380-412b-ad79-e69b2d453586&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=52363d46-5d27-4b32-b628-8d58ee82a465)

![image](https://blog.pieroot.xyz/api/image-proxy?id=1ba064f1-d178-41c8-8aa6-89873b28a97c&kind=s3&pageId=d33f9a85-3277-4549-b65f-53a32a3ac1c2&source=block&blockId=4d7273d6-4215-435b-9bd7-015fdabf5fda)

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**을 설치한다.

### 참고 자료

- [Nova Installation Guide](https://docs.openstack.org/nova/2026.1/install/)

- [Nova Controller Installation](https://docs.openstack.org/nova/2026.1/install/controller-install-ubuntu.html)

- [Nova Compute Installation](https://docs.openstack.org/nova/2026.1/install/compute-install-ubuntu.html)
