kubernetes 를 이용해서 mongodb replica set 을 세팅해본다
알아둘일
2020. 2. 20. 17:15
몽고디비를 서비스에 도입해보려고 테스트 중이다.
여러가지 설치 방법이 있지만, 쿠버네티스 를 활용해서 하려한다.
1. microk8s 를 설치한다.
https://microk8s.io/docs/ 설치방법은 너무 쉽다.
몇몇 서비스를 활성화 시킨다.
microk8s.enable dns storage ingress registry
microk8s.kubectl 은 링크걸어두면 편하다.
sudo ln -s microk8s.kubectl /snap/bin/kubectl
or
sudo snap alias microk8s.kubectl kubectl
2. 몽고디비 replica set 설정을 사용한다.
https://maruftuhin.com/blog/mongodb-replica-set-on-kubernetes/ 의 설정을 참조
$ openssl rand -base64 741 > ./replica-set-key.txt
$ kubectl create secret generic shared-bootstrap-data \
--from-file=internal-auth-mongodb-keyfile=./replica-set-key.txt
3. 설정을 사용해 몽고디비를 가동한다.
kubectl apply -f replica-sets/mongodb-rc.yaml
다음과 같은 명령으로 상황을 모니터링 하면 좋다.
kubectl get all -o wide
kubectl get pvc -o wide
kubectl get nodes -o wide
정상적으로 실행되지 않고, pending 으로 시간이 걸린다면, 삭제했다가 다시 실행해본다.
(전체 삭제)
kubectl delete -f replica-sets/mongodb-rc.yaml
(pvc 삭제)
kubectl delete pvc mongodb-persistent-storage-claim-mongod-0
정상적이라면 다음처럼 나온다.
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
mongod-0 1/1 Running 0 6m45s 10.1.32.109 192.168.77.20
mongod-1 1/1 Running 0 6m43s 10.1.70.10 kube-mk8s
mongod-2 1/1 Running 0 6m42s 10.1.32.110 192.168.77.20
mongod-3 1/1 Running 0 6m41s 10.1.70.11 kube-mk8s
4. mongo 접속하여 replica set 설정한다. (세부 설정은 별도로 정리 예정)
(kube => pod 접속)
kubectl exec -ti mongod-0 -c mongod-container bash
(pod 내에서 mongo console 실행)
mongo
해당 replica set 의 몽고 서버에 접속하기 위해 dns 설정이 잘 되었는지 확인해본다.
kubectl apply -f https://k8s.io/examples/admin/dns/busybox.yaml
kubectl exec -ti busybox -- nslookup mongod-0.mongodb-service
설정을 확인해서 정상적으로 pod IP 가 나와야 한다.
이런식으로 나오면 실패.
Server: 127.0.0.53
Address 1: 127.0.0.53
nslookup: can't resolve 'mongod-0.mongodb-service'
아래처럼 나와야 정상.
Server: 10.152.183.10
Address 1: 10.152.183.10 kube-dns.kube-system.svc.cluster.local
Name: mongod-0.mongodb-service
Address 1: 10.1.32.109 mongod-0.mongodb-service.default.svc.cluster.local
[추가]
혹시 microk8s 설치시 다음과 같은 메시지나 나오고 진행이 안된다면.
error: too early for operation, device not yet seeded or device model not acknowledged
snapd 를 삭제했다가 다시 설치해본다.
sudo apt purge snapd
sudo apt install snapd
반응형
'알아둘일' 카테고리의 다른 글
golang 을 사용해서 api 앱을 만든다. (0) | 2020.02.21 |
---|---|
mongodb - replica set 설정 (in kube / microk8s ) (0) | 2020.02.20 |
kubernetes 를 사용하기 위한 방향 (학습 => 개발 => 실적용) (0) | 2020.01.31 |
클라우드 서버 업체들이 가는 방향 - 쿠버네티스 kubernetes (0) | 2019.12.22 |
우분투(리눅스) 에서 하드디스크(HDD)에 배드섹터 가 생길때 조치 (0) | 2019.07.27 |
WRITTEN BY
- 1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.
,