본문으로 바로가기

본 문서는 CloudStack의 주요기능을 살펴보기 위한 미리보기 성격의 Private 클라우드 구축방법에 관한 문서입니다. 실제 운영환경에서의 구축방법과는 차이가 있으며 관련 자료는 하단의 참고의 링크를 확인하십시오. Apache CloudStack 저장소에 배포된 2026년 02월 24일 기준 최신 모듈 4.22을 기준으로 설치합니다.


Apache CloudStack 개요

개요 (Overview)

  • IaaS(Infrastructure as a Service) 클라우드 컴퓨팅 오케스트레이션(Orchestration) 플랫폼.
  • 프라이빗, 퍼블릭 및 하이브리드 클라우드 환경에서 컴퓨팅, 스토리지, 네트워크 리소스를 풀링(Pooling)하고 자동화된 프로비저닝 제공.

주요 기능 (Key Features)

  • 멀티 하이퍼바이저 지원: KVM, VMware vSphere(ESXi), XenServer 등 이기종 하이퍼바이저를 단일 제어 평면(Control Plane)에서 통합 제어.
  • 네트워크 오케스트레이션: 가상 라우터(Virtual Router) 배포를 통한 방화벽, 로드밸런싱, 포트 포워딩, NAT 자동화 및 L2/L3 네트워크 격리.
  • API 및 셀프 서비스 포털: 프로그래밍 방식의 제어를 위한 RESTful API 및 네이티브 웹 UI 제공. AWS EC2 API 호환성 지원.
  • 고가용성(HA): Management Server 클러스터링, 하이퍼바이저 장애 감지 및 VM 자동 복구(Host HA) 스케줄링.

아키텍처 및 주요 특징 (Characteristics)

  • 계층적 리소스 모델: Region > Zone > Pod > Cluster > Host 계층 구조를 채택하여 대규모 인프라의 물리적/논리적 분할 및 확장성 확보.
  • 스토리지 티어링 분리: VM 루트/데이터 볼륨 구동을 위한 Primary Storage(블록 스토리지)와 템플릿, ISO, 스냅샷 보관용 Secondary Storage(NFS/오브젝트 스토리지)의 완전한 분리.
  • System VM 어플라이언스: 외부 스토리지 마운트(SSVM), VNC 콘솔 프록시(CPVM) 등 인프라 백그라운드 제어를 위한 특수 목적 가상 머신의 자동 배포 체계.

기반 기술 (Underlying Technologies)

  • Management Server (Core): Java 및 Spring Framework 기반으로 구현. 모듈화된 플러그인 아키텍처로 컴포넌트 간 결합도를 낮추고 확장성 제고.
  • 네트워크 가상화 (SDN): OVN(Open Virtual Network), Open vSwitch(OVS) 플랫폼 등과의 플러그인 연동을 통한 분산 라우팅 및 선도적인 네트워크 가상화 제어.
  • 비동기 메시징 (Message Broker): RabbitMQ를 활용한 분산 Management 노드 간 이벤트 브로드캐스팅 및 비동기 작업 큐잉(Queueing).
  • 메타데이터 영속성 (Database): MySQL 및 MariaDB를 사용하여 클라우드 리소스의 상태(State) 데이터 트랜잭션 처리 및 영속성(Persistence) 유지.

Physical Hardware 장치 준비

장치 필수 조건

VMWare Esxi 기반 VM 준비

  • CPU 정보에서 “게스트 운영 체제에 하드웨어 지원 가상화 표시” 체크
  • 새 CD/DVD 드라이브에서 “전원을 켤때 연결” 체크 및 운영체제 설치 ISO 이미지 연결
 
Oracle VirtualBox 기반 VM 준비
  • “중첩 VT-x/AMD-V 사용” 활성화
  • CPU코어 3개이상, RAM 6GB이상, 40GB이상의 디스크 공간 확보
  • 무선 네트워크도 사용가능하나 되도록이면 유선 네트워크
  • 반가상화 네트워크 활성화
  • 운영체제 설치 ISO 이미지 연결

Rocky Linux 9.5 설치

최소 설치


Apache CloudStack 설치

운영체제 준비

네트워크 브릿지 생성

작업시 네트워크가 끊어질 수 있으니 직접 서버 콘솔에서 작업해야 합니다.

# ip a

-- #nmcli connection add type bridge con-name cloudbr0 ifname cloudbr0
-- #nmcli connection modify eth0 master cloudbr0
-- #nmcli connection up eth0
-- #nmcli connection modify cloudbr0 ipv4.addresses '172.16.10.2/24' ipv4.gateway '172.16.10.1' ipv4.dns '8.8.8.8' ipv4.method manual && nmcli connection up cloudbr0
# nmcli connection add type bridge con-name cloudbr0 ifname cloudbr0
# nmcli connection modify ens33 master cloudbr0
# nmcli connection up ens33
# nmcli connection modify cloudbr0 ipv4.addresses '192.168.140.40/24' ipv4.gateway '192.168.140.254' ipv4.dns '8.8.8.8,8.8.4.4' ipv4.method manual && nmcli connection up cloudbr0

# ping [ipv4.gateway]

# reboot

// 필요 시 아래 명령 한번 더 실행(nmcli device 명령에서 ens33이 연결되지 않은 경우)
# nmcli connection up ens33

운영체제 패치 및 Sshd 설정

손쉬운 사용을 위하여 root로 접속이 가능하게 설정합니다.

# dnf -y upgrade
# dnf -y openssh-server
# dnf install net-tools -y

# vi /etc/ssh/sshd_config
Port 22
PermitRootLogin yes

# systemctl enable sshd
# systemctl restart sshd

SELinux 설정

selinux 설정을 permissive로 변경합니다.

# vi /etc/selinux/config
SELINUX=permissive
SELINUXTYPE=targeted
NTP 설치

시간 동기화 서비스를 설정합니다. 본 문서에서는 별도의 추가 설정이 필요하지 않습니다. 실 운영환경에서는 서버간 동기화 설정해야 합니다.

# dnf -y install chrony
# systemctl enable chronyd
# systemctl start chronyd

CloudStack Repo 설정

CloudStack을 다운로드할 dnf/yum 저장소를 추가합니다.

# vi /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://download.cloudstack.org/centos/$releasever/4.22/
enabled=1
gpgcheck=0

 

NFS 설정

NFS를 통하여 공유 스토리지를 생성합니다.

# dnf -y install nfs-utils

# vi /etc/exports
/export/secondary *(rw,async,no_root_squash,no_subtree_check)
/export/primary *(rw,async,no_root_squash,no_subtree_check)

# mkdir -p /export/primary
# mkdir /export/secondary

# vi /etc/idmapd.conf
Domain = local


# systemctl stop firewalld
# systemctl disable firewalld
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server

CloudStack Management 설치

MariaDB 설치 및 설정

CloudStack 문서에서는 MySQL을 설명하고 있으나 본 문서에서는 MariaDB를 사용하였습니다.

# dnf -y install mariadb-server

# vi /etc/my.cnf.d/mariadb-server.cnf
[mysqld] section: ADD
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log_bin=mysql-bin
binlog_format=ROW

# systemctl enable mariadb
# systemctl start mariadb
CloudStack Management 설치

관리 모듈을 설치합니다.

# dnf -y install cloudstack-management

JDK 17
# alternatives --config java

# cloudstack-setup-databases cloud:password@localhost --deploy-as=root
Mysql user name:cloud                                                           [ OK ]
Mysql user password:******                                                      [ OK ]
Mysql server ip:localhost                                                       [ OK ]
Mysql server port:3306                                                          [ OK ]
Mysql root user name:root                                                       [ OK ]
Mysql root user password:******                                                 [ OK ]
Checking Cloud database files ...                                               [ OK ]
Checking local machine hostname ...                                             [ OK ]
Checking SELinux setup ...                                                      [ OK ]
Detected local IP address as 127.0.0.1, will use as cluster management server node IP[ OK ]
Preparing /etc/cloudstack/management/db.properties                              [ OK ]
Applying /usr/share/cloudstack-management/setup/create-database.sql             [ OK ]
Applying /usr/share/cloudstack-management/setup/create-schema.sql               [ OK ]
Applying /usr/share/cloudstack-management/setup/create-database-premium.sql     [ OK ]
Applying /usr/share/cloudstack-management/setup/create-schema-premium.sql       [ OK ]
Applying /usr/share/cloudstack-management/setup/server-setup.sql                [ OK ]
Applying /usr/share/cloudstack-management/setup/templates.sql                   [ OK ]
Processing encryption ...                                                       [ OK ]
Finalizing setup ...                                                            [ OK ]

CloudStack has successfully initialized database, you can check your database configuration in /etc/cloudstack/management/db.properties


# cloudstack-setup-management
Starting to configure CloudStack Management Server:
Configure CloudStack Management Server ...[OK]
CloudStack Management Server setup is Done!
Please ensure ports 8080, 8250, 8443, and 9090 are opened and not firewalled for the management server and not in use by other processes on this host.

System Template Setup

시스템 템플릿을 다운로드하고 등록합니다.

# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloudstack.org/systemvm/4.22/systemvmtemplate-4.22.0-x86_64-kvm.qcow2.bz2 -h kvm -F

CloudStack Agent 설치

CloudStack Agent 설치

Agent(Compute) 모듈을 설치합니다.

# dnf -y install cloudstack-agent

# vi /etc/libvirt/qemu.conf
vnc_listen=0.0.0.0


# vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0


# vi /etc/libvirt/libvirtd
# vi /usr/lib/systemd/system/libvirtd.service 
# Environment=LIBVIRTD_ARGS="--timeout 120"
Environment=LIBVIRTD_ARGS="--listen --timeout 120"

# systemctl daemon-reload
# systemctl start libvirtd

-- # systemctl mask libvirtd.socket libvirtd-ro.socket libvirtd-admin.socket libvirtd-tls.socket libvirtd-tcp.socket
-- # systemctl restart libvirtd


# lsmod | grep kvm
kvm_intel              55496  0
kvm                   337772  1 kvm_intel
kvm_amd # if you are in AMD cpu

Apache CloudStack 설정

UI 접근

설치 계속

첫 페이지(대시보드) 접속 후 “Continue with installation >>” 클릭합니다.

암호 변경

암호를 변경합니다.

Zone 설정

기본값으로 설정합니다.

Zone 이름과 DNS, Hypervisor 정보를 입력합니다.

Network 설정 - Physical Network

특별한 추가 입력은 필요하지 않습니다. “다음”버튼을 클릭합니다.

Network 설정 - Public Traffic

공개 네트워크 정보를 입력합니다. VLAN/VNI는 별도로 입력하지 않아도 됩니다.

Network 설정 - Pod 설정

사설 네트워크 정보를 입력합니다.

Network 설정 - Guest Traffic

100-200을 입력합니다. 미리보기에서는 100-200이면 충분합니다.

Cluster 설정 - Cluster

클러스터 이름과 구조를 선택합니다.

Cluster 설정 - IP address

Agent 호스트 정보를 입력합니다.

Cluster 설정 - Primary Storage

메인 저장소 정보를 입력합니다.

Cluster 설정 - Secondary Storage

부가 저장소 정보를 입력합니다.

Launch

Launch Zone 버튼을 클릭하여 활성화합니다.

Register Template

사용하고자 하는 템플릿을 선택하고 Register Templeate 버튼을 클릭합니다.

Dashboard

모든 설정이 완료되면 대시보드가 아래와 같이 표시됩니다.


문제 및 해결책

네트워크 관련

VMWare Esxi에서 System VMs의 네트워크가 안되는 경우

ESXi 호스트 레벨 보안 설정 경로

  • CloudStack KVM VM이 구동 중인 실제 ESXi 호스트에 접속하고 로그인합니다.
  • 구성 탭 진입: 우측 메인 화면 상단의 구성(Configure) 탭을 선택합니다.
  • 가상 스위치 이동: 하위 카테고리인 네트워킹(Networking) -> **가상 스위치(Virtual switches)**를 클릭합니다.
  • 설정 편집: VM Network 포트 그룹이 포함된 가상 스위치(일반적으로 vSwitch0)를 선택하고 설정 편집(Edit) 버튼을 클릭합니다.
  • 보안 정책 적용: 팝업 창 좌측의 보안(Security) 메뉴를 누르고, 다음 3개 항목을 모두 **수락(Accept)**으로 변경 후 저장합니다.
    • 무차별 모드 (Promiscuous mode)
    • MAC 주소 변경 (MAC address changes)
    • 위조된 전송 (Forged transmits)

참고

https://docs.cloudstack.apache.org/en/4.22.0.0/quickinstallationguide/qig.html

728x90