OpenStack이란

 

OpenStack은 가상화된 서버, 네트워크, 스토리지를 통합 관리하여 클라우드 인프라를 구축할 수 있도록 해주는 오픈 소스 플랫폼입니다. 주로 기업 내부의 프라이빗 클라우드 환경을 구축할 때 사용됩니다. 

 

 

다음과 같은 주요 컴포넌트들이 존재합니다.

컴포넌트 설명

 

Nova 가상 머신(VM) 생성 및 관리 (컴퓨팅 자원 담당)
Neutron 네트워크 연결 설정 및 관리 (IP, 라우팅 등)
Cinder 블록 스토리지 제공 (VM용 디스크)
Glance VM 이미지 저장 및 관리
Keystone 인증과 권한 관리 (사용자 로그인 등)
Horizon 대시보드(UI) 제공
Swift 객체 스토리지 제공 (대용량 데이터 저장에 적합)
Heat 인프라 자동화 템플릿 (IaC, Infrastructure as Code)
Ceilometer 모니터링 및 사용량 통계 수집

 

모듈식 구조이기에 필요한 기능만 선택하여 사용 가능합니다.

 

프로젝트 배경

클라우드 관련 공고들을 확인하는 과정에서 private cloud에 대해서도 알게되었고 그 과정에서 오픈스택이란 것을 알게 되었습니다. K8S 환경을 직접 구축했던 것처럼 Openstack 환경도 실제로 구축해보고 이해하고자 프로젝트를 진행하게 되었습니다. 

 

Node 설정

 

실습이 진행된 호스트 PC는 위와 같습니다.  2개의 Node를 생성해서 진행하였으며 각각 Compute, Controller입니다.

리눅스 이미지는 Ubuntu 22.04.5 live-server를 사용하였고, Controller 스펙은 4 core CPU, 4 GB RAM, 40 GB Storage

Compute 스펙은  4 core CPU, 2 GB RAM, 40 GB Storage으로 진행하였습니다. 

 

Nat Network 생성

 

 

Controller Node 네트워크 설정

 

 

어댑터 2는 브리지로 호스트 네트워크 사용합니다.

 

이후 다음과 같이 netplan을 수정하고 변경된 네트워크 설정을 적용합니다. 만약 enp0s8 네트워크에 IP가 할당된다면  /etc/netplan/50으로 시작하는 파일에서 dhcp4 할당을 false로 해주면 됩니다.

IP가 할당될 경우 호스트에서 직접 ssh 접근이 불가하고 할당된 IP로 접근해야 하기에 확인이 필요합니다.

cat << EOF > /etc/netplan/00-installer-config.yaml
network:
  ethernets:
    enp0s3:
      addresses: [10.0.0.11/24]
      routes:
        - to: default
          via: 10.0.0.1
      nameservers:
        addresses: [8.8.8.8]
    enp0s8:
      dhcp4: no
      dhcp6: no
  version: 2
EOF
  
sudo netplan apply

 

이후에 포트 포워딩을 해주고 ssh 접근을 합니다.

 

 

 

Controller Node 기본 설정

  • 계정 sudo 권한 비밀번호 입력 해제
visudo
dlwpdnr213 ALL=(ALL:ALL) NOPASSWD:ALL

  • ssh 설정

virtual box 내부에선 복사 붙여넣기가 안됐기 때문에 추가적인 작업은 ssh 설정 완료 후 Mobaxterm에서 ssh 연결한 후 작업을 진행합니다.

vi /etc/ssh/sshd_config
port 7890
PasswordAuthentication yes
systemctl restart ssh
  • 미러 사이트 설정

필요 패키지들을 고속으로 설치하기 위해 카이스트에서 제공하는 국내 미러 사이트로 설정합니다.

cd /etc/apt
cp sources.list sources.list.v1
sed -i 's/http:\\/\\/kr.archive.ubuntu.com/https:\\/\\/ftp.kaist.ac.kr/g' /etc/apt/sources.list
apt update
  • 필요 유틸리티 설치 패키지 업데이트
apt install -y lrzsz net-tools zip bzip2 make gcc perl
apt upgrade -y
reboot
  • 커널 버전 자동 업데이트 금지, 보안 업데이트 자동 수행
apt-mark hold $(uname -r)
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
  • timezone 설정

시간대를 서울로 변경합니다.

timedatectl set-timezone Asia/Seoul
timedatectl
  • nfs 설정

controller와 compute 노드 간 파일 공유를 위해 nfs를 통해 /nfs 디렉토리를 공유하도록 설정합니다. Controller가 nfs 서버 역할을 맡습니다.

apt install -y nfs-kernel-server nfs-common
mkdir -p /nfs/
chown nobody:nogroup /nfs

echo "/nfs    10.0.0.0/24(rw,all_squash,sync,no_subtree_check)" >> /etc/exports
exportfs -avr

showmount -e
  • /etc/hosts 수정
vi /etc/hosts

cp /etc/hosts /nfs/

 

Compute Node 생성

compute Node는 기존에 생성했었던 controller node를 복제하는 것에서 출발합니다.

 

 

 

  • host이름 변경
hostnamectl

sudo hostnamectl set-hostname compute
  • netplan 수정

netplan을 수정하여 compute 노드에 10.0.0.31 IP 주소를 할당하고, NAT 네트워크에 포트포워딩 규칙을 추가해줍니다.

 

 

 

  • nfs 설정

이후 compute 노드의 /nfs 디렉토리에 controller 노드의 /nfs 디렉토리를 마운트합니다

echo "10.0.0.11:/nfs	/nfs	nfs	noauto	0	0" >> /etc/fstab

mount /nfs
mount -l | grep nfs
  • 서로 간의 통신 확인

 

 

ping 또한 정상적으로 되는 것을 확인 가능합니다.

 

기본적인 노드 설정과 생성이 완료되었습니다. 오픈스택을 구축하기 위한 설정은 다음 포스팅에서 진행하겠습니다.