일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- Java
- System.in
- 자바할래
- System.err
- 익명 클래스
- 정렬
- github api
- 프리미티브 타입
- Study Halle
- junit 5
- Switch Expressions
- 자바스터디
- Effective JAVA
- 제네릭 와일드 카드
- 합병 정렬
- 함수형 인터페이스
- annotation processor
- auto.create.topics.enable
- 람다식
- System.out
- 항해99
- 제네릭 타입
- 스파르타코딩클럽
- public 필드
- 바운디드 타입
- 브릿지 메소드
- 상속
- 접근지시자
- raw 타입
- 로컬 클래스
Archives
- Today
- Total
코딩하는 털보
Percona for mongodb 구성 본문
Percona for mongodb 구성하기
Percona for mongodb
MongoDB Community Edition 기반으로 구축되었으며 몇가지 엔터프라이즈급 향상 기능이 포함되어 있습니다.
- 암호화 WiredTiger 스토리지 엔진
- 외부인증 및 권한 부여
- 사용자 또는 애플리케이션의 감사 로깅, 로그 편집 및 쿼리 데이터베이스 상호 작용
- **MongoDB용 Percona Operator 와 호환**
- kubernates 환경에서 mongodb를 운영할 때 가장 많이 사용하는 operator 입니다.
- kubernates 위에서 mongodb replica / sharding 구성을 쉽게 배포할 수 있습니다.
Mongodb Sharded Cluster의 요소
.png>)
Shard(replica set) : 데이터의 하위 집합(샤딩된 집합)을 포함하는
mongos : 외부 접근용 인터페이스 역할을 하는 라우터, 각 shard의 데이터로부터 쿼리해주는 역할
config server : 클러스터에 대한 메타데이터 구성 저장
Percona for mongodb 기본 구성
- mongos 파드 3개
- config server 파드 3개
- shard 파드 3개
Percona for mongodb 설치
Apply CRD
kubectl apply --server-side -f deploy/crd.yaml
Create namespace
kubectl create namespace percona-mongo
kubectl config set-context $(kubectl config current-context) --namespace=percona-mongo
Apply RBAC
kubectl apply -f deploy/rbac.yaml
Apply Operator
kubectl apply -f deploy/operator.yaml
Secret 수정 및 생성
vi deploy/secrets.yaml
kubectl create -f deploy/secrets.yaml
PV 생성
apiVersion: v1
kind: PersistentVolume
metadata:
name: percona-mongo-cfg-pv-1
namespace: percona-mongo
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
storageClassName: percona-mongo-cfg
nfs:
path: /percona_mongo/cfg_1
server: 172.16.28.235
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: percona-mongo-cfg-pv-2
namespace: percona-mongo
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
storageClassName: percona-mongo-cfg
nfs:
path: /percona_mongo/cfg_2
server: 172.16.28.235
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: percona-mongo-cfg-pv-3
namespace: percona-mongo
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
storageClassName: percona-mongo-cfg
nfs:
path: /percona_mongo/cfg_3
server: 172.16.28.235
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: percona-mongo-rs-pv-1
namespace: percona-mongo
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
storageClassName: percona-mongo-rs0
nfs:
path: /percona_mongo/rs_1
server: 172.16.28.235
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: percona-mongo-rs-pv-2
namespace: percona-mongo
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
storageClassName: percona-mongo-rs0
nfs:
path: /percona_mongo/rs_2
server: 172.16.28.235
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: percona-mongo-rs-pv-3
namespace: percona-mongo
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
storageClassName: percona-mongo-rs0
nfs:
path: /percona_mongo/rs_3
server: 172.16.28.235
Storage Class 생성
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: percona-mongo-cfg
provisioner: kubernetes.io/nfs
allowVolumeExpansion: false
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: percona-mongo-rs0
provisioner: kubernetes.io/nfs
allowVolumeExpansion: false
deploy/cr.yaml 수정 [각 pvc의 storageClassName 추가]
resources:
requests:
storage: 3Gi
storageClassName: percona-mongo-rs0
resources:
requests:
storage: 3Gi
storageClassName: percona-mongo-cfg
worker node가 2개라서 각 파드의 affinity를 수정
기본적으로는 worker node 별로 파드가 생성되도록 anti-affinity가 설정되어 있음
affinity:
antiAffinityTopologyKey: "none"
# antiAffinityTopologyKey: "kubernetes.io/hostname"
Percona for Mongo Cluster 생성
k apply -f deploy/cr.yaml
테스트
kubectl run -i --rm --tty percona-client --image=percona/percona-server-mongodb:7.0.14-8 --restart=Never -- bash -il
mongosh "mongodb://my-cluster-name-mongos.percona-mongo.svc.cluster.local/admin?ssl=false"
node port 생성
apiVersion: v1
kind: Service
metadata:
name: percona-mongo-svc
namespace: percona-mongo
spec:
ports:
- name: "mongos-node-port"
port: 27017
targetPort: 27017
nodePort: 37017
selector:
app.kubernetes.io/component: mongos
app.kubernetes.io/instance: my-cluster-name
app.kubernetes.io/managed-by: percona-server-mongodb-operator
app.kubernetes.io/name: percona-server-mongodb
app.kubernetes.io/part-of: percona-server-mongodb
type: NodePort
status:
loadBalancer: {}
참고 :
https://docs.percona.com/percona-operator-for-mongodb/kubernetes.html
https://docs.percona.com/percona-operator-for-mongodb/options.html
Comments