Skip to document
pieroot log
Markdown Preview

OpenStack 수동 설치 4 — Placement 자원 추적 서비스 설치

Frontmatter

Placement 서비스는 compute 자원의 재고와 할당을 추적하기 위해 DB, 서비스 사용자, API 엔드포인트, Apache WSGI 설정 및 CLI 검증을 순차적으로 구성하고 확인하는 과정을 안내한다.

OpenStack 수동 설치 4 — Placement 자원 추적 서비스 설치
Glance까지 설치했다면 Nova를 올리기 전에 Placement를 준비해야 한다. Placement는 compute 노드가 가진 vCPU, 메모리, 디스크 재고와 인스턴스가 사용한 자원을 추적한다.
이번 글에서는 Placement DB, 서비스 사용자, API endpoint, Apache WSGI, CLI 검증을 순서대로 구성한다.

이 글에서 다루는 내용

  • Resource Provider, Resource Class, Inventory, Allocation, Trait
  • Placement DB와 서비스 사용자 생성
  • 포트 8778 endpoint 등록
  • placement.conf 설정과 DB 동기화
  • placement-status와 osc-placement 검증
🧪
전제 환경
  • OpenStack 2026.1 (Gazpacho)
  • Keystone과 Glance 설치 완료
  • ~/admin-openrc 사용 가능
  • PLACEMENT_DBPASS, PLACEMENT_PASS는 실제 비밀번호로 교체

Placement의 역할

  • Resource Provider: 자원을 제공하는 주체. 일반적으로 compute 노드다.
  • Resource Class: VCPU, MEMORY_MB, DISK_GB 같은 자원 종류다.
  • Inventory: provider가 보유한 자원 총량이다.
  • Allocation: 인스턴스가 실제로 점유한 자원이다.
  • Trait: SSD, CPU 기능처럼 수량으로 표현하기 어려운 특성이다.
mermaid
flowchart LR
    S["nova-scheduler"] -->|후보 조회| P["Placement API :8778"]
    C["nova-compute"] -->|재고 보고| P
    P --> DB[("MariaDB: placement")]

1. Placement 데이터베이스 생성

bash
sudo mysql
sql
CREATE DATABASE placement;
CREATE USER 'placement'@'localhost' IDENTIFIED BY 'PLACEMENT_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost';
CREATE USER 'placement'@'%' IDENTIFIED BY 'PLACEMENT_DBPASS';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%';
FLUSH PRIVILEGES;
EXIT;
bash
mysql -u placement -p -e "SHOW DATABASES;"

2. 서비스 사용자 생성

bash
source ~/admin-openrc
openstack user create --domain default --password-prompt placement
openstack role add --project service --user placement admin
notion image

3. 서비스와 엔드포인트 등록

bash
openstack service create --name placement \
  --description "Placement API" placement

openstack endpoint create --region RegionOne placement public \
  http://192.168.56.101:8778
openstack endpoint create --region RegionOne placement internal \
  http://controller:8778
openstack endpoint create --region RegionOne placement admin \
  http://controller:8778
notion image
bash
openstack endpoint list --service placement

4. 패키지 설치

bash
sudo apt install -y placement-api

5. placement.conf 설정

/etc/placement/placement.conf의 주요 항목을 설정한다.
plain text
[placement_database]
connection = mysql+pymysql://placement:PLACEMENT_DBPASS@controller/placement

[api]
auth_strategy = keystone

[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = PLACEMENT_PASS
⚠️
Placement의 DB 섹션은 [database]가 아니라 [placement_database]다. 서비스별 설정 이름을 추측하지 말고 공식 문서와 실제 파일을 확인해야 한다.

6. DB 동기화와 Apache 재시작

bash
sudo su -s /bin/sh -c "placement-manage db sync" placement
sudo apache2ctl configtest
sudo systemctl restart apache2
bash
sudo mysql -e "USE placement; SHOW TABLES;" | head
curl http://controller:8778
ss -lntp | grep 8778
Placement는 Keystone처럼 Apache mod_wsgi 아래에서 동작한다. 장애가 발생하면 별도 Placement systemd 서비스보다 Apache 로그를 먼저 본다.

7. 상태 점검

bash
source ~/admin-openrc
sudo placement-status upgrade check
notion image
각 검사 항목이 Success면 DB 상태가 정상이다.

8. Placement CLI 검증

bash
sudo apt install -y python3-osc-placement
bash
openstack --os-placement-api-version 1.2 \
  resource class list --sort-column name

openstack --os-placement-api-version 1.6 \
  trait list --sort-column name
VCPU, MEMORY_MB, DISK_GB와 COMPUTE_* trait가 조회되면 API와 인증이 정상이다.
이 시점에 openstack resource provider list가 비어 있어도 정상이다. 아직 nova-compute가 Placement에 자원 정보를 보고하지 않았기 때문이다.

오류를 확인하는 순서

증상
확인 항목
포트 8778 응답 없음
Apache 상태와 설정 검사
DB 오류
[placement_database] connection과 db sync
401 Unauthorized
서비스 사용자 비밀번호와 role assignment
EndpointNotFound
placement endpoint 3종
CLI 명령을 찾지 못함
python3-osc-placement 설치 여부
bash
sudo apache2ctl configtest
sudo tail -100 /var/log/apache2/error.log

핵심 정리

  1. Placement는 compute 자원 재고와 할당을 추적한다.
  1. API는 포트 8778에서 Apache WSGI로 제공된다.
  1. Nova 설치 전에는 resource provider 목록이 비어 있는 것이 정상이다.

재발 방지 체크리스트

Placement DB와 사용자가 생성됐다.
Keystone 서비스 사용자와 admin 역할이 준비됐다.
placement endpoint 3종이 등록됐다.
DB 동기화 후 테이블이 존재한다.
포트 8778에서 JSON 응답을 받는다.
resource class와 trait가 조회된다.

다음 단계

다음 설치 단계는 Nova다. controller의 API와 scheduler를 구성한 뒤 compute1의 nova-compute를 연결하고, Placement에 resource provider가 나타나는지 확인한다.

참고 자료