클라우드/OpenStack

오픈스택 클러스터링 & 인프라 서비스와 배포

mini'scloud 2025. 7. 30. 15:02

오픈스택 클라우드 배포와 자동화

  • 클러스터링의 기본 개념과 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