- Published on
OpenStack 구축기 #3: Manual Install 과정
967 words5 min read–––
Views
- Authors

이제부터 설명할 OpenStack 수동 설치 과정은 OpenInfra KOREA USER GROUP 게시판에 올라온 OpenStack 입문자 자료를 기반으로 한다.
해당 메뉴얼의 part 01을 보면 물리적인 환경을 구성하는 과정이 나오는데, 나는 친구가 제공해준 서버 환경에 구축하려 하기에 장비 세팅 과정은 넘겼다.
나의 기본 세팅 환경은 다음과 같다. Storage 노드만 Cinder의 LVM 구성을 위해 512GB 디스크를 더 추가했다.
- Controller : CPU 8 Core, RAM 8GB, Disk 128GB
- Compute : CPU 8 Core, RAM 8GB, Disk 128GB
- Network : CPU 8 Core, RAM 8GB, Disk 128GB
- Storage : CPU 8 Core, RAM 8GB, Disk 640GB
Netplan은 다음과 같이 구성했다.
[Controller, Storage 노드 구성]
network:
version: 2
ethernets:
enp6s18:
dhcp4: false
addresses:
- node_ip_addr/24
routes:
- to: default
via: gateway_addr
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
[Network, Storage 노드 구성]
network:
version: 2
ethernets:
enp6s18:
dhcp4: false
bridges:
br-ex:
openvswitch: {}
interfaces: [enp6s18]
dhcp4: false
addresses:
- node_ip_addr/24
routes:
- to: default
via: gateway_addr
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
이후부터는 메뉴얼 4.5부터 동일하게 진행했다. 간략하게 내용만 정리해보겠다. 자세한 명령어는 메뉴얼을 참고해라.
0. Pre-Installation
- Hostname 설정 : os-controller / os-compute / os-network / os-storage
/etc/host
작성 : Hostname과 주소 정보 매핑
Horizon 대시보드에서 UI로 접근하기 위해서는 로컬 경로C:\Windows\System32\drivers\etc\hosts
에도 설정이 필요- ulimit 상향 조정 : MariaDB의 장애를 막기 위한 사전 조치
- (선택) Swap 설정 변경 : 스왑 사용 X
- 최신 OS 패키지 설치 :
sudo apt update -y && sudo apt dist-upgrade -y
- NTP(Network Time Protocol) Client : 시간 동기화를 위해 모든 서버에
chrony
설치 - OpenStack Repository 추가 : 2025.1 Epoxy 버전 설치
- 재부팅
1. Prerequisite Services
OpenStack의 기반이 되는 외부 서비스를 설치한다.
- MariaDB → OpenStack 서비스 설정/메타데이터 저장용 DB
- RabbitMQ → 서비스 간 메시지 큐(비동기 통신)
- Memcached → 인증 토큰 캐시 등 성능 향상 캐시 서버
2. Manual Installation
- (Controller) Keystone – 인증/권한 관리
1.1 Keystone DB 생성
1.2 Keystone 패키지 설치 및keystone.conf
파일 작성
1.3 DB 내용 생성
1.4 Keystone이 동작 하기 위한 기초 설정 - Admin 계정 및 비밀번호 설정, Apache 설정,openrc
파일로 환경 변수 저장
1.5 Project 생성 - Nova, Glance, Cinder 등이 사용할 운영용 Project
1.6 User 생성
1.7 Role 생성 - (Controller) Glance – 이미지 관리
2.1 Glance DB 생성
2.2 glance라는 OpenStack 계정 생성 및 프로젝트 권한 부여
2.3 glance라는 Service 생성
2.4 Endpoint 생성
2.5 Glance 패키지 설치 및glance-api.conf
파일 작성
2.6 DB 내용 생성
2.7 policy.yaml 작성
2.8 Glance-api 시작 - (Controller) Placement – 컴퓨트 자원 조회/관리
3.1 Placement DB 생성
3.2 placement라는 OpenStack 계정 생성 및 프로젝트 권한 부여
3.3 placement라는 Service 생성
3.4 Endpoint 생성
3.5 Placement 패키지 설치 및placement.conf
파일 작성
3.6 DB 내용 생성
3.7 Apache2 재시작 (Placement는 별도의 프로세스가 아니라, Apache2에 연동되어 구동하는 Apache의 Python module이다) - (Controller) Nova – VM 생성/스케줄링 제어
4.1 Nova DB 생성
4.2 Nova라는 OpenStack 계정 생성 및 프로젝트 권한 부여
4.3 Nova라는 Service 생성
4.4 Endpoint 생성
4.5 Nova 패키지 설치 및nova.conf
파일 작성 - nova-api / nova-conductor / nova-novncproxy / nova-scheduler
4.6 DB 내용 생성 - nova-api DB, cell0 DB, cell1 DB, nova DB
4.7 Nova service 시작 - (Compute) Nova-compute
5.1 nova-compute 패키지 설치 및nova.conf
파일 작성
5.2nova-compute.conf
파일 내용 확인 - libvirt ...
5.3 nova-compute 서비스 시작
5.4 iscsid 기동
(Controller)
5.5 등록된 nova-compute 서비스가 있는지 확인
5.6 등록된 내용을 바탕으로 DB 내용 생성 - (Controller) Neutron – 네트워크 구성/관리
6.1 Neutron DB 생성
6.2 Neutron이라는 OpenStack 계정 생성 및 프로젝트 권한 부여
6.3 Neutron이라는 Service 생성
6.4 Endpoint 생성
6.5 Neutron 패키지 설치 - ovn-central / openvswitch-common / openvswitch-switch / neutron-server
6.6 OVN 설정 - OVN NB/SB를 수동으로 설정하고, ovs-db의 바인딩을 열어줌
6.7 ovn-northd 실행
6.8neutron.conf
파일 작성
6.9ml2.conf.ini
파일 작성 - 실제 OVN 관련 내용
6.10 CTRL 노드를 Gateway Chassis로 설정 (Provider 네트워크만 생성하는 경우는 의미 없음)
6.11 DB 내용 생성
6.12 neutron-server 시작 - (Compute) Neutron-compute
7.1 패키지 설치 - ovn-host / openvswitch-switch / neutron-ovn-metadata-agent
7.2 OVN 시작 및 설정 - Compute 노드의 OpenvSwitch가 Controller 노드를 바라보도록 설정
7.3 Geneve 통신을 할 VTEP 인터페이스 IP 설정
7.4 Provider 네트워크를 사용하기 위해br-ex
생성하고phynet1
에 브리지 매핑
7.4lan1
을br-ex
와 연동
7.5 ovn-controller, neutron-ovn-metadata-agent 시작
7.6 OVN-Controller가 OpenvSwitch와 통신할 수 있도록 OpenvSwitch의 로컬 포트를 열어놓음
7.7 OpenvSwitch 설정 - netplan 적용
7.8 ovn-controller 재기동
7.9ml2_conf.ini
수정
(Controller)
7.10 Compute 노드가 잘 추가 되었는지 확인 :ovn-sbctl show
(Compute)
7.11neutron_ovn_metadata_agent.ini
파일 수정
7.12 neutron-ovn-metadata-agent 재기동
(Controller / Compute)
7.13nova.conf
에 Neutron과 연동하기 위한 설정 내용 추가
(Controller)
7.14 DB 내용 생성
7.15 nova-api, nova-conductor, nova-scheduler 재기동
(Compute)
7.16 nova-compute 재기동 - (Controller) Cinder – 블록 스토리지 제공
8.1 Cinder DB 생성
8.2 Cinder라는 OpenStack 계정 생성 및 프로젝트 권한 부여
8.3 Cinder라는 Service 생성
8.4 Endpoint 생성
8.5 Cinder 패키지 설치 및cinder.conf
파일 작성
8.6 DB 내용 생성
8.7 apache2, cinder-scheduler 서비스 재시작
(Storage)_Cinder에서 VG를 가져다가 LVM 볼륨 기반의 iSCSI를 구성
여기서 구성하는 내용은 개발환경 수준에서 쓸 수 있는 Cinder 구성임
8.8 패키지 설치 - lvm2 / thin-provisioning-tools
8.9 디스크 초기화, PV 생성, VG 생성,lvm.conf
수정
8.10 Compute 노드에 Volume을 제공하기 위한 패키지 설치 - cinder-volume / tgt
8.11cinder.conf
수정
8.12 tgtd 관련 config 수정 -include /var/lib/cinder/volumes/*
넣어줌
8.13 tgt, cinder-volume 서비스 시작
(Controller)
8.14 Cinder-volume이 제대로 보이는지 확인 - (Controller) Horizon – 웹 대시보드 UI
- 접속 URL : [controller IP]/horizon
3. Network 구성
Neutron을 통해 VM이 사용할 네트워크를 생성한다.
- Provider network 생성
phynet1
스위치를 사용한Flat
타입 네트워크 생성 - 네트워크 대역대(subnet) 등록
- 보안 그룹 생성
tcp, icmp, udp 모두 허용
4. VM 생성
- Cinder 볼륨 연동형 VM 생성
- 디스크는 Storage 노드에 생성되고, Compute 노드에는 CPU와 MEM만 존재하는 형태의 VM이다.
- Glance에서 이미지를 받아와서 Storage 노드에 디스크를 만든다.
- 로컬 디스크 VM 생성
- VM이 생성되는 곳에 디스크를 만드는 방법이다.
- 이 방법은 서버가 죽어버리면 VM도 같이 죽는다는 단점이 있다.