CloudStack 설치하기

박도준·2021년 3월 23일
0


CloudStack을 설치해보겠습니다. 설치 과정은 공식 docs를 참고하였습니다.


설치 환경

Windows에서 Virtualbox 사용

Operating System : CentOS-7-x86_64-DVD-2009.iso
Hypervisor : KVM
Disk : 25GB
Processor : 3 processor cores
Memory : 2048MB
CPU op-mode(s) : 64-bit
Service : Apache Cloud Stack v4.15
Database : Mysql 5.6
Java : 11 jdk



Environment

Operating System

CentOS 7.7 x86_64 install ISO를 설치하여 사용한다. 설치는 여기CentOS-7-x86_64-DVD-2009.iso를 다운받아 진행하였다.

명령어를 사용하기 전에 root권한으로 실행한다.

su -

CentOS를 통해 vm을 생성까지 완료되면 터미널을 열어 업그레이드를 진행해준다.

yum -y upgrade


Configuring the network

이 환경에서는 DHCP 서버가 없다고 지정했기 때문에 네트워크 인터페이스를 수동으로 구성해야 한다.

yum install bridge-utils net-tools -y

Cloudstack이 네트워킹에 사용할 브리지를 만들기 위해 IP주소를 알아야한다. 이때 사용할 IP주소는 vm을 생성하면서 새로 할당된 주소이다.

ip addr

/etc/sysconfig/network-scripts/ 위치에 ifcfg-cloudbr0 파일을 생성하여 아래의 내용을 추가해준다.

vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0

DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
IPADDR= 자신의 IP
GATEWAY= 자신의 GATEWAY 주소 (보통 IP에서 마지막 1로)
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=8.8.4.4
STP=yes
USERCTL=no
NM_CONTROLLED=no

구성을 완료하고 인터페이스를 편집하여 이 브리지를 사용하도록 한다.

(이전에는 eth 이였지만 CentOS 7부터 ens로 바뀌었다. 직접 경로로 들어가서 확인해본다.)

vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"
BRIDGE=cloudbr0
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
UUID="7dbce381-f9c7-4e58-be1b-1560e1563dfc"
NM_CONTROLLED=no

구성 파일을 모두 설정했고, 네트워크를 시작하려면 몇 가지 명령을 실행해야 한다.

systemctl enable network

systemctl restart network

이때 제대로 restart되었는지 확인하기 위해 ping을 이용할 수 있다.

ping cloudstack.apache.org

만약 네트워크가 제대로 동작한다면 아래와 같이 출력될 것이다.


Hostname

CloudStack을 사용하려면 호스트 이름을 올바르게 설정해야 한다. 설치에서 기본 옵션을 사용한 경우 호스트 이름은 현재 localhost.localdomain으로 설정되어 있다. 이를 확인하기 위해 아래의 명령어를 실행하면 localhost가 출력될 것이다.

hostname --fqdn

이를 해결하기 위해 /etc/hosts 파일에서 아래와 같이 파일을 수정한다.
마지막줄의 IP주소는 위에서 사용한 클라우드 브릿지에 할당한 IP주소이다.

vi etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.10.2 srvr1.cloud.priv

파일을 수정한 후 네트워크를 다시 시작한다.

systemctl restart network

그리고 다시 호스트 이름을 확인해본다.

hostname --fqdn

srvr1.cloud.priv로 출력되는것을 확인할 수 있다.


SELinux

현재 CloudStack이 제대로 작동하려면 SELinux를 허용으로 설정해야 한다.

실행 중인 시스템에서 SELinux가 허용되도록 구성하려면 다음 명령을 실행한다.

setenforce 0

이 상태가 유지되도록 하려면 다음 예와 같이 허용 상태를 반영하도록 /etc/selinux/config 파일을 구성해야 합니다.

config 파일에서 아래와 같이 SELINUX를 수정한다.

SELINUX=permissive

NTP

NTP 구성은 클라우드 서버의 모든 클럭을 동기화하기 위해 필요하다. 그러나 NTP는 기본적으로 설치되지 않기 때문에 NTP를 따로 설치해야 한다.

yum -y install ntp

설치를 완료하고 다음과 같이 활성화하고 부팅 시 시작하도록 설정한다.

systemctl enable ntpd

systemctl start ntpd


Configuring the CloudStack Package Repository

CloudStack 패키지 저장소를 사용하도록 시스템을 구성해야 한다.

CloudStack 저장소를 추가하기 위해 /etc/yum.repos.d/cloudstack.repo를 생성하고 다음 정보을 삽입한다.

[cloudstack]
name=cloudstack
baseurl=http://download.cloudstack.org/centos/$releasever/4.15/
enabled=1
gpgcheck=0

NFS

Primary 및 Secondary 스토리지 모두에 NFS를 사용하기 때문에 NFS shares 2개를 설정한다.

먼저 nfs-utils를 설치한다.

yum -y install nfs-utils

NFS를 구성하여 서로 다른 두 shares를 서비스해야 한다. /etc/exports 파일에 아래의 내용을 추가한다.

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

CentOS 7.x 릴리스에서는 기본적으로 NFSv4를 사용힌다. NFSv4를 사용하려면 모든 클라이언트에서 도메인 설정이 일치해야 한다. 이 경우 도메인이 cloud.priv이므로 /etc/idmapd.conf의 도메인 설정이 Domain = cloud.priv와 같이 되어 있어야 한다.

vi /etc/idmapd.conf

Domain = cloud.priv 으로 수정한다.

/etc/sysconfig/nfs 파일에 아래의 내용을 주석 처리 및 추가해준다.

vi /etc/sysconfig/nfs

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

방화벽이 연결을 차단하지 않도록 방화벽을 비활성화해야 한다.

systemctl stop firewalld

systemctl disable firewalld

다음 명령을 실행하여 nfs 서비스를 부팅 시 시작하고 호스트에서 실제로 시작하도록 구성한다.

systemctl enable rpcbind

systemctl enable nfs

systemctl start rpcbind

systemctl start nfs



Management Server Installation

CloudStack 관리 서버 및 주변 툴을 설치한다.


Database Installation and Configuration

먼저 MySQL을 설치하고 CloudStack에서 실행되도록 몇 가지 옵션을 구성해야 한다.

CentOS 7은 더 이상 MySQL 바이너리 파일을 제공하지 않기 때문에 MySQL Server(및 나중에 Python MySQL connector)를 제공할 MySQL 커뮤니티 저장소를 추가해야 한다.

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum -y install mysql-server

이제 MySQL을 설치하면 /etc/my.cnf에 몇 가지 구성을 추가한다. 이때 [mysqld] 섹션에 추가해야 한다.

vi /etc/my.cnf

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

이제 MySQL이 올바르게 구성되었으므로 이를 시작하고 부팅 시 시작하도록 다음의 명령어를 실행한다.

systemctl enable mysqld

systemctl start mysqld


MySQL Connector Installation

이전에 추가한 MySQL 커뮤니티 저장소에서 Python MySQL 커넥터를 설치한다.

yum -y install mysql-connector-python

이전에 필요했던 mysql-connector-java 라이브러리는 이제 CloudStack Management 서버에 번들로 제공되므로 더 이상 별도로 설치할 필요가 없다.


Installation

관리 서버를 설치하기 위해 다음 명령을 실행하여 작업을 수행한다.

yum -y install cloudstack-management

CloudStack 4.15에는 Java 11 JRE가 필요하다. 관리 서버를 설치하면 Java 11이 자동으로 설치되지만 이전 Java 버전을 이미 설치한 경우 Java 11을 사용할지 명시적으로 확인하는 것이 좋다.

alternatives --config java

설치된 Java에 대해 여러 버전이 있다면 Java 11이 있는 번호를 입력하면 된다.

이제 애플리케이션 자체를 설치하면 데이터베이스를 설정할 수 있다. 다음 명령을 사용하여 작업을 수행한다. 이때 password는 자신이 사용할 비밀번호를 입력한다.

cloudstack-setup-databases cloud:password@localhost --deploy-as=root

이 프로세스가 완료되면 "CloudStack has successfully initialized the database."와 같은 메시지가 표시됩니다.

이제 데이터베이스가 생성되었으므로 다음 명령을 실행하여 management server를 설정하는 마지막 단계를 수행한다.

cloudstack-setup-management


System Template Setup

CloudStack은 여러 시스템 VM을 사용하여 가상 머신의 콘솔에 액세스하고, 다양한 네트워킹 서비스를 제공하며, 스토리지의 다양한 측면을 관리하기 위한 기능을 제공한다. 이 단계에서는 클라우드를 부트스트랩할 때 배포 준비가 된 시스템 이미지를 획득한다.

이제 시스템 VM 템플릿을 다운로드하여 방금 마운트한 공유에 배포해야 한다. management server에는 시스템 VM 이미지를 올바르게 조작하는 스크립트가 포함되어 있다.

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

여기까지 하면 management server 설정이 끝나게 된다. CloudStack을 구성해야 하지만 하이퍼바이저를 설정한 후에 구성한다.



KVM Setup and Installation

KVM은 사용할 하이퍼바이저이다. 하이퍼바이저 호스트에서 이미 수행된 초기 설정을 복구하고 에이전트 소프트웨어를 설치하는 데에도 동일한 단계를 사용하여 CloudStack 환경에 KVM 노드를 추가할 수 있다.

Prerequisites

Installation

KVM 에이전트 설치는 명령 한 번으로 간단한 작업이지만, 그 후에는 몇 가지를 구성해야 한다.

yum -y install epel-release

yum -y install cloudstack-agent


KVM Configuration

KVM에는 libirt 및 QEMU라는 두 가지 구성 요소가 있다.


QEMU Configuration

KVM 구성은 단일 항목에서만 비교적 간단하다. QEMU VNC 구성을 편집해야 한다.

/etc/libvirt/qemu.conf를 편집하고 아래의 내용을 기존에 있다면 주석을 해제하고 없다면 새롭게 추가해준다.

vi /etc/libvirt/qemu.conf

vnc_listen=0.0.0.0 <--주석 해제


### Libvirt Configuration

실시간 마이그레이션이 작동하려면 libvirt가 보안되지 않은 TCP 연결을 수신해야 한다. 또한 멀티캐스트 DNS advertising을 사용하기 위해 libvirts attempt를 끌 필요가 있다. 이러한 설정은 모두 /etc/libvirt/libvirtd.conf에서 수행한다.

/etc/libvirt/libvirtd.conf

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0

libvirtd.conf에서 "listen_tcp"를 설정하는 것만으로는 충분하지 않으므로 /etc/sysconfig/libvirtd에 LIBVIRTD_ARGS="--listen" 를 주석 해제한다.

vi /etc/sysconfig/libvirtd

#LIBVIRTD_ARGS="--listen" <-- 주석 해제

libvirt를 재시작한다.

systemctl restart libvirtd


KVM configuration complete

완전성을 위해 KVM이 시스템에서 정상적으로 실행되고 있는지 확인해야 한다.

lsmod | grep kvm

이것으로 KVM의 설치 및 구성을 마치겠습니다.



UI Access

CloudStack의 웹 인터페이스는 http://자신의 IP:8080/client 로 접속하면 된다. 기본 사용자 이름은 'admin'이고 기본 암호는 'password'이다.

성공!!!


profile
Better late than never

0개의 댓글