티스토리 뷰
안녕하세요. 최근 Database Operator In Kubernetes study(=DOIK)를 진행하며 해당 내용을 보다 깊이 이해하고 공유하기 위해 작성한 글입니다.
전편 [k8s] Operator & MySQL Operator , Kafka & Strimzi Operator에 이어 Percona Distribution for MongoDB Operator에 대해 알아보겠습니다.
NoSQL Vs SQL
- Not Only SQL. RDBMS 처럼 고정된 스키마가 존재하지 않고 스키마 변경이 필요 없습니다.
- NoSQL 종류 : Key-Value Store(Redis), Wide Column Store(HBase, Cassandra), Document Store(mongoDB, CouchDB), Graph Store(Neo4j)
MongoDB
몽고DB 데이터의 기본 단위는 도큐먼트이며, 이는 관계형 데이터베이스의 행과 유사합니다. 같은 맥락에서 컬렉션 collection 은 동적 스키마 dynamic schema 가 있는 테이블과 같습니다.
- 몽고DB의 단일 인스턴스는 자체적인 컬력션을 갖는 여러 개의 독립적인 데이터베이스를 호스팅합니다.
- 모든 도큐먼트는 컬렉션 내에서 고유한 특수키인 “_id” 를 가집니다.
- 몽고DB는 몽고 셸 The mongo Shell 이라는 간단하지만 강력한 도구와 함께 배포됩니다.
MongoDB를 사용을 권장하지 않는 경우
- 다양한 유형의 데이터를 여러 차원에 걸쳐 조인하는 작업은 관계형 데이터베이스에 적합하지않습니다. 몽고DB는 이러한 작업을 잘 처리하지 못하며 거의 다룰 일이 없습니다.
- 몽고DB보다 관계형 데이터베이스를 사용하는 가장 큰 이유는 몽고DB를 지원하지 않는 도구를 사용할 수 있기 때문입니다. 워드프레스등 아직 관계형 데이터베이스 생태계를 따라가지 합니다.
Percona Operator for MongoDB
Percona Operator 는 PSMDB 를 생성 변경 삭제를 관리합니다
- PSMDB 지원 버전 : MongoDB v4.2 , v4.4 , v5.0
- 공식 지원 플랫폼 : GKE 1.19~1.22 , AWS EKS 1.19~1.22, Minikube 1.23 등
- 리소스 : 최소 3개 노드 — 샤딩 미사용(램 2GB, 2CPU, 볼륨 60GB) , 샤딩 사용(램 6GB, 4CPU)
Design Overview
- 오퍼레이터는 PSMDB Replica set 으로 디자인되어 있습니다
- 클라이언트 애플리케이션은 mongo+srv URI 주소로 접속합니다.

오퍼레이터는 PerconaServerMongoDB 오브젝트를 사용 하여, 각 Percona Server for MongoDB 를 관리하며 적절한 Replica Set 을 제공합니다.

Percona Operator 설치
MongoDB 기본 사용
# myclient 파드 3대 배포 : envsubst 활용(별도 myclient.yaml로 pod 구성)
$> cat ~/DOIK/4/myclient.yaml for ((i=1; i<=3; i++)); do PODNAME=myclient$i VERSION=$IMGVER envsubst < ~/DOIK/4/myclient.yaml | kubectl apply -f - ; done # [터미널1] 클러스터 접속(ADMIN_USER)
$> kubectl exec -it myclient1 -- mongo --quiet "mongodb+srv://userAdmin:userAdmin123456@$MYNICK-db-rs0.psmdb.svc.cluster.local/admin?replicaSet=rs0&ssl=false"rs0:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
local 0.001GB
샤딩
샤딩이라는 의미는 큰 부분에서 작게 나누는 것을 샤딩이라고 하고 MongoDB에서는 MongoDB 인스턴스에 걸쳐 큰 데이터 세트를 작은 데이터 세트로 분할하는 것을 샤딩처리라고 합니다.
- 수직적 스케일링 Vertical Scaling : CPU 가성비가 일정 구간 이상 시 급속도로 비효율적입니다.
- 수평적 스일링 Horizontal Scaling : 여러대의 서버에 내용을 분산 시켜 관리합니다.

- 샤드 접근 : mongos Pods — query routers, which acts as an entry point for client applications
위 그림을 통해 샤딩이 활성화되면 기본 구성에서 DB Proxy/Router(mongos)가 추가되었음을 알 수 있습니다.
blog migration project
written in 2022.6.12
https://medium.com/techblog-hayleyshim/k8s-percona-distribution-for-mongodb-operator-72554c904b54
written in 2022.6.12
https://medium.com/techblog-hayleyshim/k8s-percona-distribution-for-mongodb-operator-72554c904b54
'IT > Container&k8s' 카테고리의 다른 글
[k8s] EFK (0) | 2023.10.29 |
---|---|
[k8s] Cloud Native PostgreSQL Operator (1) | 2023.10.29 |
[k8s] Kafka & Strimzi Operator (0) | 2023.10.29 |
[k8s] Operator & MySQL Operator (0) | 2023.10.29 |
MINIO & VELERO install on K8S(Distributed Deployments) (2) | 2023.10.28 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- GCP
- AI
- k8s
- security
- 파이썬
- k8s cni
- AWS
- 국제 개발 협력
- 혼공파
- controltower
- GKE
- EKS
- 혼공챌린지
- cloud
- operator
- cni
- gcp serverless
- SDWAN
- handson
- 혼공단
- NFT
- k8s calico
- IaC
- S3
- terraform
- VPN
- 도서
- PYTHON
- NW
- OS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함