애플리케이션 데이터베이스는 MongoDB Ops Manager 설정, 작업 기록 및 백업 메타데이터를 저장합니다. 애플리케이션 데이터베이스를 외부 애플리케이션 데이터베이스로 배포하면 Kubernetes Operator는 이를 표준 MongoDB 사용자 지정 리소스로 관리합니다. 즉, Ops Manager는 Kubernetes Operator가 관리하는 다른 MongoDB 배포서버와 마찬가지로 이를 백업하고 복원할 수 있습니다.
외부 애플리케이션 데이터베이스를 배포하려면 다음 절차를 참조하세요.
애플리케이션 데이터베이스를 백업해야 하는 이유
내부적으로 managed되는 애플리케이션 데이터베이스가 있는 MongoDB Ops Manager 배포서버는 표준 백업 도구가 접근할 수 없는 MongoDB Ops Manager 사용자 지정 리소스 내에 애플리케이션 데이터베이스를 저장합니다. MongoDB Ops Manager 자체가 실패하면 관리하는 배포서버에 대한 제어권을 잃을 수 있습니다.
외부 애플리케이션 데이터베이스를 백업하면 다음과 같은 요구 사항을 해결할 수 있습니다.
재해 복구. 데이터 손실, 데이터 손상 또는 구성 변경 실패 후 애플리케이션 데이터베이스를 복원합니다.
운영적 안전망. 잘못된 대량 쓰기 (write)를 발생하기 직전으로 롤백합니다.
복구 목표를 낮춥니다. 지속적인 oplog 캡처는 스냅샷 간의 변경 사항을 보존하여 복구 점 목표를 낮출 수 있습니다.
애플리케이션 데이터베이스 백업이 제공하는 기능
MongoDB Ops Manager는 애플리케이션 데이터베이스 데이터의 사본과 oplog 엔트리의 연속 스트림을 유지하므로 다음을 수행할 수 있습니다.
애플리케이션 데이터베이스의 전체 스냅샷을 새 배포서버나 기존 배포서버로 복원합니다.
선택한 타임스탬프로 oplog를 재생하여, 스냅샷 사이의 원하는 시점으로 애플리케이션 데이터베이스를 복원할 수 있습니다.
복원하지 않고 백업 스냅샷을 쿼리합니다. 자세히 알아보려면 Ops Manager 리소스에 대한 쿼리 가능 백업 구성을 참조하세요.
보존 및 컴플라이언스 요구 사항을 충족하며, 선택적으로 변경 불가능한 스냅샷을 사용할 수 있습니다.
아키텍처
외부 애플리케이션 데이터베이스 배포는 다음 리소스를 사용합니다:
Resource | 설명 |
|---|---|
관리 MongoDB Ops Manager | 고유의 내부 managed 된 애플리케이션 데이터베이스를 가진 MongoDB Ops Manager 리소스. 관리 MongoDB Ops Manager 인스턴스는 데이터베이스를 관리하지 않습니다. 이것은 외부 애플리케이션 데이터베이스를 포함하는 프로젝트를 관리하며, 프라이머리 MongoDB Ops Manager 인스턴스를 일은 경우 복구 엔진의 역할을 합니다. 별도의 장애 도메인(예: 다른 가용영역)에 배포하세요. |
외부 애플리케이션 데이터베이스 |
|
프라이머리 MongoDB Ops Manager | 데이터베이스를 관리하는 MongoDB Ops Manager 리소스입니다. |
새 MongoDB Ops Manager 인스턴스는 애플리케이션 데이터베이스 없이는 시작할 수 없기 때문에, spec.role이 AppDB (으)로 설정된 MongoDB 리소스는 사용 가능한 MongoDB Ops Manager 인스턴스 없이는 조화할 수 없기 때문에, 관리 MongoDB Ops Manager 인스턴스는 외부 애플리케이션 데이터베이스의 전제 조건입니다. 외부 애플리케이션 데이터베이스를 배포하기 전에 그것을 배포하십시오.
프라이머리 MongoDB Ops Manager 인스턴스가 손실되는 경우 관리 MongoDB Ops Manager 인스턴스를 사용하여 외부 애플리케이션 데이터베이스를 복원한 다음 복원된 애플리케이션 데이터베이스를 대상으로 프라이머리 MongoDB Ops Manager 인스턴스를 다시 생성하고 MongoDB 워크로드를 복원합니다.
멀티 클러스터 외부 애플리케이션 데이터베이스
외부 애플리케이션 데이터베이스를 MongoDBMultiCluster 리소스 로 배포 애플리케이션 데이터베이스 멤버를 여러 Kubernetes 클러스터에 분산할 수 있습니다. Kubernetes Operator는 <primary-om-name>-db-<cluster-index>라는 이름의 멤버 클러스터 당 하나의 애플리케이션 데이터베이스 StatefulSet을 생성하고, 프라이머리 Ops Manager 리소스 spec.externalApplicationDatabaseRef를 MongoDBMultiCluster 종류로 설정하다 이를 참조합니다.
멀티 클러스터 외부 애플리케이션 데이터베이스에는 TLS 암호화 및 멤버 클러스터 간의 클러스터 간 네트워킹이 필요합니다.Istio와 같은 서비스 메시를 사용하거나 서비스 메시 없이 이 네트워킹을 제공할 수 있습니다. 서비스 메시가 없는 배포서버 의 경우 서비스 메시가 없는 Multi-Cluster Ops Manager 참조하세요. 자세한 학습 은 멀티 클러스터 외부 애플리케이션 데이터베이스 배포를 참조하세요.
백업 및 외부 애플리케이션 데이터베이스
MongoDB Ops Manager는 백업 메타데이터를 애플리케이션 데이터베이스에 저장하며, MongoDB Ops Manager 애플리케이션과 백업 디먼은 모두 애플리케이션 데이터베이스에 연결됩니다. spec.externalApplicationDatabaseRef를 사용하여 외부 애플리케이션 데이터베이스를 참조하면 Kubernetes Operator가 이 연결을 처리합니다.
Kubernetes Operator는 참조된 MongoDB 리소스 의 TLS 구성 및 CA를 확인하고 이를 Ops Manager StatefulSet와 백업 디먼 StatefulSet 모두에 적용합니다. 백업 디먼 내부적으로 managed 애플리케이션 데이터베이스를 신뢰하는 것과 같은 방식으로 TLS가 활성화된 외부 애플리케이션 데이터베이스를 신뢰합니다.
백업 디먼은 Kubernetes 연산자가 MongoDB Ops Manager 애플리케이션용으로 계산하는 동일한 연결 문자열을 사용하여 연결됩니다.
백업을 사용하도록 설정하는 방법은 변경되지 않습니다. 프라이머리 MongoDB Ops Manager 리소스에 spec.backup.enabled를 설정합니다. 이는 내부적으로 managed 된 애플리케이션 데이터베이스에 대해 설정하는 것과 같습니다. 유일한 차이점은 애플리케이션 데이터베이스가 실행되는 곳입니다.
외부 애플리케이션 데이터베이스 자체를 백업하려면 관리 MongoDB Ops Manager 인스턴스가 managed 프로젝트에서 이를 나타내는 MongoDB 리소스에서 백업을 활성화합니다. 자세한 내용은 MongoDB 데이터베이스 백업 구성을 참조하세요.
마이그레이션 주석
내부에서 managed 애플리케이션 데이터베이스와 외부 애플리케이션 데이터베이스 간의 마이그레이션 동안, Kubernetes 연산자는 애플리케이션 데이터베이스 StatefulSet에 annotation을 설정하여 StatefulSet이 소유자를 변경할 준비가 되었음을 기록합니다. Kubernetes 연산자가 이러한 주석을 설정하고 읽습니다. 직접 설정하지 마세요.
멀티 클러스터 배포서버 에서 Kubernetes Operator는 이러한 주석을 각 멤버 클러스터 의 애플리케이션 데이터베이스 StatefulSet에 적용합니다. Kubernetes Operator는 소유자 참조 대신 mongodbmulticluster 레이블을 사용하여 각 멤버 클러스터 StatefulSet의 소유권을 추적합니다. 멤버 클러스터 의 StatefulSet는 중앙 클러스터 의 리소스 에 대한 소유자 참조를 전달할 수 없습니다.
주석 | 설명 |
|---|---|
| MongoDB 리소스가 소유권을 가질 수 있도록 MongoDB Ops Manager 리소스가 StatefulSet을 해제했습니다. Kubernetes Operator는 내부적으로 managed되는 애플리케이션 데이터베이스에서 외부 애플리케이션 데이터베이스로 마이그레이션할 때 이 주석을 설정합니다. 자세한 내용은 애플리케이션 데이터베이스를 외부 배포서버로 마이그레이션을 참조하세요. |
| MongoDB 리소스가 StatefulSet을 해제하여 Ops Manager 리소스가 이를 회수할 수 있도록 합니다. Kubernetes Operator는 외부 애플리케이션 데이터베이스를 내부 관리로 되돌릴 때 이 주석을 설정합니다. 자세한 내용은 외부 애플리케이션 데이터베이스를 Ops Manager로 반환을 참조하세요. |
요구 사항:
외부 애플리케이션 데이터베이스를 백업하기 전에 다음 작업을 완료하세요.
프라이머리 MongoDB Ops Manager 리소스에 대한 외부 애플리케이션 데이터베이스를 구성합니다. 자세한 내용은 외부 애플리케이션 데이터베이스를 사용하여 MongoDB Ops Manager 배포 또는 애플리케이션 데이터베이스를 외부 배포서버로 마이그레이션을 참조하세요.
MongoDB Ops Manager 리소스용으로 Kubernetes 연산자가 생성하는 암호화 키 보안 비밀을 백업합니다. Kubernetes 연산자는 이 시크릿의 이름을
<om-resource-name>-gen-key로 지정합니다. 그리고 MongoDB Ops Manager는 이 시크릿 없이는 애플리케이션 데이터베이스를 읽을 수 없습니다. 자세한 내용은 암호화 키를 참조하세요.관리 MongoDB Ops Manager 인스턴스에 대한 스냅샷 저장 구성. 자세한 학습은 Kubernetes Operator로 파일 시스템 백업 저장소 구성을 참조하세요.
제한 사항
외부 애플리케이션 데이터베이스 백업에는 다음과 같은 제한 사항이 있습니다.
spec.role가AppDB로 설정하다 MongoDB 리소스 단일 클러스터 토폴로지 사용해야 합니다. 외부 애플리케이션 데이터베이스를 여러 Kubernetes 클러스터에 분산하려면 멀티 클러스터 외부 애플리케이션 데이터베이스 배포에 설명된 대로 MongoDBMultiCluster 리소스 사용합니다.이 기능은 애플리케이션 데이터베이스 자체 외의 MongoDB Ops Manager 상태를 백업하거나 복원하지 않습니다.
이 기능은 MongoDB Ops Manager로 관리하는 MongoDB 배포서버를 백업 또는 복원하는 방식을 변경하지 않습니다.
Kubernetes 연산자는 MongoDB 리소스에 해당 설정이 없으므로 외부 애플리케이션 데이터베이스에 대한
automationConfig재정의를 지원하지 않습니다.Kubernetes 연산자는 외부 애플리케이션 데이터베이스로 마이그레이션 중
spec.applicationDatabase.passwordSecretKeyRef을 지원하지 않습니다. Kubernetes 연산자는 새 비밀번호를 생성하고 제공한 모든 비밀번호를 로테이션합니다.기존 MongoDB 배포서버를 외부 애플리케이션 데이터베이스로 참조할 때, 당신이 해당 배포서버의 일상 관리에 대한 책임을 매게 됩니다. Kubernetes 연산자는 MongoDB 리소스 구성과 내부적으로 managed 된 애플리케이션 데이터베이스 구성을 일치시키는 도구를 제공하지 않습니다. 해당 구성을 직접 지정해야 합니다.