IT/Container&k8s

[k8s] Percona Distribution for MongoDB Operator

Hayley Shim 2023. 10. 29. 00:27

안녕하세요. 최근 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 : 여러대의 서버에 내용을 분산 시켜 관리합니다.
Percona Server for MongoDB Sharding
  • 샤드 접근 : mongos Pods — query routers, which acts as an entry point for client applications

위 그림을 통해 샤딩이 활성화되면 기본 구성에서 DB Proxy/Router(mongos)가 추가되었음을 알 수 있습니다.

 
 

'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