MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ๊ตฌ์ฑ
์ด ํ์ด์ง์ ๋ด์ฉ
Kubernetes Operator๊ฐ MongoDB ์ฌ์ฉ์ ์ง์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ๋ MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ์์ ์ด๊ณ ์๋ํ๋ ๋ฐฑ์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
MongoDB database ๋ฆฌ์์ค ๋ฐฐํฌ์๋ฒ ์ค์ MongoDB ๋ฆฌ์์ค์ ๋ํ ๋ฐฑ์ ์ ์ด๋ฏธ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ๋ค์ ์ ์ฐจ๋ฅผ ์๋ฃํ ํ์๊ฐ ์์ต๋๋ค.
๊ณ ๋ ค ์ฌํญ
MongoDB ๋ฆฌ์์ค์ ๋ํ ๋ฐฑ์ ์ ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ค์ ๊ณ ๋ ค ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋น ๋ ์ด๋ธ์ ์ค์ ํ๋ ๊ฒฝ์ฐ ํ ๋น ๋ ์ด๋ธ์ ๋ํด Kubernetes ๊ตฌ์ฑ ํ์ผ์์ ์ค์ ํ ๊ฐ์ด Ops Manager UI์ ์ ์๋ ๊ฐ์ ์ฌ์ ์ํฉ๋๋ค. Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ์ง ์์ ํ ๋น ๋ ์ด๋ธ์ Ops Manager UI์ ์ค์ ๋ ๊ฐ์ ๊ณ์ ์ฌ์ฉํฉ๋๋ค.
Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ์ท ์ผ์ ํ๋๋ฅผ ์ค์ ํ๋ ๊ฒฝ์ฐ ํด๋น ํ๋์ ๋ํด Kubernetes ๊ตฌ์ฑ ํ์ผ์ ์ค์ ํ ๊ฐ์ด Ops Manager UI์ ์ ์๋ ๊ฐ์ ์ฌ์ ์ํฉ๋๋ค. Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ์ง ์์ ์ค๋ ์ท ์ผ์ ํ๋๋ Ops Manager UI์ ์ค์ ๋ ๊ฐ์ ๊ณ์ ์ฌ์ฉํฉ๋๋ค.
์์
Kubernetes Operator์์
backup.snapshotSchedule.snapshotIntervalHours=6
์(๋ฅผ) ์ค์ ํฉ๋๋ค.UI์์ ๋ค์ ๊ฐ์ ์ค์ ํฉ๋๋ค.
Snapshot Inverval: 10
์ค๋ ์ท ๋ณด์กด ์ผ์: 5์ผ
Ops Manager๋ ๋ฐฐํฌ์ ๋ค์ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
Snapshot Inverval: 6
์ค๋ ์ท ๋ณด์กด ์ผ์: 5์ผ
Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฐํฌ์ ๋ฐฑ์ ์ ํ์ฑํํ์ง๋ง Kubernetes Operator๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ์ท ์ผ์ ์ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ Ops Manager๋ Ops Manager UI์์ ์ค์ ํ ์ค๋ ์ท ์ผ์ ์ ์ฌ์ฉํฉ๋๋ค.
MongoDB deployment์ ๋ฐฑ์ ์ ํ์ฑํํ์ง๋ง ์ค๋ ์ท ์ผ์ ์ ์ ํ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ Ops Manager๋ ๊ธฐ๋ณธ ์ค๋ ์ท ์ผ์ ์ ์ฌ์ฉํฉ๋๋ค.
์ ์ ์กฐ๊ฑด
MongoDB ๋ฆฌ์์ค์ ๋ํ ์ฐ์ ๋ฐฑ์ ์ ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ค์ ์์ ์ ์๋ฃํ์ธ์.
Ops Manager ๋ฆฌ์์ค์ ๋ฐฑ์ ์ ๊ตฌ์ฑํฉ๋๋ค. ๋งํฌ๋ ์ ์ฐจ์์ ๋ฐฑ์ ์ ๊ตฌ์ฑํ๋ ๋จ๊ณ๋ฅผ ์ฐธ์กฐํ์ธ์. MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ์ ๋ฐฑ์ ์ ํ๋ ค๋ฉด Ops Manager ๋ฆฌ์์ค ์ฌ์์์
spec.backup.enabled
๊ฐ์true
(์ผ)๋ก ์ค์ ํด์ผ ํฉ๋๋ค.๋ณต์ ๋ณธ ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
์ ์ฐจ
MongoDB ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฐํฌ๋ฅผ ์ํ ๋ฐฑ์ ์ ํ์ฑํํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฐํฌ์ ๊ตฌ์ฑ ํ์ผ์ spec.backup.mode
์ค์ ์ ์ถ๊ฐํ๊ณ ๋ค์ ๋ณต์ ๋ณธ ์ธํธ ์์ ๊ฐ์ด ํด๋น ๊ฐ์ enabled
(์ผ)๋ก ์ค์ ํฉ๋๋ค.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "6.0.0-ent" 9 type: ReplicaSet 10 opsManager: 11 configMapRef: 12 name: <my-project> 13 credentials: <my-credentials> 14 backup: 15 # Sets labels for the Backup Daemon. 16 assignmentLabels: ["test1", "test2"] 17 mode: enabled
๊ตฌ์ฑ ํ์ผ์ ์์ฑํ๊ฑฐ๋ ํธ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ๋ณต์ ๋ณธ ์ธํธ ๋ฐฐํฌ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๋ฐฐํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ํ์ฌํญ: ์ค๋ ์ท ์ผ์ ์ ์ค์ ํฉ๋๋ค.
๋ฐฐํฌ๋ฅผ ์ํ ์ฌ์ ํ์ผ์ ๋ค์ ์ค๋ ์ท ์ผ์ ์ค์ ์ค ํ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. Operator๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ์ท ์ผ์ ํ๋๋ฅผ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ MongoDB Ops Manager ๊ฐ ์ค๋ ์ท ์ผ์ ์ ๊ฒฐ์ ํ๋ Kubernetes ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด ๊ณ ๋ ค ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
์ ํ ์ฌํญ: ๋ฐฑ์ ํ ๋น ๋ ์ด๋ธ์ ์ค์ ํฉ๋๋ค.
๋ฐฐํฌ๋ฅผ ์ํ ์ฌ์ ํ์ผ์ spec.backup.assignmentLabels
๋ฅผ ํ๋ ์ด์ ์ถ๊ฐํฉ๋๋ค. ํ ๋น ๋ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ํน์ ๋ฐฑ์
์ ์ฅ์๊ฐ ํน์ ํ๋ก์ ํธ์ ์ฐ๊ฒฐ๋์ด ์๋์ง ์๋ณํฉ๋๋ค. Kubernetes Operator์์ ๋ ์ด๋ธ์ ์ค์ ํ๋ฉด MongoDB Ops Manager ์์ ์ค์ ํ ๋ ์ด๋ธ์ด ์ฌ์ ์๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ณ ๋ ค ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
์ด ์ ์ฐจ ์๋ถ๋ถ์ ํ ๋น ๋ ์ด๋ธ์ด ์๋ ์ฌ์ ํ์ผ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐฑ์
์ํ๊ฐ ์ธ์ง STARTED
ํ์ธํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ๋ฐฑ์ ์ํ๋ฅผ ํ์ธํฉ๋๋ค:
kubectl get mdb <resource-name> -n <metadata.namespace> -o yaml
status.backup.statusname
ํ๋๋ ๋ฐฑ์
์ ์ํ๋ฅผ ๋ํ๋
๋๋ค. ๋ฐฑ์
์ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ์ํ์ STARTED
์ด ํ์๋ฉ๋๋ค.