Markdown Preview
OpenStack 수동 설치 4 — Placement 자원 추적 서비스 설치
Frontmatter
Placement 서비스는 compute 자원의 재고와 할당을 추적하기 위해 DB, 서비스 사용자, API 엔드포인트, Apache WSGI 설정 및 CLI 검증을 순차적으로 구성하고 확인하는 과정을 안내한다.
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 기능처럼 수량으로 표현하기 어려운 특성이다.
flowchart LR
S["nova-scheduler"] -->|후보 조회| P["Placement API :8778"]
C["nova-compute"] -->|재고 보고| P
P --> DB[("MariaDB: placement")]1. Placement 데이터베이스 생성
sudo mysqlCREATE 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;mysql -u placement -p -e "SHOW DATABASES;"2. 서비스 사용자 생성
source ~/admin-openrc
openstack user create --domain default --password-prompt placement
openstack role add --project service --user placement admin3. 서비스와 엔드포인트 등록
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:8778openstack endpoint list --service placement4. 패키지 설치
sudo apt install -y placement-api5. placement.conf 설정
/etc/placement/placement.conf의 주요 항목을 설정한다.[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_PASSPlacement의 DB 섹션은
[database]가 아니라 [placement_database]다. 서비스별 설정 이름을 추측하지 말고 공식 문서와 실제 파일을 확인해야 한다.6. DB 동기화와 Apache 재시작
sudo su -s /bin/sh -c "placement-manage db sync" placement
sudo apache2ctl configtest
sudo systemctl restart apache2sudo mysql -e "USE placement; SHOW TABLES;" | head
curl http://controller:8778
ss -lntp | grep 8778Placement는 Keystone처럼 Apache
mod_wsgi 아래에서 동작한다. 장애가 발생하면 별도 Placement systemd 서비스보다 Apache 로그를 먼저 본다.7. 상태 점검
source ~/admin-openrc
sudo placement-status upgrade check각 검사 항목이
Success면 DB 상태가 정상이다.8. Placement CLI 검증
sudo apt install -y python3-osc-placementopenstack --os-placement-api-version 1.2 \
resource class list --sort-column name
openstack --os-placement-api-version 1.6 \
trait list --sort-column nameVCPU, 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 설치 여부 |
sudo apache2ctl configtest
sudo tail -100 /var/log/apache2/error.log핵심 정리
- Placement는 compute 자원 재고와 할당을 추적한다.
- API는 포트 8778에서 Apache WSGI로 제공된다.
- 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가 나타나는지 확인한다.