Overview
오늘은 OpenStack Trove에 대해 알아보겠다. Trove는 OpenStack 환경에서 MySQL, PostgreSQL, MongoDB 등 다양한 데이터베이스를 서비스 형태(DBaaS)로 제공하는 컴포넌트이다. 사용자는 직접 데이터베이스를 설치·설정할 필요 없이, OpenStack CLI 또는 API로 필요한 DB 인스턴스를 바로 생성하고 관리할 수 있다.
📅 관련 글
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
'Openstack' 카테고리의 다른 글
OpenStack Manila란? (Shared File System as a Service - SFaaS) (0) | 2025.05.01 |
---|---|
OpenStack Barbican란? (Key Management Service - KMS) (0) | 2025.04.27 |
OpenStack Octavia란? (Load Balancer as a Service - LBaaS) (0) | 2025.04.21 |
OpenStack Zun이란? (Container as a Service - CaaS) (0) | 2025.04.17 |
OpenStack Kuryr이란? (Container Networking) (0) | 2025.04.11 |