Openstack

OpenStack Trove란? (Database as a Service - DBaaS)

Somaz 2025. 5. 15. 12:35
728x90
반응형

Overview

오늘은 OpenStack Trove에 대해 알아보겠다. Trove는 OpenStack 환경에서 MySQL, PostgreSQL, MongoDB 등 다양한 데이터베이스를 서비스 형태(DBaaS)로 제공하는 컴포넌트이다. 사용자는 직접 데이터베이스를 설치·설정할 필요 없이, OpenStack CLI 또는 API로 필요한 DB 인스턴스를 바로 생성하고 관리할 수 있다.

 

출처 : https://wiki.openstack.org/wiki/Zun

 

 

 

 

📅 관련 글

2022.05.11 - [Openstack] - Openstack이란?

2022.07.29 - [Openstack] - Openstack Nova란?

2022.08.08 - [Openstack] - Openstack Neutron이란? (network)

2022.08.08 - [Openstack] - Openstack 배치 서비스 Placement란?

2022.08.08 - [Openstack] - Openstack Glance란? (image)

2022.08.08 - [Openstack] - Openstack Keystone이란? (identity)

2022.08.08 - [Openstack] - Openstack horizon이란? (dashboard)

2022.08.09 - [Openstack] - Openstack Cinder/Swift란? (block storage/object storage)

2025.02.27 - [Openstack] - OpenStack Heat란? (Orchestration)

2025.02.27 - [Openstack] - OpenStack Ceilometer란? (Telemetry & Monitoring)

2025.02.28 - [Openstack] - OpenStack Mistral이란? (Workflow Service)

2025.02.28 - [Openstack] - OpenStack Magnum이란? (Container Orchestration)

2025.02.28 - [Openstack] - OpenStack Kuryr이란? (Container Networking)

2025.02.28 - [Openstack] - OpenStack Zun이란? (Container as a Service - CaaS)

2025.02.27 - [Openstack] - OpenStack Octavia란? (Load Balancer as a Service - LBaaS)

2025.02.27 - [Openstack] - OpenStack Barbican란? (Key Management Service - KMS)

2025.02.28 - [Openstack] - OpenStack Manila란? (Shared File System as a Service - SFaaS)

 

 

 


 

 

 

 

 

Trove란?

  • Trove는 OpenStack이 제공하는 공식 Database as a Service (DBaaS) 서비스다.
  • AWS RDS처럼, OpenStack 환경에서도 클릭 몇 번(또는 명령어 몇 줄)로 데이터베이스를 프로비저닝하고 관리할 수 있게 도와준다.
  • 기존에는 OpenStack에서 VM을 직접 생성하고, 그 위에 수작업으로 DB를 설치하는 방식이었지만, Trove를 쓰면 자동화된 프로비저닝 + 모니터링 + 백업/복구까지 가능한 완전한 DBaaS 환경을 구성할 수 있다.

 

 

 

 


 

 

 

 

Trove의 주요 특징

 

1️⃣ 다양한 DB 엔진 지원

  • 관계형 데이터베이스(RDB): MySQL, PostgreSQL, MariaDB, Percona 등
  • NoSQL 데이터베이스: MongoDB, Cassandra, Couchbase 등
  • 지원되는 DB 종류는 플러그인으로 확장 가능

 

2️⃣ OpenStack 리소스와 완전 연동

  • DB 인스턴스는 Nova VM으로 생성
  • 데이터 볼륨은 Cinder 볼륨으로 마운트
  • 네트워크는 Neutron 연동 (Security Group, Floating IP 등)

 

3️⃣ 자동화된 관리 기능

  • 백업/복구 지원 (Swift 연동)
  • 모니터링 지원 (Telemery 연동 가능)
  • DB 클러스터 지원 (Master/Slave 구성 등)

 

4️⃣ CLI/REST API 제공

  • `openstack database instance` 명령으로 관리 가능
  • OpenStack 외부에서도 API로 DB 관리 가능 (Self-Service 포탈 연동 가능)

 

 

 


 

 

 

 

Trove 아키텍처 구성

구성 요소 설명
Trove API 사용자 요청 수신 및 상태 조회 제공
Trove Task Manager 실제 DB 인스턴스 생성, 백업, 복구 작업 처리
Trove Conductor DB 인스턴스 상태 관리 및 원격 명령 전송
Trove Guest Agent DB 인스턴스 내부에서 동작, 설정 및 상태 보고
Nova DB 인스턴스 VM 생성 및 관리
Cinder 데이터 볼륨 제공
Neutron 네트워크 연결 및 보안 설정
Swift 백업 데이터 저장소 역할

 

 

 

 


 

 

 

 

 

Trove 설정 및 사용 예시

 

1️⃣ 데이터베이스 인스턴스 생성

openstack database instance create \\
  --flavor m1.medium \\
  --size 10 \\
  --datastore mysql \\
  --datastore-version 8.0 \\
  --nic net-id=<네트워크ID> \\
  my-db-instance

 

2️⃣ 인스턴스 상태 조회

openstack database instance show my-db-instance

 

3️⃣ 백업 생성

openstack database backup create \\
  --instance my-db-instance \\
  --name my-db-backup

 

4️⃣ 백업에서 새 인스턴스 복구

openstack database instance create \\
  --flavor m1.medium \\
  --size 10 \\
  --datastore mysql \\
  --datastore-version 8.0 \\
  --restore-backup my-db-backup \\
  restored-db-instance

 

 

 

 


 

 

 

 Trove의 활용 사례

사례 설명
개발팀 DB 제공 개발팀마다 독립된 DB 인스턴스 Self-Service 제공
자동 백업/복구 구성 주기적인 백업 자동화 및 원클릭 복구 기능 제공
DB 클러스터 구성 Master/Replica 구성으로 고가용성 환경 구축
테스트 환경 자동화 CI/CD 파이프라인에서 테스트용 DB 즉시 생성 및 폐기

 

 

Trove vs 직접 DB 설치 비교

항목 Trove (DBaaS) 직접 설치 (수작업)
프로비저닝 자동화 (CLI/API) 수작업
백업/복구 CLI로 즉시 가능 스크립트 직접 구성
모니터링 Telemetry 연동 별도 구성 필요
DB 클러스터 자동 구성 지원 수작업 구성
네트워크 보안 Neutron Security Group 자동 연동 직접 설정
유지보수 OpenStack 업데이트와 함께 관리 개별 관리 필요

 

 

 

Trove 실전 운영 팁

주제
이미지 관리 DB별로 최적화된 Guest Image 준비 (MySQL, PostgreSQL 등)
네트워크 구성 DB 전용 Security Group 구성 (DB 포트만 허용)
백업 전략 Swift에 주기적 백업 저장 + 백업 보존 기간 설정
성능 모니터링 Guest Agent에 Prometheus Exporter 추가 가능
장애 대응 Guest Agent 비정상 시 강제 재시작 (DB는 VM 내부에서 유지됨)

 

 

Trove 한계 및 주의점

항목 내용
최신 DB 버전 지원 지연 OpenStack 릴리즈 주기에 따라 지원 버전 업데이트 느림
고급 DB 설정 부족 특정 DB 특화 설정은 Trove에서 지원 안 될 수도 있음
성능 튜닝 한계 Guest Image 내부 설정 제한 (사용자 직접 조정 필요)
다중 AZ 구성 어려움 네이티브 지원 부족 (Guest Image 커스터마이징 필요)

 

 

Trove vs AWS RDS vs Azure Database 비교

비교 항목 Trove (OpenStack) AWS RDS Azure Database
지원 DB MySQL, PostgreSQL, MongoDB 등 Aurora, MySQL, PostgreSQL 등 MySQL, PostgreSQL 등
백업/복구 지원 지원 지원
모니터링 Telemetry 연동 CloudWatch Azure Monitor
자동 업데이트 수동 (업데이트 직접 수행) 자동 지원 자동 지원
멀티 AZ 제한적 지원 기본 제공 기본 제공

 

 

 

 


 

 

 

 

Trove 장애 대응 방법 (Troubleshooting)

 

 

 

1️⃣ DB 인스턴스 생성 실패 시

 

로그 확인 포인트

위치  확인 방법
Trove API 로그 `kubectl logs -n openstack deployment/trove-api`
Trove Task Manager 로그 `kubectl logs -n openstack deployment/trove-taskmanager`
Trove Guest Agent 로그 인스턴스 내부 `/var/log/trove/guest.log`

 

 

 

자주 발생하는 원인 & 해결책

원인 설명 해결책
Guest Image 문제 DB 패키지 설치 실패 등 Guest Image 확인 & 재빌드
네트워크 문제 Neutron 네트워크 연결 실패 네트워크 설정 확인
볼륨 문제 Cinder 볼륨 마운트 실패 Cinder 상태 점검 & 볼륨 강제 삭제 후 재시도
Security Group DB 포트 차단 Security Group 설정 확인

 

 

 

 

2️⃣ Guest Agent 응답 없음

DB 인스턴스는 살아있는데, Trove가 상태를 못 가져오는 경우

 

원인 분석

  • Guest Agent 프로세스 비정상 종료
  • Guest Agent 설정 문제
  • DB 자체 장애로 인해 Guest Agent 정상작동 불가

 

해결 방법

  • 인스턴스 내부 접속 후 Guest Agent 상태 확인
systemctl status trove-guestagent
journalctl -u trove-guestagent
  • 필요 시 Guest Agent 재시작
sudo systemctl restart trove-guestagent
  • DB 장애로 인한 문제라면 DB 복구 후 Guest Agent 재시작

 

 

3️⃣ 백업 실패

 

원인 분석

  • Swift 인증 문제
  • Swift 버킷 권한 문제
  • 네트워크 차단 문제

 

확인 방법

  • Trove Task Manager 로그 확인
  • Swift 연동 테스트
openstack object store list

 

해결 방법

  • Trove 설정에서 Swift 인증 정보 확인 (`/etc/trove/trove.conf`)
  • Swift 버킷 권한 점검
  • 네트워크에서 Swift로 가는 통신 경로 확인 (Proxy, Firewall 등)

 

 

 

4️⃣ 복구 실패

 

원인 분석

  • 백업 파일 손상
  • Guest Agent 복구 처리 오류
  • 볼륨 연결 실패

 

해결 방법

  • Swift에서 백업 파일 다운로드 테스트
openstack object store download <container> <backup_file>
  • DB 엔진별 복구 로그 확인 (MySQL, PostgreSQL 등)
  • Trove Task Manager 로그 확인
  • Guest Image 버전과 현재 Trove 버전 호환성 점검

 

 

 

 


 

 

 

 

Trove Guest Image 커스터마이징 가이드

 

왜 Guest Image 커스터마이징이 필요할까?

  • 최신 DB 버전 적용
  • 특정 보안 패치 반영
  • 한국어 로케일, 타임존 설정
  • 성능 튜닝 파라미터 기본값 변경
  • 회사 표준 구성 반영 (모니터링 에이전트 설치 등)

 

 

Guest Image 커스터마이징 절차

 

1️⃣ 기본 베이스 이미지 준비

  • Ubuntu, CentOS 등 원하는 OS 기반
  • OpenStack 클라우드 이미지를 활용하는 게 편함 (cloud-init 지원 필요)

 

2️⃣ 필요한 패키지 설치

  • DB 엔진 (MySQL, PostgreSQL 등)
  • Trove Guest Agent
apt-get install trove-guestagent  # Ubuntu
yum install openstack-trove-guestagent  # CentOS

 

 

3️⃣ Guest Agent 설정 커스터마이징

  • `/etc/trove/trove-guestagent.conf` 수정
설정 항목 설명  예시
datastore_manager DB 유형 지정 mysql
guest_log_dir 로그 디렉터리 지정 /var/log/trove
nova_proxy_admin_user OpenStack admin 계정 admin
nova_proxy_admin_password OpenStack admin 비번 (보안 설정 필요)

 

 

4️⃣ DB 초기 설정 스크립트 추가

  • MySQL 예시
echo "[mysqld]" > /etc/mysql/conf.d/trove.cnf
echo "bind-address = 0.0.0.0" >> /etc/mysql/conf.d/trove.cnf
echo "max_connections = 500" >> /etc/mysql/conf.d/trove.cnf

 

 

 

5️⃣ 모니터링 에이전트 추가 (선택)

  • Prometheus Node Exporter, Telegraf 등 설치
  • 인스턴스 상태를 외부 모니터링 시스템으로 전달

 

 

6️⃣ 이미지 저장 및 등록

openstack image create "MySQL Guest Image" \\
  --file /path/to/image.qcow2 \\
  --disk-format qcow2 \\
  --container-format bare \\
  --public

 

 

 

7️⃣ Trove 데이터스토어에 등록

openstack datastore version create \\
  mysql 8.0 "MySQL Guest Image" \\
  --image-id <이미지ID> \\
  --active

 

 

 


 

 

 

 

 

추가 커스터마이징 예시

항목 설명
로깅 커스터마이징 JSON 포맷 로그 출력, Loki 연동 등
백업 정책 강화 mysqldump 대신 Percona XtraBackup 기본화
보안 강화 root 계정 패스워드 정책 강화, 불필요 포트 차단
장애 자동 복구 Guest Agent에서 DB 장애 감지 후 서비스 재시작 로직 추가
한글 로케일 설정 /etc/default/locale 및 DB Collation 설정 추가

 

 

 

 

자동화 팁 (Packer 활용 예시)

 

Packer 템플릿 예시:

{
  "builders": [{
    "type": "qemu",
    "iso_url": "<http://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso>",
    "output_directory": "output-qemu",
    "disk_size": 10000
  }],
  "provisioners": [{
    "type": "shell",
    "inline": [
      "apt-get update",
      "apt-get install -y mysql-server trove-guestagent"
    ]
  }]
}

 

 

 


 

 

 

정리 - 운영 팁 요약

주제 핵심 포인트
장애 대응 API/TaskManager/GuestAgent 3단계 로그 필수 점검
이미지 관리 주기적 보안 업데이트, 최신 DB 패키지 유지
모니터링 OpenStack Telemetry + Prometheus 이중 구성 추천
백업 Swift 외에도 NFS 등 외부 저장소 이중화 검토
성능 튜닝 Guest Image 기본 설정 최적화 필수

 

 

 

 

 


 

 

 

 

 

결론

Trove는 OpenStack 환경에서 필요한 데이터베이스를 Self-Service로 쉽게 프로비저닝하고 관리할 수 있는 DBaaS 서비스다.

  • 개발팀이 직접 DB 생성/삭제/백업 가능
  • OpenStack 네이티브 자원(Nova, Cinder, Neutron, Swift)과 완전 연동
  • 외부 서비스(API, Portal)와 쉽게 연결 가능

 

하지만, 다음과 같은 경우에는 주의가 필요하다.

  • 대규모 HA 구성이나 고성능 튜닝이 중요한 서비스
  • 최신 DB 기능을 빠르게 사용해야 하는 환경

 

➡️ OpenStack 기반 Dev/Test 환경에는 강력 추천, 대규모 운영환경에서는 사전 검토 필수

 

 

 

 

 

 


Reference

728x90
반응형