비용 효율적인 프라이빗 클라우드 구축하기 - OpenStack으로 자체 데이터센터 만들기
비용 효율적인 프라이빗 클라우드 구축하기 - OpenStack으로 로컬 데이터센터 만들기
최근 클라우드 기술의 발전으로 AWS, Azure, GCP와 같은 퍼블릭 클라우드 서비스의 사용이 일반화되었습니다. 하지만 기업 규모가 커질수록 클라우드 비용 증가, 데이터 주권 문제, 그리고 특정 서비스에 종속되는 벤더 락인(Vendor Lock-in) 등 여러 문제에 직면하게 됩니다.
이러한 문제를 해결하기 위한 대안으로 OpenStack을 활용한 프라이빗 클라우드가 있습니다. 이 글에서는 워크스테이션급 물리 서버 2대로 구축하는 OpenStack 기반 프라이빗 클라우드 인프라 설계와 구현 방법에 대해 알아보겠습니다.
왜 OpenStack을 선택해야 할까?
OpenStack은 오픈소스 클라우드 컴퓨팅 플랫폼으로, 다음과 같은 장점이 있습니다:
- 비용 효율성: 퍼블릭 클라우드보다 장기적으로 비용 절감 가능
- 데이터 프라이버시: 민감한 데이터를 자체 인프라에서 관리
- 리소스 활용 최적화: 물리적 하드웨어 자원의 효율적인 활용
- 확장성: 필요에 따라 컴퓨팅 노드 추가 가능
- 하드웨어 독립성: 다양한 하드웨어에서 구동 가능
실제 비용 비교 분석
퍼블릭 클라우드와 프라이빗 클라우드의 비용을 비교해보면:
퍼블릭 클라우드 (AWS 기준)
- m6i.xlarge 인스턴스 (4 vCPU, 16GB RAM)
- 월간 비용: 약 $300
- 2년 사용 시: $7,200
프라이빗 클라우드 (우리 구성)
- 초기 하드웨어 투자: 약 $5,000
- 전기료 (월간): 약 $100
- 2년 총 비용: 약 $7,400
장기적으로는 프라이빗 클라우드가 더 경제적이며, 추가 노드 확장 시 비용 효율성이 더욱 높아집니다.
시스템 구성 계획
우리의 목표는 비용 효율적이면서도 확장 가능한 프라이빗 클라우드 환경을 구축하는 것입니다. 다음은 두 대의 워크스테이션 서버로 OpenStack 환경을 구축하는 계획입니다.
하드웨어 스펙
서버 1 (기존 서버):
- CPU: Intel Xeon E5-2680 (14코어 28스레드)
- RAM: 64GB DDR3 ECC
- 스토리지:
- NVMe SSD 1TB (시스템)
- SATA SSD 2TB (VM 스토리지)
- HDD 4TB (백업)
서버 2 (신규 서버):
- CPU: Intel Xeon E5-2696 v3 x 2 (18코어 36스레드 x 2, 총 36코어 72스레드)
- RAM: 128GB DDR3 ECC
- 스토리지:
- NVMe SSD 2TB (시스템)
- SATA SSD 4TB (VM 스토리지)
- HDD 8TB x 4 (NFS 스토리지)
네트워크 구성
- 관리 네트워크: 1Gbps (기존 공유기)
- 스토리지 네트워크: 10Gbps (추가 네트워크 카드) 나중에 설치 예정
- VLAN 구성:
- VLAN 10: 관리 네트워크
- VLAN 20: VM 네트워크
- VLAN 30: 스토리지 네트워크
구축 단계
- 1단계: 신규 서버에 OpenStack 컨트롤러 + 컴퓨트 노드를 단일 설치 (All-in-One)
- 2단계: 기존 서버의 컨테이너를 신규 서버로 마이그레이션
- 3단계: 기존 서버 포맷 후 OpenStack 컴퓨트 노드로 구성 (클러스터에 추가)
- 4단계: NFS 서버 구성 및 영구 스토리지 설정
OpenStack 아키텍처 설계
우리가 구축할 OpenStack 환경은 다음과 같은 아키텍처로 설계됩니다
1+----------------------------------+
2| 네트워크 장비 |
3| (기존 공유기, 1Gbps 대역폭) |
4+----------------+----------------+
5 |
6 +------------+------------+
7 | |
8+---v--------------------+ +-v------------------------+
9| 서버 1 (컴퓨트 노드) | | 서버 2 (컨트롤러+컴퓨트 노드) |
10| - Nova Compute | | - Keystone (인증) |
11| - Neutron Agent | | - Nova (컴퓨팅) |
12| - Ceph OSD | | - Neutron (네트워킹) |
13| | | - Cinder (블록 스토리지) |
14| Xeon E5-2680 | | - Glance (이미지) |
15| 14코어 28스레드 | | - Horizon (대시보드) |
16| 64GB RAM | | - Ceph Monitor |
17| | | |
18| | | Xeon E5-2696 v3 x 2 |
19| | | 36코어 72스레드 |
20| | | 128GB RAM |
21+-----------------------+ +--------------------------+
장애 대비 전략
프라이빗 클라우드에서 가장 중요한 부분 중 하나는 장애 발생 시 데이터 손실을 최소화하고 빠르게 복구하는 것입니다. 우리의 시스템은 다음과 같은 방식으로 장애에 대비합니다
- NFS 기반 스토리지 분리: VM 인스턴스별로 물리 디스크를 할당하여 NFS로 제공
- 디스크 이동성: 서버 장애 시 하드디스크를 다른 서버로 물리적 이동 가능
- 빠른 복구: 디스크 이동만으로도 하루 내 서비스 복구 가능
- 자동 백업: 매일 밤 2시에 전체 VM 스냅샷 백업
- 모니터링: Prometheus + Grafana를 통한 실시간 시스템 모니터링
확장성 및 네트워크 고려사항
현재 계획은 초기 설정에 적합하나, 사용자가 증가함에 따라 다음 사항을 고려해야 합니다
- 대역폭: 현재 1Gbps 대역폭은 초기에는 충분하나, 트래픽 증가 시 업그레이드 필요
- 컴퓨팅 노드 추가: 부하 증가 시 추가 컴퓨트 노드 확장
- 네트워크 분리: 관리 네트워크와 데이터 네트워크 분리 고려
- 로드 밸런싱: HAProxy를 통한 서비스 로드 밸런싱 구성
- 스토리지 확장: Ceph 클러스터 추가를 통한 스토리지 확장
구현 로드맵
1. OpenStack 설치 및 구성
첫 번째 단계는 신규 서버에 OpenStack을 설치하는 것입니다. 우리는 Ubuntu 20.04 LTS를 기반으로 설치할 계획입니다.
1# Ubuntu 업데이트
2sudo apt update && sudo apt upgrade -y
3
4# OpenStack 저장소 추가
5sudo add-apt-repository cloud-archive:xena
6
7# OpenStack 패키지 설치
8sudo apt install nova-compute neutron-common openstack-dashboard
9
10# Ceph 설치
11sudo apt install ceph-mon ceph-osd
2. 가상화 환경 구성
OpenStack은 KVM(Kernel-based Virtual Machine)을 기본 하이퍼바이저로 사용합니다.
1# KVM 지원 확인
2egrep -c '(vmx|svm)' /proc/cpuinfo
3
4# KVM 및 관련 패키지 설치
5sudo apt install qemu-kvm libvirt-daemon-system
6
7# 성능 최적화
8echo "options kvm ignore_msrs=1" | sudo tee /etc/modprobe.d/kvm.conf
3. 네트워크 구성
OpenStack의 네트워크 구성은 Neutron을 통해 이루어집니다. 내부 네트워크와 외부 네트워크를 적절히 구성해야 합니다.
1# OVS(Open vSwitch) 설치
2sudo apt install openvswitch-switch
3
4# VLAN 구성
5sudo ovs-vsctl add-br br-vlan
6sudo ovs-vsctl add-port br-vlan eth0 tag=10
4. 스토리지 구성
NFS 기반의 스토리지 시스템을 구축하여 VM 인스턴스에 영구 스토리지를 제공합니다.
1# NFS 서버 설치
2sudo apt install nfs-kernel-server
3
4# 공유 디렉토리 생성
5sudo mkdir -p /srv/nfs/vm-storage
6sudo chown nobody:nogroup /srv/nfs/vm-storage
7
8# NFS 설정
9echo "/srv/nfs/vm-storage *(rw,sync,no_subtree_check)" | sudo tee /etc/exports
10sudo exportfs -a
모니터링 및 관리
시스템의 안정적인 운영을 위해 다음과 같은 모니터링 도구를 구성합니다:
- Prometheus: 시스템 메트릭 수집
- Grafana: 대시보드 시각화
- Alertmanager: 알림 관리
- ELK Stack: 로그 분석
다음 단계
이 블로그에서는 OpenStack을 활용한 프라이빗 클라우드 구축의 기본 개념과 계획을 다루었습니다. 다음 포스트에서는 다음 주제들을 다룰 예정입니다:
- OpenStack 설치 및 초기 구성 상세 가이드
- 컴퓨트 노드 추가 및 클러스터링
- NFS 스토리지 구성 및 연결
- Ansible 및 Terraform을 활용한 인프라 자동화
- 모니터링 시스템 구축 및 운영
- 백업 및 복구 전략 구현
OpenStack을 활용한 프라이빗 클라우드는 비용 효율성과 데이터 주권 확보라는 두 가지 큰 이점을 제공합니다. 두 대의 고성능 워크스테이션만으로도 수만 명의 동시 접속을 처리할 수 있는 확장 가능한 인프라를 구축할 수 있습니다.
이정도면 그래도 몇만정도 동접자수는 거뜬하지 않을까요? 할게 많네요... 일단 알리에서 주문한 워크스테이션이 빨리도착해야할 것 같습니다.