Docs Menu
Docs Home
/
MongoDB ๋งค๋‰ด์–ผ
/ / /

์ง€๋ฆฌ์ ์œผ๋กœ ์ค‘๋ณต๋œ ์ž์ฒด ๊ด€๋ฆฌ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐฐํฌ

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • ๊ฐœ์š”
  • ๊ณ ๋ ค ์‚ฌํ•ญ
  • ์ „์ œ ์กฐ๊ฑด
  • ์ ˆ์ฐจ

์ด ํŠœํ† ๋ฆฌ์–ผ์€ ์—ฌ๋Ÿฌ ์œ„์น˜์— ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์„ธ ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์™€ ๋‹ค์„ฏ ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ ์„ธํŠธ ๋ฉค๋ฒ„ ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•˜๋ฉด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํˆฌํ‘œ ๋ฉค๋ฒ„ ์ˆ˜๋ฅผ ํ™€์ˆ˜๋กœ ๋ฐฐํฌํ•˜์„ธ์š”. [1]

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

[1](1, 2) ์‚ฌ์ •์ด ์žˆ์–ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๊ณ  ํˆฌํ‘œ๊ถŒ์ด ์žˆ๋Š” ๋ฉค๋ฒ„ ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ ๋Œ€์‹  ์ค‘์žฌ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘์žฌ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€ ๋ณต์ œ๋ณธ ์„ธํŠธ ์ค‘์žฌ์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ฐธ๊ณ 

๋กค๋ง ์—…๊ทธ๋ ˆ์ด๋“œ ์™ธ๋ถ€์—์„œ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ชจ๋“  mongod ๋ฉค๋ฒ„๊ฐ€ ๋™์ผํ•œ ์ฃผ ๋ฒ„์ „์˜ MongoDB๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ ์„ธํŠธ ๋ฐฐํฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ์ฐธ์กฐํ•˜์„ธ์š”.

์ค‘์š”

๋ณ€๊ฒฝ๋œ IP ์ฃผ์†Œ๋กœ ์ธํ•ด ๊ตฌ์„ฑ์ด ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ํŠนํžˆ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์› ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์›์„ ๊ตฌ์„ฑํ•  ๋•Œ IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

IP ์ฃผ์†Œ ๋Œ€์‹  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ”Œ๋ฆฟ ๋„คํŠธ์›Œํฌ ํ˜ธ๋ผ์ด์ฆŒ ์ „๋ฐ˜์— ๊ฑธ์ณ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”. MongoDB 5.0๋ถ€ํ„ฐ IP ์ฃผ์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋…ธ๋“œ๋Š” ์Šคํƒ€ํŠธ์—… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๋ฉฐ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

--bind_ip 2} ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ MongoDB๊ฐ€ ๊ตฌ์„ฑ๋œ ์ฃผ์†Œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์—ฐ๊ฒฐ์„ ์ˆ˜์‹  ๋Œ€๊ธฐํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ IP ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์ „์— ๋ฌด๋‹จ ์ ‘๊ทผ์œผ๋กœ๋ถ€ํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ตœ์†Œํ•œ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

2} ๋ฐmongod MongoDB mongos ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์— ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•ด net.ipv6 ๊ตฌ์„ฑ ํŒŒ์ผ ์„ค์ • ๋˜๋Š” --ipv6 ๋ช…๋ น์ค„ ์˜ต์…˜์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ IPv6 ์ฃผ์†Œ์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ localhost์— ๋ฐ”์ธ๋”ฉ๋œ mongod ๋ฐ mongos๋Š” ๋™์ผํ•œ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ”์ธ๋”ฉ ๋™์ž‘์—๋Š” mongosh์™€ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ๋Š” localhost์—๋งŒ ๋ฐ”์ธ๋”ฉ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—๋Š” ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋ฐ”์ธ๋”ฉ์„ ์žฌ์ •์˜ํ•˜๊ณ  ๋‹ค๋ฅธ IP ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉํ•˜๋ ค๋ฉด net.bindIp ๊ตฌ์„ฑ ํŒŒ์ผ ์„ค์ • ๋˜๋Š” --bind_ip ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋˜๋Š” IP ์ฃผ์†Œ ๋ชฉ๋ก์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

MongDB ๋ถ€ํ„ฐ 5.0 ์‹œ์ž‘, ๋ถ„ํ•  ์ˆ˜ํ‰ DNS IP ์ฃผ์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋…ธ๋“œ๋Š” ์‹œ์ž‘ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. disableSplitHorizonIPCheck ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ mongod ์ธ์Šคํ„ด์Šค๋Š” ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์™€ IP ์ฃผ์†Œ 198.51.100.1 ์™€ ์—ฐ๊ฒฐ๋œ ํ˜ธ์ŠคํŠธ๋ช… My-Example-Associated-Hostname์— ๋ชจ๋‘ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.

mongod --bind_ip localhost,My-Example-Associated-Hostname

์ด ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋˜๋Š” ๊ด€๋ จ IP ์ฃผ์†Œ 198.51.100.1๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

mongosh --host My-Example-Associated-Hostname
mongosh --host 198.51.100.1

๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ์„ธํŠธ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์›๊ณผ ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋‹ค์Œ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์„ธ์š”:

  • ๊ฐ€์ƒ ์‚ฌ์„ค๋ง์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€๊ฐ€ LAN์„ ํ†ตํ•ด ๋‹จ์ผ ์‚ฌ์ดํŠธ ๋‚ด์˜ ๊ตฌ์„ฑ์› ๊ฐ„ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

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

  • ์ˆ˜์‹  ๋ฐ ๋ฐœ์‹  ํŒจํ‚ท์ด ๊ธฐ๋ณธ MongoDB ํฌํŠธ์—์„œ๋งŒ ํ—ˆ์šฉ๋˜๊ณ  ๋ฐฐํฌ ๋‚ด์—์„œ๋งŒ ํ—ˆ์šฉ๋˜๋„๋ก ๋„คํŠธ์›Œํ‚น ๋ฐ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. IP ๋ฐ”์ธ๋”ฉ ๊ณ ๋ ค ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๊ฐ ๊ตฌ์„ฑ์›์ด ํ™•์ธ ๊ฐ€๋Šฅํ•œ DNS ๋˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. DNS ์ด๋ฆ„์„ ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์˜ /etc/hosts ํŒŒ์ผ์„ ์„ค์ •ํ•˜์—ฌ ์ด ๊ตฌ์„ฑ์„ ๋ฐ˜์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฉค๋ฒ„๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฉค๋ฒ„์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ๋ชจ๋“  ๊ตฌ์„ฑ์› ๊ฐ„์˜ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

MongoDB๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— MongoDB๊ฐ€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“œ์„ธ์š”.

5} ๋˜๋Š” ๊ด€๋ จ ์œ„์น˜์— mongod ์ €์žฅ๋œ ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๊ตฌ์„ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค./etc/mongod.conf

๊ตฌ์„ฑ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ž์ฒด ๊ด€๋ฆฌ ๊ตฌ์„ฑ ํŒŒ์ผ ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ€๋Šฅํ•˜๋ฉด ํ™€์ˆ˜ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ์†์‹ค๋˜๋”๋ผ๋„ ๋‚˜๋จธ์ง€ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๊ฐ€ ๊ณผ๋ฐ˜์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ๋ฐ์ดํ„ฐ ์‚ฌ๋ณธ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฉค๋ฒ„ ๋ถ„ํฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ํˆฌํ‘œ๊ถŒ์„ ๊ฐ€์ง„ ๋ฉค๋ฒ„๋ฅผ 7๊ฐœ ์ด์ƒ ๋ฐฐํฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ๊ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋ฅผ ๋ณ„๋„์˜ ์‹œ์Šคํ…œ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์‹œ์Šคํ…œ์— ๋‘˜ ์ด์ƒ์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์ค‘๋ณต์„ฑ๊ณผ ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฐํฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์ผ๋ถ€๊ฐ€ ๋  ๊ฐ ์‹œ์Šคํ…œ์— MongoDB๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. MongoDB๋ฅผ ์•„์ง ์„ค์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„ค์น˜ ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ค‘์š”

๋ณ€๊ฒฝ๋œ IP ์ฃผ์†Œ๋กœ ์ธํ•ด ๊ตฌ์„ฑ์ด ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ํŠนํžˆ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์› ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์›์„ ๊ตฌ์„ฑํ•  ๋•Œ IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

IP ์ฃผ์†Œ ๋Œ€์‹  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ”Œ๋ฆฟ ๋„คํŠธ์›Œํฌ ํ˜ธ๋ผ์ด์ฆŒ ์ „๋ฐ˜์— ๊ฑธ์ณ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”. MongoDB 5.0๋ถ€ํ„ฐ IP ์ฃผ์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋…ธ๋“œ๋Š” ์Šคํƒ€ํŠธ์—… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๋ฉฐ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๋ฆฌ์ ์œผ๋กœ ์ค‘๋ณต๋œ 3๊ฐœ ๋ฉค๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๋ถ„ํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์„ธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„ํฌ: ๊ฐ ์‚ฌ์ดํŠธ๋‹น ํ•œ ๊ฐœ์˜ ๋ฉค๋ฒ„ ๋ฐฐ์น˜.

  • ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„ํฌ: 2๊ฐœ ๋ฉค๋ฒ„๋ฅผ A ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—, 1๊ฐœ ๋ฉค๋ฒ„๋ฅผ B ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๊ตฌ์„ฑ์› ์ค‘ ํ•œ ๊ฐœ๊ฐ€ ์ค‘์žฌ์ž([1])์ธ ๊ฒฝ์šฐ, ์ค‘์žฌ์ž๋ฅผ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๊ตฌ์„ฑ์›๊ณผ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ A์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์›์„ ๋ถ„์‚ฐํ•˜๋ฉด ๋‹จ์ผ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋น„ํ•ด ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ๋ถ„์‚ฐ๋œ ๊ฒฝ์šฐ,

  • ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋‹จ์ผ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋ฐฐํฌํŒ๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์†Œ์ˆ˜์˜ ๊ตฌ์„ฑ์›์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ์ฝ๊ธฐ ์ž‘์—…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์“ฐ๊ธฐ ์ž‘์—…๋„ ๊ณ„์† ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋‹ค์ˆ˜์˜ ๊ตฌ์„ฑ์›์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ๋‹ค์šด๋˜๋ฉด ๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ตœ์†Œ 3๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๊ตฌ์„ฑ์›์„ ๋ฐฐํฌํ•˜์„ธ์š”. ๊ตฌ์„ฑ ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ(CSRS)์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ 3๊ฐœ(๋˜๋Š” ๊ตฌ์„ฑ์› ์ˆ˜์— ๋”ฐ๋ผ ๊ทธ ์ด์ƒ) ์„ผํ„ฐ์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋น„์šฉ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ๊ฒฝ์šฐ, ํšŒ์‚ฌ ์ •์ฑ…์ด ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋ฉค๋ฒ„๋ฅผ ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„์‚ฐํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฉค๋ฒ„๋Š” ํด๋ผ์šฐ๋“œ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ๋„ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

1

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

  • ๋ณต์ œ๋ณธ ์„ธํŠธ ์ด๋ฆ„์— replication.replSetName ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด 2๊ฐœ ์ด์ƒ์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ ๊ฐ ์„ธํŠธ์˜ ์ด๋ฆ„์ด ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • net.bindIp 2} ์˜ต์…˜์„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„/IP ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„/IP ๋ชฉ๋ก์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค๋ฅธ ์„ค์ •์€ ๋ฐฐํฌ์— ๋งž๊ฒŒ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž์Šต์„œ์—์„œ๋Š” ์„ธ ๊ฐœ์˜ mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„
ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
ํšŒ์› 0
mongodb0.example.net
ํšŒ์› 1
mongodb1.example.net
๋ฉค๋ฒ„ 2
mongodb2.example.net

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” --replSet ๋ฐ --bind_ip ๋ช…๋ น์ค„ ์˜ต์…˜์„ ํ†ตํ•ด ๋ณต์ œ๋ณธ ์„ธํŠธ ์ด๋ฆ„๊ณผ IP ๋ฐ”์ธ๋”ฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ IP ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์ „์— ๋ฌด๋‹จ ์ ‘๊ทผ์œผ๋กœ๋ถ€ํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ตœ์†Œํ•œ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

mongod --replSet "rs0" --bind_ip localhost,<hostname(s)|ip address(es)>

0}์˜ <hostname(s)|ip address(es)> ๊ฒฝ์šฐ ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ(๋ณต์ œ๋ณธ ์ง‘ํ•ฉ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์› ํฌํ•จ)๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ํ˜ธ์ŠคํŠธ mongod ์ด๋ฆ„ ๋ฐ/๋˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ replica set name ip addresses์™€ ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

replication:
replSetName: "rs0"
net:
bindIp: localhost,<hostname(s)|ip address(es)>

๊ตฌ์„ฑ ํŒŒ์ผ๋กœ mongod์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด --config ์˜ต์…˜์œผ๋กœ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

mongod --config <path-to-config>

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

2

mongod ์ค‘ ํ•˜๋‚˜(์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” mongodb0.example.net)๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๋™์ผํ•œ ๋จธ์‹ ์—์„œ๋Š” mongosh๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. mongod27017์˜ ๊ธฐ๋ณธ ํฌํŠธ์—์„œ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ธ mongod์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

mongosh

๊ฒฝ๋กœ์— ๋”ฐ๋ผ mongosh ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

mongod๊ฐ€ ๊ธฐ๋ณธ ํฌํŠธ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, mongosh์— --port ์˜ต์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

3

mongosh์—์„œ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ 0์— ๋Œ€ํ•ด rs.initiate()๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

rs.initiate()๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋‹จ์ผ mongod ์ธ์Šคํ„ด์Šค์—์„œ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

๋ณ€๊ฒฝ๋œ IP ์ฃผ์†Œ๋กœ ์ธํ•ด ๊ตฌ์„ฑ์ด ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ํŠนํžˆ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์› ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์›์„ ๊ตฌ์„ฑํ•  ๋•Œ IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

IP ์ฃผ์†Œ ๋Œ€์‹  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ”Œ๋ฆฟ ๋„คํŠธ์›Œํฌ ํ˜ธ๋ผ์ด์ฆŒ ์ „๋ฐ˜์— ๊ฑธ์ณ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”. MongoDB 5.0๋ถ€ํ„ฐ IP ์ฃผ์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋…ธ๋“œ๋Š” ์Šคํƒ€ํŠธ์—… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๋ฉฐ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

rs.initiate( {
_id : "rs0",
members: [
{ _id: 0, host: "mongodb0.example.net:27017" },
{ _id: 1, host: "mongodb1.example.net:27017" },
{ _id: 2, host: "mongodb2.example.net:27017" }
]
})

MongoDB๋Š” ๊ธฐ๋ณธ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

4

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

rs.conf()

๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "mongodb0.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "mongodb1.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb2.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("585ab9df685f726db2c6a840")
}
}
5

๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋…ธ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋…ธ๋“œ๋ณด๋‹ค ๋จผ์ € ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ๋กœ ์„ ์ถœ๋˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋ฉค๋ฒ„๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋ฉค๋ฒ„๋ณด๋‹ค ๋” ๋†’์€ priority๋ฅผ ๊ฐ€์ง€๋„๋ก ๋ฉค๋ฒ„์˜ priority๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ดํŠธ ์ค‘ ํ•˜๋‚˜์— ์žˆ๋Š” ๋ฉค๋ฒ„์˜ ์ƒ๋Œ€์  ์ž๊ฒฉ์„ ๋‚ฎ์ถ”๋ ค๋ฉด(์ด ์˜ˆ์—์„œ๋Š” mongodb2.example.net) ๋ฉค๋ฒ„์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ 0.5๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์„ ๋ณด๊ณ  ๋ฉค๋ฒ„์˜ members ๋ฐฐ์—ด ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์œ„์น˜๊ฐ€ _id์™€ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”:

    rs.conf()
  2. ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜(์•„๋ž˜ ์˜ˆ์—์„œ๋Š” cfg)์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€์ˆ˜์—์„œ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ rs.reconfig()์— ์ „๋‹ฌํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์˜ ์„ธ ๋ฒˆ์งธ ๋ฉค๋ฒ„(์ฆ‰, ์œ„์น˜ 2์˜ ๋ฉค๋ฒ„)์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น ์‹œํ€€์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    cfg = rs.conf()
    cfg.members[2].priority = 0.5
    rs.reconfig(cfg)

    ์ฐธ๊ณ 

    rs.reconfig() ์…ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•์ œ๋กœ ๋ฌผ๋Ÿฌ๋‚˜๊ณ  ํˆฌํ‘œ๊ฐ€ ์‹œํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๋ฌผ๋Ÿฌ๋‚˜๋ฉด ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ์˜๋„๋œ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ์ƒˆ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ํ‰๊ท  ์‹œ๊ฐ„์€ ์ผ๋ฐ˜์ ์œผ๋กœ 12์ดˆ๋ฅผ ๋„˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ, ๋ณต์ œ๋ณธ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์€ ํ•ญ์ƒ ์˜ˆ์ •๋œ ์œ ์ง€ ๊ด€๋ฆฌ ๊ธฐ๊ฐ„ ๋™์•ˆ์— ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ช…๋ น์ด ๋ฐ˜ํ™˜๋˜๋ฉด ์ง€๋ฆฌ์ ์œผ๋กœ ์ค‘๋ณต๋œ 3๊ฐœ ๋ฉค๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

6

rs.status() ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ์—์„œ ์ฃผ ๋ณต์ œ๋ณธ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

๋ณ€๊ฒฝ๋œ IP ์ฃผ์†Œ๋กœ ์ธํ•ด ๊ตฌ์„ฑ์ด ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ํŠนํžˆ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์› ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์›์„ ๊ตฌ์„ฑํ•  ๋•Œ IP ์ฃผ์†Œ ๋Œ€์‹  DNS ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

IP ์ฃผ์†Œ ๋Œ€์‹  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ”Œ๋ฆฟ ๋„คํŠธ์›Œํฌ ํ˜ธ๋ผ์ด์ฆŒ ์ „๋ฐ˜์— ๊ฑธ์ณ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”. MongoDB 5.0๋ถ€ํ„ฐ IP ์ฃผ์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋…ธ๋“œ๋Š” ์Šคํƒ€ํŠธ์—… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๋ฉฐ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๋ฆฌ์ ์œผ๋กœ ์ค‘๋ณต๋œ 5๊ฐœ ๋ฉค๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์„ฏ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๋ถ„ํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • 3๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„ํฌ: ๋ฐ์ดํ„ฐ ์„ผํ„ฐ A์— 2๊ฐœ, ๋ฐ์ดํ„ฐ ์„ผํ„ฐ B์— 2๊ฐœ, ๋ฐ์ดํ„ฐ ์„ผํ„ฐ C์— 1๊ฐœ ๋ฉค๋ฒ„๋ฅผ ๋ถ„ํฌํ•ฉ๋‹ˆ๋‹ค.

  • 4๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„ํฌ: ํ•œ ๊ณณ์— 2๊ฐœ, ๋‚˜๋จธ์ง€ 3๊ณณ์— ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ๋ฉค๋ฒ„๋ฅผ ๋ถ„ํฌํ•ฉ๋‹ˆ๋‹ค.

  • 5๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„ํฌ: ๊ฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ํ•˜๋‚˜์˜ ๋ฉค๋ฒ„๋ฅผ ๋ถ„ํฌํ•ฉ๋‹ˆ๋‹ค.

  • 2๊ฐœ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„ํฌ: ๋ฐ์ดํ„ฐ ์„ผํ„ฐ A์— 3๊ฐœ, B์— 2๊ฐœ๋ฅผ ๋ถ„ํฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ตฌ์„ฑ ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ 2๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ถ„ํฌํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์›์„ ๋ถ„์‚ฐํ•˜๋ฉด ๋‹จ์ผ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋น„ํ•ด ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ๋ถ„์‚ฐ๋œ ๊ฒฝ์šฐ,

  • ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋‹จ์ผ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋ฐฐํฌํŒ๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์†Œ์ˆ˜์˜ ๊ตฌ์„ฑ์›์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ์ฝ๊ธฐ ์ž‘์—…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์“ฐ๊ธฐ ์ž‘์—…๋„ ๊ณ„์† ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋‹ค์ˆ˜์˜ ๊ตฌ์„ฑ์›์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ๋‹ค์šด๋˜๋ฉด ๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ตœ์†Œ 3๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๊ตฌ์„ฑ์›์„ ๋ฐฐํฌํ•˜์„ธ์š”. ๊ตฌ์„ฑ ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ(CSRS)์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ 3๊ฐœ(๋˜๋Š” ๊ตฌ์„ฑ์› ์ˆ˜์— ๋”ฐ๋ผ ๊ทธ ์ด์ƒ) ์„ผํ„ฐ์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋น„์šฉ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ๊ฒฝ์šฐ, ํšŒ์‚ฌ ์ •์ฑ…์ด ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋ฉค๋ฒ„๋ฅผ ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„์‚ฐํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฉค๋ฒ„๋Š” ํด๋ผ์šฐ๋“œ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ๋„ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

1

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

  • replication.replSetName ์˜ต์…˜์„ ๋ณต์ œ๋ณธ ์„ธํŠธ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด 2๊ฐœ ์ด์ƒ์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ ๊ฐ ์„ธํŠธ์˜ ์ด๋ฆ„์ด ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋“œ๋ผ์ด๋ฒ„๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ์ด๋ฆ„์œผ๋กœ ๋ณต์ œ๋ณธ ์„ธํŠธ ์—ฐ๊ฒฐ์„ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • net.bindIp ์˜ต์…˜์„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„/IP ์ฃผ์†Œ ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„/IP ์ฃผ์†Œ ๋ชฉ๋ก์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค๋ฅธ ์„ค์ •์€ ๋ฐฐํฌ์— ๋งž๊ฒŒ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” 5๊ฐœ์˜ mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„
ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
ํšŒ์› 0
mongodb0.example.net
ํšŒ์› 1
mongodb1.example.net
๋ฉค๋ฒ„ 2
mongodb2.example.net
๋ฉค๋ฒ„ 3
mongodb3.example.net
๋ฉค๋ฒ„ 4
mongodb4.example.net

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” --replSet ๋ฐ --bind_ip ๋ช…๋ น์ค„ ์˜ต์…˜์„ ํ†ตํ•ด ๋ณต์ œ๋ณธ ์„ธํŠธ ์ด๋ฆ„๊ณผ IP ๋ฐ”์ธ๋”ฉ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ IP ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์ „์— ๋ฌด๋‹จ ์ ‘๊ทผ์œผ๋กœ๋ถ€ํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ตœ์†Œํ•œ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

mongod --replSet "rs0" --bind_ip localhost,<hostname(s)|ip address(es)>

0}์˜ <hostname(s)|ip address(es)> ๊ฒฝ์šฐ ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ(๋ณต์ œ๋ณธ ์ง‘ํ•ฉ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์› ํฌํ•จ)๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ํ˜ธ์ŠคํŠธ mongod ์ด๋ฆ„ ๋ฐ/๋˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ replica set name hostnames/ip addresses์™€ ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

replication:
replSetName: "rs0"
net:
bindIp: localhost,<hostname(s)|ip address(es)>

๊ตฌ์„ฑ ํŒŒ์ผ๋กœ mongod์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด --config ์˜ต์…˜์œผ๋กœ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

mongod --config <path-to-config>

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

2

mongod ์ค‘ ํ•˜๋‚˜(์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” mongodb0.example.net)๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๋™์ผํ•œ ๋จธ์‹ ์—์„œ๋Š” mongosh๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. mongod27017์˜ ๊ธฐ๋ณธ ํฌํŠธ์—์„œ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ธ mongod์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

mongosh

๊ฒฝ๋กœ์— ๋”ฐ๋ผ mongosh ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

mongod๊ฐ€ ๊ธฐ๋ณธ ํฌํŠธ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, mongosh์— --port ์˜ต์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

3

mongosh์—์„œ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ 0์— ๋Œ€ํ•ด rs.initiate()๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

rs.initiate()๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋‹จ์ผ mongod ์ธ์Šคํ„ด์Šค์—์„œ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

rs.initiate( {
_id : "rs0",
members: [
{ _id: 0, host: "mongodb0.example.net:27017" },
{ _id: 1, host: "mongodb1.example.net:27017" },
{ _id: 2, host: "mongodb2.example.net:27017" },
{ _id: 3, host: "mongodb3.example.net:27017" },
{ _id: 4, host: "mongodb4.example.net:27017" }
]
})
4

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

rs.conf()

๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"members" : [
{
"_id" : 0,
"host" : "mongodb0.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "mongodb1.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "mongodb2.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 3,
"host" : "mongodb3.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 4,
"host" : "mongodb4.example.net:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("5df2c9ccc21c478b838b98d6")
}
}
5

๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋…ธ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋…ธ๋“œ๋ณด๋‹ค ๋จผ์ € ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ๋กœ ์„ ์ถœ๋˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋ฉค๋ฒ„๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๋ฉค๋ฒ„๋ณด๋‹ค ๋” ๋†’์€ priority๋ฅผ ๊ฐ€์ง€๋„๋ก ๋ฉค๋ฒ„์˜ priority๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ดํŠธ ์ค‘ ํ•˜๋‚˜์— ์žˆ๋Š” ๋ฉค๋ฒ„์˜ ์ƒ๋Œ€์  ์ž๊ฒฉ์„ ๋‚ฎ์ถ”๋ ค๋ฉด(์ด ์˜ˆ์—์„œ๋Š” mongodb2.example.net) ๋ฉค๋ฒ„์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ 0.5๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์„ ๋ณด๊ณ  ๋ฉค๋ฒ„์˜ members ๋ฐฐ์—ด ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์œ„์น˜๊ฐ€ _id์™€ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”:

    rs.conf()
  2. ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜(์•„๋ž˜ ์˜ˆ์—์„œ๋Š” cfg)์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€์ˆ˜์—์„œ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ rs.reconfig()์— ์ „๋‹ฌํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์˜ ์„ธ ๋ฒˆ์งธ ๋ฉค๋ฒ„(์ฆ‰, ์œ„์น˜ 2์˜ ๋ฉค๋ฒ„)์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น ์‹œํ€€์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    cfg = rs.conf()
    cfg.members[2].priority = 0.5
    rs.reconfig(cfg)

    ์ฐธ๊ณ 

    rs.reconfig() ์…ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•์ œ๋กœ ๋ฌผ๋Ÿฌ๋‚˜๊ณ  ํˆฌํ‘œ๊ฐ€ ์‹œํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๋ฌผ๋Ÿฌ๋‚˜๋ฉด ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ์˜๋„๋œ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ์ƒˆ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ํ‰๊ท  ์‹œ๊ฐ„์€ ์ผ๋ฐ˜์ ์œผ๋กœ 12์ดˆ๋ฅผ ๋„˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ, ๋ณต์ œ๋ณธ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์€ ํ•ญ์ƒ ์˜ˆ์ •๋œ ์œ ์ง€ ๊ด€๋ฆฌ ๊ธฐ๊ฐ„ ๋™์•ˆ์— ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ช…๋ น์ด ๋ฐ˜ํ™˜๋˜๋ฉด ์ง€๋ฆฌ์ ์œผ๋กœ ์ค‘๋ณต๋œ 5๊ฐœ ๊ตฌ์„ฑ์› ๋ณต์ œ๋ณธ ์„ธํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

6

rs.status() ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ์—์„œ ์ฃผ ๋ณต์ œ๋ณธ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

๋Œ์•„๊ฐ€๊ธฐ

ํ…Œ์ŠคํŠธ & ๊ฐœ๋ฐœ ๋ณต์ œ๋ณธ ์„ธํŠธ