Docs Menu

๋…๋ฆฝํ˜• ์ž์ฒด ๊ด€๋ฆฌ mongod๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ๋กœ ๋ณ€ํ™˜

๋…๋ฆฝํ˜• mongod ์ธ์Šคํ„ด์Šค๋Š” ํ…Œ์ŠคํŠธ ๋ฐ ๊ฐœ๋ฐœ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋…๋ฆฝํ˜• ์ธ์Šคํ„ด์Šค๋Š” ๋‹จ์ผ ์‹คํŒจ ์ง€์ ์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ์„œ๋ฒ„์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. cluster๋ผ๊ณ ๋„ ํ•˜๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ์ค‘๋ณต์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ ํฌํ•จ ๋…๋ฆฝํ˜• ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋จผ์ € ๋…๋ฆฝํ˜• ์„œ๋ฒ„๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ, ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ธํ„ฐ๋„ท์— ๋…ธ์ถœํ•˜๊ธฐ ์ „์— ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋…๋ฆฝํ˜• ์„œ๋ฒ„์—์„œ MongoDB Atlas ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์‰ฝ๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MongoDB Atlas๋Š” ํด๋ผ์šฐ๋“œ์—์„œ์˜ MongoDB ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ MongoDB Atlas ์„ค๋ช…์„œ์—์„œ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋˜๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋…๋ฆฝํ˜• ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ€ํ™˜ํ•˜๊ธฐ ์ „์— ๋ณต์ œ๋ณธ ์„ธํŠธ์™€ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์ค‘ ์–ด๋Š ๊ฒƒ์ด ์›Œํฌ๋กœ๋“œ์— ๋” ์ ํ•ฉํ•œ์ง€ ๊ณ ๋ คํ•˜์„ธ์š”.

์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜์˜ ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ค‘๋ณต์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ƒค๋“œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ต๋‹ˆ๋‹ค. ์ƒค๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋ฉฐ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ์— ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด X.509๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜, ์ธ์ฆ์„œ ๋˜๋Š” ํ‚ค ํŒŒ์ผ์„ ํ•˜์—ฌ ๋‚ด๋ถ€ ์ธ์ฆ๋„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

1

mongosh(์„)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ mongod ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

mongosh

admin ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „ํ™˜ํ•˜๊ณ  shutdown์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

use admin
db.adminCommand(
{
shutdown: 1,
comment: "Convert to cluster"
}
)
2

๊ฐ ์„œ๋ฒ„์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  replSetName ์„ค์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

replication:
replSetName: "rs0"
3

๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๊ฐ ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ฉค๋ฒ„ ์ธ์ฆ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ๊ฐ€ ๋‚ด๋ถ€ ๋ฉค๋ฒ„ ์ธ์ฆ์„ ์œ„ํ•ด X.509 ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •
์˜ต์…˜
์„ค๋ช…

์ธ์ฆ์— ์‚ฌ์šฉํ•  TLS ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. X.509 ์ธ์ฆ์„œ ์ธ์ฆ์„ ์š”๊ตฌํ•˜๋„๋ก ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ด ์˜ต์…˜์„ requireTLS(์œผ)๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ TLS ์ธ์ฆ์„œ๊ฐ€ ํฌํ•จ๋œ .pem ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ๊ธฐ๊ด€(CA)์˜ ๋ฃจํŠธ ์ธ์ฆ์„œ ์ฒด์ธ์ด ํฌํ•จ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๋ฉค๋ฒ„ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ TLS ์ธ์ฆ์„œ๊ฐ€ ํฌํ•จ๋œ .pem ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๋ฉค๋ฒ„๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. X.509 ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์˜ต์…˜์„ x509๋กœ ์„ค์ •ํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

replication:
replSetName: "rs0"
security:
clusterAuthMode: x509
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mongodb/client.pem
CAFile: /etc/mongodb/ca.pem
clusterFile: /etc/mongodb/member.pem

๋‚ด๋ถ€ ๋ฉค๋ฒ„ ์ธ์ฆ์— ํ‚ค ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„ ์œ„ํ•ด์„œ๋Š” ๊ฐ ๋ฉค๋ฒ„๊ฐ€ ๋™์ผํ•œ ํ‚ค ํŒŒ์ผ์˜ ์‚ฌ๋ณธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •
์˜ต์…˜
์„ค๋ช…

๋ณต์ œ๋ณธ ์„ธํŠธ ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

replication:
replSetName: "rs0"
security:
keyFile: /etc/mongodb/keyfile

๊ถŒํ•œ ๋ถ€์—ฌ ์—†์ด ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๋‚ด๋ถ€ ๋ณต์ œ๋ณธ ์„ธํŠธ์—๋งŒ ์ด ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •
์˜ต์…˜
์„ค๋ช…

MongoDB๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ์ˆ˜์‹ ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด๋‚˜ IP ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์•ก์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ•˜๋ ค๋ฉด ์ด ์˜ต์…˜์„ localhost๋กœ ์„ค์ •ํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

replication:
replSetName: "rs0"
net:
bindIp: localhost
4

๊ฐ ๋ฉค๋ฒ„์— ๋Œ€ํ•ด mongod๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”.

5

๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด mongosh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ rs.initiate()๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

rs.initiate()

๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ํ•œ ๋ฒˆ๋งŒ ์‹œ์ž‘ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์„ ๋ณด๋ ค๋ฉด rs.conf()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด rs.status()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

6

์ƒˆ ๋ณต์ œ๋ณธ ์„ธํŠธ์—๋Š” ๋‹จ์ผ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์— ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๋ฅผ ๊ฒ€ํ† ํ•˜์„ธ์š”.

๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด rs.add()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.