오픈스택 클라우드 배포와 자동화
- 클러스터링의 기본 개념과 openstack 서비스의 역할
- openstack이 어떻게 고가용성을 제공하는지, 클라우드 컨트롤러를 구성하는 주요 서비스들의 기능과 중요성을 설명함
- openstack의 핵심 서비스 및 공통 인프라 서비스 이해
- 각 서비스(keystone, nova...)와 공통적으로 필요한 인프라(메시지 큐, DB..)의 역할과 구성요소를 설명함
- Openstack Ansible(OSA)를 이용한 실제 배포 단계
- OSA를 사용하여 openstack 환경을 설정하고 배포하는 구체적인 명령 및 설정 파일을 안내함
클러스터링의 기본 개념 및 openstack 서비스의 역할
- 클러스터링은 두개 이상의 서버 용량을 묶어서 시스템의 고가용성을 높이는 기술임
- 즉, 서비스가 중단되지 않고 지속적으로 제공되도록 하는 핵심 방법
- 수평확장
- 서버의 대수를 늘려 성능과 용량을 확장하는 방법
- 수직확장
- 기존 서버의 CPU, 메모리, 스토리지 등 하드웨어 자원을 업그레이드해서 처리 용량을 늘리는 방법
- 비대칭 클러스터링
- 주로 DB나 메시징 시스템에서 사용되며, 하나의 활성 서버가 요청을 처리하고 다른 서버는 대기 상태로 있다가 장애 발생 시 인계받는 방식
- 대칭 클러스터링
- 모든 노드가 동시에 활성 상태로 요청을 처리하며, 노드 중 하나에 장애가 발생하면 다른 활성 노드들이 해당 워크로드를 인계받아 처리함
클라우드 컨트롤러의 중요성
- 클라우드 컨트롤러는 openstack 환경의 수많은 핵심 서비스들을 호스팅하는 역할을 함
- OSA를 이용한 운영 환경 배포 시, 최소 3개의 컨트롤러 노드로 구성하는 것이 권장됨
- 이는 DB와 메시지 큐 같은 핵심 공유 서비스의 고가용성을 확보하는데 필수적임
Openstack의 핵심 서비스 및 공통 인프라 서비스 이해
- 클라우드 컨트롤러에 배포되는 주요 openstack 서비스와 공통 인프라 서비스는 아래와 같음

- 공통 인프라 서비스
- 메시지 큐: openstack 구성 요소 간의 비동기 통신을 위한 중앙 허브 역할을 함
- 고가용성을 위해 클러스터링이 필수적이며, 메시지 미러링 기능을 활성화하여 메시지 손실을 방지할 수 있음
- DB: openstack의 메타데이터를 저장하는 핵심 구성 요소
- mysql 클러스터링을 통해 고가용성과 데이터 무결성을 확보할 수 있으며, 최소 3개의 노드가 필요함
- Telemetry(모니터링 및 측정) 서비스를 위해 No-SQL DB가 사용됨
OSA를 이용한 실제 배포 단계
- OSA는 openstack을 배포하고 관리하기 위한 공식 Ansible 프로젝트
- 컨테이너 기반 배포를 통해 서비스 격리 및 생산 환경 모방이 가능함
배포 노드 준비

- OSA를 실행하는 워크스테이션으로, Ansible, Git, NTP, SSH 서버 등이 설치되야 함
- Openstack Ansible 저장소를 git clone하고, Ansible 부트스트랩 스크립트를 실행함
- 대상 호스트에 SSH 키 기반 인증을 설정함
컨트롤러 노드 준비
- 대상 호스트(실제 openstack 서비스를 실행할 노드)는 NTP 동기화, 최소 커널 버전 조건을 만족해야 함
- 필요에 따라 LVM 볼륨 그룹(lxc)를 설정할 수 있음
- 다중 NIC와 본딩 인터페이스를 사용한 브릿지 구성은 프로덕션 환경에서 권장 됨
OSA 설정 파일 구성
- OSA의 주요 설정 파일은 /etc/openstack_deploy 디렉토리에 위치하며, openstack_user_config.yml 파일이 사용자 정의 배포를 위해 사용됨
- openstack__user_config.yml.exmaple 파일을 복사하여 openstack_user_configm.yml을 만들음
네트워크 설정(cidr_networks)

- 컨테이너, 터널, 스토리지 네트워크를 위한 CIDR(Classless Inter-Domain Routing) 주소를 정의함
- 관리(br-mgmt), 스토리지(br-storage), 터널(br-vxlan, br-vlan) 브릿지 같은 다양한 네트워크 경로를 설정함
- used_ips 그룹을 사용하여 이미 사용 중인 IP 주소 범위를 제외할 수 있음
호스트 그룹 구성
- openstack_user_config.yml 파일에서 호스트 그룹을 정의하여 특정 서비스를 실행할 대상 호스트를 지정함
- 주요 호스트 그룹
- shared-infra_hosts: 데이터베이스, 메시지 큐 등 공유 인프라 서비스. (예: cc-01, cc-02, cc-03 지정)
- os-infra_hosts: OpenStack API 서비스 (Keystone, Nova API 등). (예: cc-01, cc-02, cc-03 지정)
- compute_hosts: 컴퓨트 서비스 (Nova Compute).
- network_hosts: 네트워크 서비스 (Neutron 에이전트).
- storage-infra_hosts: Cinder API 서비스. (예: cc-01, cc-02, cc-03 지정)
- storage_hosts: Cinder 볼륨 서비스.
- log_hosts: 로깅 서비스.
- haproxy_hosts: HAProxy 서비스. (예: cc-01, cc-02, cc-03 지정)
HAProxy 및 Keepalived 설정
- HAProxy는 컨트롤러 노드에 설치되어 API 로드 밸런싱을 수행할 수 있음 (프로덕션 환경에서는 하드웨어 로드 밸런서 사용이 권장됨)
- Keepalived는 HAProxy 인스턴스 간에 가상 IP(VIP)를 공유하도록 구상하여 로드 밸랜서 자체의 고가용성을 제공함
- HAProxy 플레이북은 Galera, RabbitMQ, Glance, Keystone, Neutron, Nova, Cinder, Horizon 등 다양한 OpenStack 서비스에 대한 로드 밸런싱을 기본적으로 처리함
- 플레이북은 IT 인프라 자동화를 위해 작성하는 작업 목록(작업 순서도)을 담은 파일로, 보통 YAML 형식으로 작성
- haproxy_config.yml 파일이나 user_variables.yml 파일을 통해 설정을 사용자 정의할 수 있음
- Keepalived 우선순위(haproxy_keepalived_priority_master, haproxy_keepalived_priority_backup) 및 내부/외부 인터페이스(haproxy_keepalived_internal_interface, haproxy_keepalived_external_interface)를 설정함
Ansible 플레이북 실행
- OSA는 openstack 배포를 위한 일련의 플레이북을 제공함
- 주요 플레이북:
- setup-hosts.yml: 컨테이너 설치 및 기본 호스트 구성을 담당함
- setup-infra.yml: Galera, MariaDB, memcached, RabbitMQ와 같은 인프라 서비스를 설치함
- setup-openstack.yml: 이미지, 네트워크, 아이덴티티, 대시보드, 컴퓨트 API, 텔레메트리, 오케스트레이션 등 OpenStack API 서비스를 설치함
- haproxy-install.yml: HAProxy와 Keepalived를 설치하고 구성함
- 각 OpenStack 서비스별 개별 설치 플레이북 (os-keystone-install.yml, os-glance-install.yml 등)도 제공됨
- openstack-ansible <플레이북_이름>.yml 명령어를 사용해 실행함
- --limit <호스트_그룹> 옵션을 사용해 특정 호스트 그룹에만 배포를 제한할 수 있음
오픈스택 구성 사용자 정의:
- 각 openstack 플레이북 역할의 defaults/main.yml 파일을 통해 제어 영역 구성을 사용자 정의할 수 있음
- ex) Horizon 대시보드에서 Neutron LBaaS 기능을 활성화 할 수 있음
- /etc/openstack_deploy/user_variables.yml 파일은 기본값을 재정의하고 사용자 정의 변수를 설정하는데 사용됨
- 이는 높은 우선순위로 적용됨
- 민간함 정보(pw..)는 /etc/openstack_deploy/user_secrets.yml에 저장되며, Ansible Vault와 같은 암호화 메커니즘을 사용해 보안을 강화해야함
'클라우드 > OpenStack' 카테고리의 다른 글
| Keystone (0) | 2025.08.19 |
|---|---|
| 오픈스택 아키텍처 (0) | 2025.07.30 |
| Nova 설치 & Keystone 연동 (0) | 2025.07.28 |
| Neutron 네트워크(2) - 아키텍처, 구현 (0) | 2025.07.22 |
| Neutron 네트워크 (1) (0) | 2025.07.22 |