History
- openstack을 옛날에 쓸때는 VirtualBox같은 가상 환경에 여러개의 네트워크 인터페이스를 설정한 ubuntu 가상 머신을 만드는 것이 일반적이었음
- VirtualBox의 CLI의 VBoxManage로 vboxnet0 (public), vboxnet1(private)같은 Host-Only 네트워크를 생성하고,
- VM에 하나는 인터넷 접속용 (NAT), 다른 하나는 Host-Only(고정 IP를 할당해 로컬 통신)를 할당했음
- 이때 ifupdown 시스템을 통해 /etc/network/interfaces 파일을 직접 수정하여 고정 IP를 설정하였으나
- 현재는 netplan 또는 NetworkManager를 사용하는 경우가 많고, GUI나 yaml 방식을 많이 사용함
- 하지만, ifupdown의 방식인 외부 인터넷 접속, 내부 관리, 서비스간 통신을 위한 네트워크 분리는 여전히 유효함
- 이번 실습에서는 이런 분리에 대해 구축을 하고 실습해볼거임
Installation
- 우분투 server 이미지(mac이니깐 arm 아키텍처)와 가상 환경(VMware Fusion)을 준비함
네트워크 인터페이스 설정
- 여러 네트워크 대역을 사용하므로, 최소 3개의 네트워크 어댑터를 설정함
- VMware Fusion 버튼에 Preferences 설정으로 가서 네트워크를 설정할거임
- public network(host-only, management), private network(host-only)를 생성함
- public network (외부에서 접근 가능함)
- Type: Custom
- Subnet IP: 172.16.0.0
- Subnet Mask: 255.255.0.0
- private network (내부 통신 전용)
- Type: Custom
- Subnet IP: 10.0.0.0
- Subnet Mask: 255.0.0.0
- Subnet Mask는 IP 주소를 네트워크 영역과 호스트 영역으로 나누기 위해 사용하는 값
- IP 주소는 두 부분으로 나누어짐
- 네트워크 부분: 어느 네트워크에 속하는지 나타냄
- 호스트 부분: 해당 네트워크 안의 어떤 장치(컴퓨터, VM)인지 나타냄
- ex) IP가 192.168.1.10이고, 서브넷 마스크가 255.255.255.0이면,
- 192.168.1 → 네트워크 부분, 10 → 호스트 부분
- 즉, 이 네트워크는 192.168.1.0 ~ 192.168.1.255 범위의 주소를 갖는 네트워크 (총 254개를 가짐)

- 이렇게 public network와 private network를 만들고나서 VM에 network adapter를 추가할거임
- Virtual Machine -> Settings에 들어가서 Add Device를 누르면됨

- Network Adpater: 1번째 인터페이스 (NAT)로 외부 인터넷과 연결 역할을 하며, 패키지 다운로드 같은거를 수행함
- 설정에서는 share with my mac으로 하면됨
- 외부에서 내부를 접근 안되지만, 내부에서 외부로는 접근 가능
- Network Adapter 2,3: public/ private 역할
- public: 외부와 통신할 수 있는 OpenStack VM의 Public IP 네트워크, Bridged - Wi-Fi로 설정해서 실제 로컬 네트워크에도 노출 가능하게 함, Host-only로 VM끼리도 가능
- private: (Host-only) 내부 VM 간 통신 전용 (관리 트래픽, 내부 API 트래픽 등)

- ens가 인터페이스 이름임
- 계속 원하는 환경을 설정을하고 done을 해주면됨
Ubuntu 서버 설치
- 이제 서버를 설치해보자
- 이때 SSH Server를 설치하여 원격 접속을 편하게 하면 좋음!

- 설정들을 해주면서 설치를 계속 진행해주면된다
SSH 접속
public ip를 통해 ssh를 접속할거임
NAT로는 외부에서 내부로 직접 접속은 어려움
포트포워딩 등등.. 이런 문제가 있음
ssh <계정주인>@<public IP주소>
작업을 할때 iterm을 열어서 ssh로 접속을해서 작업을 해주면 조금 더 편하게 할 수 있다!1
Ubuntu 서버 기본 설정
- 시스템 업데이트를 해줘야 한다
sudo apt update
sudo apt upgrade -y
- 필수 패키지 설치
- openstack 클라이언트와 add-apt-repository 명령어를 위한 기본 패키지를 설치함
sudo apt install -y python3-openstackclient software-properties-common
- 네트워크 고정 IP 설정(Netplan)
- 최신 ubuntu는 netplan을 사용하여 네트워크를 관리함
- /etc/netplan/ 디렉토리의 설정 파일을 수정하여 고정 Ip를 할당함
- 먼저 ip addr 명령어를 통해 자신의 네트워크 인퍼페이스 카드 이름을 확인함

- cloud-init 비활성화: 클라우드 환경이 아니므로, 재부팅 시 cloud-init이 네트워크 설정을 덮어쓰지 않도록 비활성화함
sudo touch /etc/cloud/cloud-init.disabled
- netplan 설정 파일을 수정해보자
cd /etc/netplan
- netplan이 있는 곳으로 이동하면 50-cloud-init.yaml파일이 있음
- 여기서 yaml 파일을 수정해주면 됨
- 이때 sudo nano 50-cloud-init.yaml 이렇게 열어서 수정하면됨

sudo netplan apply를 하고나면 ssh를 접속할때 이제 ens192의 주소로 접속을 하게 될거임
- ip주소에 alias를 설정할거임
- sudo vi /etc/hosts에서 설정을 하면됨
- controller를 managment ip로 해놓으면 좋음

- 관리/내부 네트워크(Management Network) IP가 서비스 간 통신의 기준이 되며,
이 IP를 /etc/hosts의 controller alias로 등록하는 것이 업계 표준임 - OpenStack Controller 노드는 클라우드 인프라에서 관리·오케스트레이션 등 중앙집중식 제어 역할을 담당하는 핵심 서버
- 인증/권한 관리(Keystone)
- 사용자의 인증과 서비스 API 접근 권한을 모두 관리함
- 이미지 서비스(Glance)
- VM에 사용할 디스크 이미지 저장·관리 담당
- 컴퓨트 관리(Nova의 관리 컴포넌트)
- 실제 VM 실행 요청을 받아서 어느 Compute 노드에서 처리할 지 스케줄링, 관리 명령 전송
- 네트워크 관리 서비스(Neutron의 관리 컴포넌트)
- 가상 네트워크, 라우터, 서브넷, Floating IP 할당 등 네트워크 자원 전체를 통제
- 메시지 큐, 데이터베이스
- 내부 서비스 간 통신(qpid, rabbitmq 등), 상태 정보 저장(MySQL, MariaDB 등)도 함께 운영
- 대시보드(Horizon)
- Web 기반 관리 콘솔을 제공하여 사용자와 관리자 모두 인터페이스 활용 가능
- controller alias는 내부 관리망(IP)으로 두는 것이 보통임
- 인증/권한 관리(Keystone)
Openstack 설치
- 클라우드 환경에서 노드 간 시간 동기화는 매우 중요하기에 chrony를 설치하고 활성화를 함
sudo apt install -y chrony
sudo systemctl enable --now chrony
이렇게 하고나서
chronyc sources로 확인해주면됨
데이터베이스 설정 (Maria DB)
sudo apt install -y mariadb-server python3-pymysql
- MariaDB 설정
- 컨트롤러 노드의 관리 IP에서만 접속을 허용하도록 설정 파일을 생성함
- bind-address는 컨트롤러 노드의 관리 IP(netplan에서 설정한 고정 IP 대역)으로 변경하면됨
sudo vi /etc/mysql/mariadb.conf.d/99-openstack.cnf
[mysqld]
bind-address = 172.16.0.254
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
- 설정후 DB를 재시작해줌
sudo systemctl restart mariadb
- MariaDB 보안 설정,
- sudo mysql_secure_installation
- 아래와 같이 설정을 함
- Enter current password for root (enter for none): Enter
- Switch to unix_socket authentication [Y/n]: n
- Set root password? [Y/n]: y, 원하는 비밀번호(예: openstack) 입력
- Remove anonymous users? [Y/n]: y (권장)
- Disallow root login remotely? [Y/n]: n (OpenStack은 원격 DB 접속이 필요)
- Remove test database and access to it? [Y/n]: y (권장)
- Reload privilege tables now? [Y/n]: y (권장)
- Openstack용 데이터베이스 및 계정 생성
- 아래 SQL 명령어를 실행해 각 서비스에 필요한 데이터베이스와 사용자를 생성함
- sudo mysql -u root -p
-- 데이터베이스 생성
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
CREATE DATABASE placement;
-- nova 사용자 생성 및 권한 부여
CREATE USER 'nova'@'localhost' IDENTIFIED BY 'openstack';
CREATE USER 'nova'@'%' IDENTIFIED BY 'openstack';
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'@'%';
-- placement 사용자 생성 및 권한 부여
CREATE USER 'placement'@'localhost' IDENTIFIED BY 'placementpass';
CREATE USER 'placement'@'%' IDENTIFIED BY 'placementpass';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%';
FLUSH PRIVILEGES;
EXIT;
Openstack 핵심 서비스 설치
여기서는 ubuntu 22.04만 하면됨, 나는 24.04를 쓰는데 24.04에서는 기본으로 탑재되어 있음
24.04를 기준으로 해보자
sudo apt update
sudo apt install -y \
nova-compute \
glance \
neutron-linuxbridge-agent \
placement-api \
keystone \
mariadb-server \
rabbitmq-server \
memcached
다운받고나서 아래 코드로 확인하면 됨
systemctl status nova-compute
systemctl status glance-api
----
아래는 22.04
sudo add-apt-repository cloud-archive:caracal
sudo apt update
필요한 서비스를 선택해서 설치하면됨
sudo apt install -y \
nova-compute \
glance \
neutron-linuxbridge-agent \
placement-api \
keystone \
mariadb-server \
rabbitmq-server \
memcached \
etcd
- Openstack 서비스 설정
- 각 서비스는 /etc/<서비스명>/<설정파일>.conf 경로에서 설정을 관리합니다. 데이터베이스 연결 설정이 대표적임
- ex) /etc/nova/nova.conf 파일에 데이터베이스 연결 정보를 아래와 같이 추가
[api_database]
connection = mysql+pymysql://nova:openstack@172.16.0.254/nova_api
[database]
connection = mysql+pymysql://nova:openstack@172.16.0.254/nova
[placement_database]
connection = mysql+pymysql://placement:placementpass@172.16.0.254/placement
sudo nano /etc/nova/nova.conf 로 열어서 진행을 하면됨
crtl + w를 통해 검색을 해서 진행해주면됨
- MariaDB/MySQL 서비스는 항상 컨트롤러 노드에서 실행함
- 보안상 운영 환경에서는 강력한 비밀번호 사용을 권장함
- OpenStack 공식 설치 가이드(영문/한글)에서 최신 정보와 각 서비스별 추가 설정을 확인할 수 있음
'클라우드 > OpenStack' 카테고리의 다른 글
| glance에서 keystone 서비스 연동 (0) | 2025.07.19 |
|---|---|
| Key Stone install & managment (0) | 2025.07.06 |
| Openstack Storage - Cinder/Manila/Ceph (0) | 2025.07.05 |
| Openstack Storage-Swift (0) | 2025.07.05 |
| Introduction to Openstack (0) | 2025.06.29 |