OpenStack
- 정의: 가상 서버(VM), 네트워크, 스토리지 등 인프라 자원을 클라우드처럼 사용할 수 있게 해주는 오픈 소스 플랫폼
- 핵심 목적: AWS, Azure와 같은 클라우드를 직접 구축할 수 있도록 지원
Openstack의 목적
| 기능 | 설명 | 컴포넌트 |
|---|
| VM 생성/관리 | 리눅스/윈도우 가상 머신을 만들고 부팅 | Nova |
| 네트워크 설정 | Neutron으로 가상 네트워크, 라우터, IP 구성 | Neutron |
| 이미지 관리 | OS 이미지 등록 및 해제 | Glance |
| 디스크 저장소 | VM에 붙일 디스크 생성 | Cinder |
| 인증/권한 관리 | 사용자, 프로젝트 권한 제어 | Keystone |
| 웹 대시보드 | 위 기능들을 웹에서 실행 가능 | Horizon |
OpenStack 아키텍처 핵심 컴포넌트 (AWS와 비교 이해)
| 컴포넌트 | 기능 | AWS 대응 |
|---|
| Nova | VM(인스턴스) 생성/삭제 | EC2 |
| Neutron | 네트워크 생성, IP 할당, 라우팅 | VPC |
| Glance | OS 이미지 등록/관리 | AMI |
| Cinder | 블록 스토리지 (디스크) | EBS |
| Keystone | 인증, 사용자/프로젝트 권한 | IAM |
| Horizon | 웹 UI (Dashboard) | Management Console |
| Swift | 오브젝트 스토리지 (파일 저장) | S3 |
| Heat | 인프라 자동 배포 (IaC) | CloudFormation |
기본 개념 용어 정리
| 용어 | 설명 |
|---|
| Project (Tenant) | 자원 격리 단위 (팀, 부서, 서비스별 구분) |
| User | OpenStack 사용자 계정 |
| Role | 권한 수준 (ex: admin, member 등) |
| Instance | 실제 생성된 가상 머신 |
| Flavor | VM 사양 (vCPU, RAM, Disk) 프로파일 |
| Image | OS 이미지 (QCOW2, RAW, ISO 등) |
| Volume | 독립적인 디스크, 데이터 저장용 |
| Floating IP | 외부에서 VM에 접속할 수 있게 하는 공인 IP |
| Security Group | VM 방화벽 (포트 열기/차단) 설정 |
| Key Pair | SSH 접근용 공개키/개인키 쌍 |
Openstack 설치 방식
| 설치 방법 | 특징 |
|---|
| DevStack | 테스트 목적에 적합, 빠르고 간단 |
| Kolla-Ansible | 운영환경 수준의 설치, Docker + Ansible |
| Packstack | RHEL/CentOS 기반, 현재는 구버전 (비권장) |
| MicroStack | Canonical 제공, 단일 노드 간단 설치 |
OpenStack 기본 명령어
source /etc/kolla/admin-openrc.sh
openstack image list
openstack network list
openstack server list
openstack server create \
--image ubuntu \
--flavor m1.small \
--network internal-net \
--key-name mykey \
--security-group default \
test-vm