Skip to document
pieroot log
Markdown Preview

OpenStack 수동 설치 1 — 기본 환경과 기반 서비스 구성

Frontmatter

OpenStack을 Ubuntu 24.04에 Gazpacho 버전으로 수동 설치하기 위해 먼저 호스트 이름, 네트워크, 시간 동기화와 MariaDB, RabbitMQ, Memcached, Etcd 등 기본 인프라 서비스를 준비하고 검증하는 과정을 단계별로 안내한다.

OpenStack 수동 설치 1 — 기본 환경과 기반 서비스 구성
OpenStack을 수동 설치할 때 가장 먼저 할 일은 Keystone 설치가 아니다. 호스트 이름, 네트워크, 시간, 패키지 저장소와 공통 기반 서비스가 안정적으로 준비돼야 이후 서비스가 정상적으로 연결된다.
이번 글에서는 Ubuntu 24.04에 OpenStack 2026.1(Gazpacho)를 설치하기 위한 기본 환경과 기반 서비스 구성을 순서대로 정리한다.

이 글에서 다루는 내용

  • controller와 compute1 노드 설계
  • Management NIC과 Provider NIC 분리
  • 호스트 이름, 이름 해석, 시간 동기화
  • Ubuntu Cloud Archive 등록
  • MariaDB, RabbitMQ, Memcached, Etcd 설치
  • 단계별 검증과 자주 발생하는 오류
🧪
기준 환경
  • Ubuntu 24.04 LTS (Noble)
  • OpenStack 2026.1 (Gazpacho)
  • controller: 192.168.56.101
  • compute1: 192.168.56.111
  • 패키지 기반 수동 설치

1. 노드와 네트워크 설계

controller에는 API, DB, 메시지 큐와 제어 서비스를 설치한다. compute1에는 실제 인스턴스를 실행하는 nova-compute와 Neutron 에이전트를 설치한다.
각 노드에는 NIC 두 개를 준비한다.
NIC
용도
설정
Management
API, DB, MQ, SSH, 패키지 다운로드
고정 IP, 게이트웨이, DNS 설정
Provider
인스턴스의 외부 네트워크
호스트 IP와 DHCP 없이 링크만 활성화
Management와 Provider 네트워크 구성
Management와 Provider 네트워크 구성
Provider NIC에 DHCP를 켜두면 default route가 두 개 생기고 API 통신이 간헐적으로 끊길 수 있다.
VirtualBox에서는 위 구성이 보이도록 NAT/관리 네트워크를 먼저 만든 뒤 VM 어댑터에 연결한다.
notion image

2. 호스트 기본 설정

호스트 이름

bash
# controller
sudo hostnamectl set-hostname controller

# compute1
sudo hostnamectl set-hostname compute1

이름 해석

두 노드의 /etc/hosts에 동일하게 추가한다.
bash
sudo tee -a /etc/hosts <<'EOF'
192.168.56.101  controller
192.168.56.111  compute1
EOF
127.0.1.1 controller처럼 서비스 호스트 이름이 loopback을 가리키는 항목은 제거한다.

네트워크 인터페이스 확인

bash
ip -br link
ip -br addr
ip route
정상 상태는 Management NIC에만 IP가 있고, Provider NIC은 IP 없이 UP인 상태다. default route도 Management NIC에 하나만 있어야 한다.

3. 시간 동기화

토큰과 서비스 상태는 시간에 민감하다. 노드 시간이 어긋나면 정상 토큰이 만료된 것으로 처리되거나 compute 서비스가 down으로 보일 수 있다.
bash
sudo apt update
sudo apt install -y chrony
compute1에서 controller를 시간 원본으로 사용한다.
bash
echo "server controller iburst" | \
  sudo tee /etc/chrony/sources.d/openstack.sources
sudo systemctl restart chrony
bash
chronyc sources
chronyc tracking

4. OpenStack 저장소와 CLI 설치

Ubuntu 24.04 기본 저장소의 OpenStack 버전과 설치 대상 버전이 다를 수 있다. 모든 노드에 같은 UCA 저장소를 등록한다.
bash
sudo apt install -y software-properties-common
sudo add-apt-repository -y cloud-archive:gazpacho
sudo apt update && sudo apt -y dist-upgrade
sudo apt install -y python3-openstackclient
bash
apt policy | grep -i gazpacho
openstack --version
controller와 compute1의 저장소 버전이 다르면 이후 RPC 호환성 오류를 추적하기 어렵다.

5. MariaDB 설치

OpenStack 서비스는 상태를 서비스별 데이터베이스에 저장한다.
bash
sudo apt install -y mariadb-server python3-pymysql
/etc/mysql/mariadb.conf.d/99-openstack.cnf를 만든다.
plain text
[mysqld]
bind-address = 192.168.56.101
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8mb4_general_ci
character-set-server = utf8mb4
bash
sudo systemctl restart mysql
sudo mysql_secure_installation
sudo mysql -e "SELECT VERSION();"
ss -lntp | grep 3306

6. RabbitMQ 설치

RabbitMQ는 API 서비스가 받은 작업을 워커 데몬에 전달하는 메시지 버스다.
bash
sudo apt install -y rabbitmq-server
sudo rabbitmqctl add_user openstack RABBIT_PASS
sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"
RABBIT_PASS는 실제 비밀번호로 교체한다. 운영 환경에서는 다른 서비스 비밀번호와 분리한다.
bash
sudo rabbitmqctl status
sudo rabbitmqctl list_users

7. Memcached 설치

Memcached는 Keystone 토큰 검증 결과를 캐시한다.
bash
sudo apt install -y memcached python3-memcache
sudo sed -i 's/^-l .*/-l 192.168.56.101/' /etc/memcached.conf
sudo systemctl restart memcached
ss -lntp | grep 11211

8. Etcd 설치

Ubuntu 24.04에서는 패키지 이름이 etcd가 아니라 etcd-server다.
bash
sudo apt install -y etcd-server
/etc/default/etcd에 controller 주소를 설정한다.
bash
sudo tee -a /etc/default/etcd <<'EOF'
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://192.168.56.101:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.56.101:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.56.101:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.56.101:2379"
EOF
sudo systemctl enable --now etcd
bash
etcdctl put tutorial-test "hello"
etcdctl get tutorial-test

전체 검증

bash
systemctl status mysql rabbitmq-server memcached etcd --no-pager
ss -lntp | grep -E '3306|5672|11211|2379'

주의사항

  • Provider NIC에는 IP, DHCP, 게이트웨이를 설정하지 않는다.
  • /etc/hosts의 loopback 호스트 이름 충돌을 먼저 제거한다.
  • 모든 노드의 OpenStack 저장소 버전을 동일하게 맞춘다.
  • 비밀번호 placeholder를 그대로 실행하지 않는다.
  • 운영 환경에서는 DB, RabbitMQ, 서비스 계정 비밀번호를 각각 다르게 발급한다.

핵심 정리

  1. 수동 설치의 첫 단계는 서비스가 아니라 호스트와 공통 인프라 준비다.
  1. 네트워크와 시간 설정이 틀리면 이후 모든 서비스에서 연쇄 오류가 발생한다.
  1. 각 설치 단계 뒤에는 서비스 상태와 LISTEN 포트를 즉시 확인한다.

재발 방지 체크리스트

Management NIC에만 IP와 default route가 있다.
Provider NIC은 IP 없이 UP이다.
두 노드에서 controller, compute1 이름 해석이 된다.
Chrony 동기화가 정상이다.
UCA Gazpacho와 OpenStack CLI가 설치됐다.
MariaDB, RabbitMQ, Memcached, Etcd가 정상 기동한다.

다음 단계

다음 글에서는 OpenStack의 인증과 서비스 카탈로그를 담당하는 Keystone을 설치한다.

참고 자료