์์ฒด ๊ด๋ฆฌํ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ค๋ ํด๋ฌ์คํฐ๋ก ๋ณํ
์ด ํ์ด์ง์ ๋ด์ฉ
์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ ์ค๋ ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ์๋ฒ์ ๊ฑธ์ณ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํฉ๋๋ค. ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ ๋ฐ์ดํฐ ์ธํธ๊ฐ ํฌ๊ณ ์์ ์ฒ๋ฆฌ๋์ด ๋ง์ ๋ฐฐํฌ์ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ ์ธํธ๋ณด๋ค ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
์ด ํํ ๋ฆฌ์ผ์์๋ 3๋ช ์ ๋ฉค๋ฒ๋ก ๊ตฌ์ฑ๋ ๋จ์ผ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ 2๊ฐ์ ์ค๋๊ฐ ์๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ก ๋ณํํฉ๋๋ค. ์ ํด๋ฌ์คํฐ์ ๊ฐ ์ค๋๋ ๋ ๋ฆฝ์ ์ธ 3๊ฐ์ ๋ฉค๋ฒ๋ก ๊ตฌ์ฑ๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋๋ค.
MongoDB Atlas์์ ํธ์คํ ๋๋ ๋ฐฐํฌ์๋ฒ์ ๋ํด UI์์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ก ๋ณํํ ์ ์์ต๋๋ค.
์ด ์์ ์ ๊ดํ ์ ๋ณด
์ด ํํ ๋ฆฌ์ผ์ ์ผ๋ถ ๋จ๊ณ์์๋ ๋ฐฐํฌ์ ๊ฐ๋ ์ค์ง ์๊ฐ์ด ๋ฐ์ํฉ๋๋ค. ๊ฐ๋ณ ๋จ๊ณ์์๋ ๊ฐ๋ ์ค์ง ์๊ฐ์ด ๋ฐ์ํ ์๊ธฐ๋ฅผ ํ์ํฉ๋๋ค.
์ด ํํ ๋ฆฌ์ผ์ ์ธ์ฆ์ด ํ์ฑํ๋ ๋ฐฐํฌ๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
์ด ํํ ๋ฆฌ์ผ์์๋ ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ ์๋ฒ ์ค์ ์ ์ง์ ํฉ๋๋ค. ๊ตฌ์ฑ ํ์ผ์๋
mongod
๋ฐmongos
๋ช ๋ น์ค ์ต์ ์ ํด๋นํ๋ ์ค์ ์ด ํฌํจ๋์ด ์์ต๋๋ค.์ด ํํ ๋ฆฌ์ผ์ ํตํด ๋ฐฐํฌํ๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์๋ 10๊ฐ์ ์๋ฒ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
mongos
์ ๋ํ 1๊ฐ์ ์๋ฒ์ ๋๋ค.ํด๋ฌ์คํฐ์ ์๋ ๋ ๊ฐ์ ์ค๋์ ๊ฐ๊ฐ 3๊ฐ์ ์๋ฒ(์ด 6๊ฐ์ ์๋ฒ)๊ฐ ํ์ํฉ๋๋ค.
config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ํ 3๊ฐ์ ์๋ฒ์ ๋๋ค.
์๋ฒ ์ํคํ ์ฒ
์ด ํํ ๋ฆฌ์ผ์์๋ ๋ค์ ์๋ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํธ์คํธ ์ด๋ฆ | ํฌํธ | ์ค๋ช
|
---|---|---|
mongodb0.example.net | 27017 | ์ด๊ธฐ ๋ฐ์ดํฐ ๋ณด์ ์ค๋์ ๋ฉค๋ฒ rs0 ์
๋๋ค. |
mongodb1.example.net | 27017 | ์ด๊ธฐ ๋ฐ์ดํฐ ๋ณด์ ์ค๋์ ๋ฉค๋ฒ rs0 ์
๋๋ค. |
mongodb2.example.net | 27017 | ์ด๊ธฐ ๋ฐ์ดํฐ ๋ณด์ ์ค๋์ ๋ฉค๋ฒ rs0 ์
๋๋ค. |
mongodb3.example.net | 27018 | ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ๋ณด์ ์ค๋์ ๋ฉค๋ฒ rs1 ์
๋๋ค. |
mongodb4.example.net | 27018 | ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ๋ณด์ ์ค๋์ ๋ฉค๋ฒ rs1 ์
๋๋ค. |
mongodb5.example.net | 27018 | ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ๋ณด์ ์ค๋์ ๋ฉค๋ฒ rs1 ์
๋๋ค. |
mongodb6.example.net | 27017 | ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ mongos ์
๋๋ค. |
mongodb7.example.net | 27019 | config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ์ ์
๋๋ค. |
mongodb8.example.net | 27019 | config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ์ ์
๋๋ค. |
mongodb9.example.net | 27019 | config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ์ ์
๋๋ค. |
์ด ํํ ๋ฆฌ์ผ์ ์ฌ์ฉ๋ ํธ์คํธ ์ด๋ฆ์ ์์์ ๋๋ค. ์์ ๋ช ๋ น์ ์ฌ์ฉ๋ ํธ์คํธ ์ด๋ฆ์ ๋ฐฐํฌ์ ์ฌ์ฉ๋ ํธ์คํธ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์ค์
๋ณ๊ฒฝ๋ IP ์ฃผ์๋ก ์ธํด ๊ตฌ์ฑ์ด ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ํนํ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์ ๊ตฌ์ฑํ ๋ IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
IP ์ฃผ์ ๋์ ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์คํ๋ฆฟ ๋คํธ์ํฌ ํธ๋ผ์ด์ฆ ์ ๋ฐ์ ๊ฑธ์ณ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ์ธ์. MongoDB 5.0๋ถํฐ IP ์ฃผ์๋ก๋ง ๊ตฌ์ฑ๋ ๋ ธ๋๋ ์คํํธ์ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ๋ฉฐ ์์๋์ง ์์ต๋๋ค.
์์ํ๊ธฐ ์ ์
์ด ํํ ๋ฆฌ์ผ์ ์๋ฃํ๋ ค๋ฉด ํคํ์ผ ๋๋ x.509 ์ธ์ฆ์ ์ธ์ฆ์ ์ฌ์ฉํ๋ ๋ณต์ ๋ณธ ์ธํธ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ธ์ฆ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ ๋ณด์ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ํํ ๋ฆฌ์ผ์์๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ
/data/db
๋ฐ/data/configdb
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ตฌ์ฑ ํ์ผ์์storage.dbPath
์ค์ ์ ์ ์ฉํ์ธ์.
๋จ๊ณ
config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ ๋ฐฐํฌ
config ์๋ฒ์ ๋ํด 3๋ช ์ ๋ฉค๋ฒ๋ก ๊ตฌ์ฑ๋ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๋ฐฐํฌํฉ๋๋ค. ์ด ์์์์ config ์๋ฒ๋ ๋ค์ ํธ์คํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
mongodb7.example.net
mongodb8.example.net
mongodb9.example.net
Config ์๋ฒ ๊ตฌ์ฑ
๊ฐ Config ์๋ฒ ํธ์คํธ์์
mongod
์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๊ฐmongod
์ธ์คํด์ค์ ๋ํด ๊ตฌ์ฑ ํ์ผ์์ ์ด๋ฌํ ์ต์ ์ ์ง์ ํฉ๋๋ค.์ต์ ๊ฐconfigReplSet
configsvr
localhost
, ๊ทธ ๋ค์mongod
๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์์ ํด์ผ ํ๋ ๋ค๋ฅธ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.replication: replSetName: configReplSet sharding: clusterRole: configsvr net: bindIp: localhost,<hostname(s)> ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํ์ธ์.
Config ์๋ฒ ์์
์ง์ ๋ ๊ตฌ์ฑ์ผ๋ก
mongod
๋ฅผ ๋ฐฐํฌํฉ๋๋ค.mongod --config <PATH_TO_CONFIG_FILE> config ์๋ฒ๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ
/data/configdb
๋ฐ ๊ธฐ๋ณธ ํฌํธ27019
๋ฅผ ์ฌ์ฉํฉ๋๋ค.config ์๋ฒ ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
(์)๋ฅผ ์ฌ์ฉํ์ฌ config ์๋ฒ ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.mongosh "mongodb://mongodb7.example.net:27019" config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์์ํ๋ ค๋ฉด
rs.initiate()
๋ฅผ ์คํํฉ๋๋ค.rs.initiate( { _id: "configReplSet", configsvr: true, members: [ { _id: 0, host: "mongodb7.example.net:27019" }, { _id: 1, host: "mongodb8.example.net:27019" }, { _id: 2, host: "mongodb9.example.net:27019" } ] } ) ์์ ๋ช ๋ น์ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์์ด ๊ด๋ฆฌ ์์ ์ ์ํํฉ๋๋ค.
์ค์
๋ณต์ ๋ณธ ์ธํธ์ ๋ํด ๋จ
mongod
rs.initiate()
ํ๋์ ์ธ์คํด์ค์์๋ง ๋ฅผ ์คํํฉ๋๋ค.
๊ธฐ์กด ์ฌ์ฉ์ ๋ฐ ์ญํ ์ ์ ๊ตฌ์ฑ์ผ๋ก ๋ณต์
mongodump
๋ฅผ ์คํํ์ ๋ ์ป์ ๊ธฐ์กด ์ฌ์ฉ์์ ์ญํ ์ ๋ณต์ํฉ๋๋ค.
mongorestore ./adminDump --nsInclude "admin.*" --host <configPrimaryURI>
์์ ๋ช ๋ น์ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์์ด ๊ด๋ฆฌ ์์ ์ ์ํํฉ๋๋ค.
์ด ๋ช ๋ น์ ์คํํ๋ฉด ๋ค์๊ณผ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
0 document(s) restored successfully
์ด ๋ฉ์์ง๋ ๋ฌธ์ ๋ฅผ ๋ํ๋ด์ง ์์ต๋๋ค. ์ด ์ถ๋ ฅ์ ์ฌ์ฉ์ ๋ฐ ์ญํ ์ด์ธ์ 0๊ฐ์ ๋ฌธ์๊ฐ ๋ณต์๋์์์ ์๋ฏธํฉ๋๋ค.
๋ณด์ ๊ตฌ์ฑ ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ
๊ตฌ์ฑ ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ณ ๋ค์ ์์ํฉ๋๋ค.
Config ์๋ฒ ์ฌ๊ตฌ์ฑ
์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ํญ์ ์ ํํฉ๋๋ค.
๋ค์ ๊ฐ ํธ์คํธ์์
mongod
์ธ์คํด์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค.mongodb7.example.net
mongodb8.example.net
mongodb9.example.net
๊ฐ
mongod
์ธ์คํด์ค์ ๋ํด ๊ตฌ์ฑ ํ์ผ์์ ์ด๋ฌํ ์ต์ ์ ์ง์ ํฉ๋๋ค:์ต์ ๊ฐ์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ์ ์ฌ์ฉ๋๋ ํค ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.security: keyFile: <PATH_TO_KEYFILE> replication: replSetName: configReplSet sharding: clusterRole: configsvr net: bindIp: localhost,<hostname(s)> ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํ์ธ์.
๋ค์ ๊ฐ ํธ์คํธ์์
mongod
์ธ์คํด์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค.mongodb7.example.net
mongodb8.example.net
mongodb9.example.net
์ด๋ฏธ ๊ตฌ์ฑํ
mongod
์ต์ ์ธ์๋ ๊ฐ ์ธ์คํด์ค์ ๋ํ ๊ตฌ์ฑ ํ์ผ์์ ๋ค์ ์ต์ ์ ์ง์ ํ์ธ์.์ต์ ๊ฐx509
requireTLS
TLS ์ธ์ฆ์์ ํค๊ฐ ๋ชจ๋ ํฌํจ๋.pem
ํ์ผ์ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค.์ธ์ฆ ๊ธฐ๊ด์ ๋ฃจํธ ์ธ์ฆ์ ์ฒด์ธ์ด ํฌํจ๋.pem
ํ์ผ์ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค.localhost
, ๊ทธ ๋ค์mongod
๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์์ ํด์ผ ํ๋ ๋ค๋ฅธ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.๊ฒฝ๊ณ : ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋ IP ์ฃผ์ ์ ์ธ์คํด์ค ๋ฅผ ๋ฐ์ธ๋ฉํ๊ธฐ ์ ์ ๋ฌด๋จ ์ก์ธ์ค ๋ก๋ถํฐ ํด๋ฌ์คํฐ ๋ฅผ ๋ณดํธํด์ผ ํฉ๋๋ค. ๋ณด์ ๊ถ์ฅ ์ฌํญ์ ์ ์ฒด ๋ชฉ๋ก์ ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ๋ฅผ ์ํ ๋ณด์ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ฐธ์กฐํ์ธ์. ์ต์ํ ์ธ์ฆ ์ ํ์ฑํํ๊ณ ๋คํธ์ํฌ ์ธํ๋ผ๋ฅผ ๊ฐํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
sharding: clusterRole: configsvr replication: replSetName: configReplSet security: clusterAuthMode: x509 net: tls: mode: requireTLS certificateKeyFile: <FILE_WITH_COMBINED_CERT_AND_KEY> CAFile: <CA_FILE> bindIp: localhost,<hostname(s)> TLS ์ธ์ฆ์ ํค ํ์ผ์ด ๋น๋ฐ๋ฒํธ๋ก ์ํธํ๋ ๊ฒฝ์ฐ
net.tls.certificateKeyFilePassword
์ ๊ฐ์ด ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํฉ๋๋ค.MongoDB ๋ค์ ์์
์ง์ ๋ ๊ตฌ์ฑ์ผ๋ก
mongod
๋ฅผ ๋ค์ ์์ํฉ๋๋ค.mongod --config <PATH_TO_CONFIG_FILE> --shutdown mongod --config <PATH_TO_CONFIG_FILE>
๋ค์์ ๋ฐฐํฌํฉ๋๋ค. mongos
mongos
๋ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
mongos์ ๋ํ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํฉ๋๋ค.
mongos
๊ตฌ์ฑ ํ์ผ์ ๋ค์ ์ต์ ์ ์ง์ ํฉ๋๋ค.์ต์ ๊ฐconfigReplSet
, ๋ค์ ์ฌ๋์/
๋ฐ config ์๋ฒ ํธ์คํธ ์ด๋ฆ ๋ฐ ํฌํธ ์ค ์ต์ ํ ๊ฐ๊ฐ ์ด์ด์ง๋๋ค.์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ์ ์ฌ์ฉ๋๋ ํค ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.localhost
, ๊ทธ ๋ค์mongos
๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์์ ํด์ผ ํ๋ ๋ค๋ฅธ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.sharding: configDB: configReplSet/mongodb7.example.net:27019,mongodb8.example.net:27019,mongodb9.example.net:27019 security: keyFile: <PATH_TO_KEYFILE> net: bindIp: localhost,<hostname(s)> ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํ์ธ์.
mongos
๊ตฌ์ฑ ํ์ผ์ ๋ค์ ์ต์ ์ ์ง์ ํฉ๋๋ค.์ต์ ๊ฐconfigReplSet
, ๋ค์ ์ฌ๋์/
๋ฐ config ์๋ฒ ํธ์คํธ ์ด๋ฆ ๋ฐ ํฌํธ ์ค ์ต์ ํ ๊ฐ๊ฐ ์ด์ด์ง๋๋ค.x509
requireTLS
TLS ์ธ์ฆ์์ ํค๊ฐ ๋ชจ๋ ํฌํจ๋.pem
ํ์ผ์ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค.์ธ์ฆ ๊ธฐ๊ด์ ๋ฃจํธ ์ธ์ฆ์ ์ฒด์ธ์ด ํฌํจ๋.pem
ํ์ผ์ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค.localhost
, ๊ทธ ๋ค์mongos
๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์์ ํด์ผ ํ๋ ๋ค๋ฅธ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.sharding: configDB: configReplSet/mongodb7.example.net:27019,mongodb8.example.net:27019,mongodb9.example.net:27019 security: clusterAuthMode: x509 net: tls: mode: requireTLS certificateKeyFile: <FILE_WITH_COMBINED_CERT_AND_KEY> CAFile: <CA_FILE> bindIp: localhost,<hostname(s)> ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํฉ๋๋ค.
mongos๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
์ง์ ๋ ๊ตฌ์ฑ์ผ๋ก
mongos
๋ฅผ ๋ฐฐํฌํฉ๋๋ค.mongos --config <PATH_TO_CONFIG_FILE>
์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ค๋๋ก ๋ค์ ์์
์ด ์์์์ ์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ๋ 3๋ช ์ ๋ฉค๋ฒ๋ก ๊ตฌ์ฑ๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋๋ค. ์ด ๋จ๊ณ์์๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ค๋๋ก ์ถ๊ฐ๋ ์ ์๋๋ก ์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ๋ ๋ค์๊ณผ ๊ฐ์ ํธ์คํธ์์ ์คํ๋ฉ๋๋ค.
mongodb0.example.net:27017
mongodb1.example.net:27017
mongodb2.example.net:27017
์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ, ์ค๋์ ๊ฐ mongod
์ธ์คํด์ค์ ๋ํ ์ญํ ์ shardsvr
๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ์๋ฒ ์ญํ ์ ์ค์ ํ๋ ค๋ฉด mongod
๊ตฌ์ฑ ํ์ผ์์ sharding.clusterRole
์ค์ ์ ์ ์ฉํฉ๋๋ค.
์ฐธ๊ณ
์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ์ ๋ฉค๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ์ ๋ฉค๋ฒ ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค.mongosh "mongodb://<username>@mongodb0.example.net:27017" ๋ฐฐํฌ์ x.509 ์ธ์ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์
mongosh
์ต์ ์ ์ง์ ํ์ธ์.์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
mongosh "mongodb://<username>@mongodb0.example.net:27017" --tls --tlsCAFile <CA_FILE> --tlsCertificateKeyFile <filename> ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฐ ์ธ์ปจ๋๋ฆฌ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
rs.status()
์คํํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฐ ์ธ์ปจ๋๋ฆฌ๋ฅผ ํฉ๋๋ค.rs.status() ๋ช ๋ น ์ถ๋ ฅ์์
replSetGetStatus.members[n].stateStr
ํ๋๋ ์ด๋ค ๋ฉค๋ฒ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ์ด๊ณ ์ด๋ค ๋ฉค๋ฒ๊ฐ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ธ์ง๋ฅผ ๋ํ๋ ๋๋ค.--shardsvr
์ต์ ์ผ๋ก ์ธ์ปจ๋๋ฆฌ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.๊ฒฝ๊ณ
์ด ๋จ๊ณ์์๋ ๋ณต์ ๋ณธ ์ธํธ ์ธ์ปจ๋๋ฆฌ์ ์ฐ๊ฒฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ฝ๊ฐ์ ์ค๋จ ์๊ฐ์ด ํ์ํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ ๋ฅผ ๋ค์ ์์ํ ํ ์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ค๋๋ก ์ถ๊ฐ์๋จ๊ณ๋ฅผ ์ํํ ๋๊น์ง ํด๋น ์ธ์ปจ๋๋ฆฌ ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์
CannotVerifyAndSignLogicalTime
์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์์ํ์ฌ
CannotVerifyAndSignLogicalTime
์ค๋ฅ๋ฅผ ์์ ํ์ง ์๋๋ก ํ ์๋ ์์ต๋๋ค.์ธ์ปจ๋๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ปจ๋๋ฆฌ ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค.mongosh "mongodb://<username>@<host>:<port>" ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
use admin db.shutdownServer() ์ธ์ปจ๋๋ฆฌ ๊ตฌ์ฑ ํ์ผ์ ํธ์งํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ ๊ตฌ์ฑ ํ์ผ์์
sharding.clusterRole
๋ฅผshardsvr
๋ก ์ค์ ํฉ๋๋ค.security: keyFile: <PATH_TO_KEYFILE> replication: replSetName: rs0 sharding: clusterRole: shardsvr net: port: 27017 bindIp: localhost,<hostname(s)> ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํ์ธ์.
์ธ์ปจ๋๋ฆฌ๋ฅผ ์ค๋ ์๋ฒ๋ก ๋ค์ ์์ํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ๊ฐ ํฌํจ๋ ํธ์คํธ์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
mongod --config <PATH_TO_CONFIG_FILE> ๋ค๋ฅธ ์ธ์ปจ๋๋ฆฌ์ ๋ํด ์ข ๋ฃ ๋ฐ ์ฌ์์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ปจ๋๋ฆฌ ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค.๋ฐฐํฌ์ x.509 ์ธ์ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์
mongosh
์ต์ ์ ์ง์ ํ์ธ์.mongosh "mongodb://<username>@<host>:<port>" --tls --tlsCAFile <CA_FILE> --tlsCertificateKeyFile <filename> ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
use admin db.shutdownServer() ์ธ์ปจ๋๋ฆฌ ๊ตฌ์ฑ ํ์ผ์ ํธ์งํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ ๊ตฌ์ฑ ํ์ผ์์
sharding.clusterRole
๋ฅผshardsvr
๋ก ์ค์ ํฉ๋๋ค.replication: replSetName: rs0 sharding: clusterRole: shardsvr security: clusterAuthMode: x509 net: port: 27017 tls: mode: requireTLS certificateKeyFile: <FILE_WITH_COMBINED_CERT_AND_KEY> CAFile: <CA_FILE> bindIp: localhost,<hostname(s)> TLS ์ธ์ฆ์ ํค ํ์ผ์ด ๋น๋ฐ๋ฒํธ๋ก ์ํธํ๋ ๊ฒฝ์ฐ
net.tls.certificateKeyFilePassword
์ ๊ฐ์ด ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํฉ๋๋ค.์ธ์ปจ๋๋ฆฌ๋ฅผ ์ค๋ ์๋ฒ๋ก ๋ค์ ์์ํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ๊ฐ ํฌํจ๋ ํธ์คํธ์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
mongod --config <PATH_TO_CONFIG_FILE> ๋ค๋ฅธ ์ธ์ปจ๋๋ฆฌ์ ๋ํด ์ข ๋ฃ ๋ฐ ์ฌ์์ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
์ต์
์ --shardsvr
์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
๊ฒฝ๊ณ
์ด ๋จ๊ณ์์๋ ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ฝ๊ฐ์ ์ค๋จ ์๊ฐ์ด ํ์ํฉ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ๋ฅผ ๋ค์ ์์ํ ํ ์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ค๋๋ก ์ถ๊ฐ์๋จ๊ณ๋ฅผ ์ํํ ๋๊น์ง ํ๋ผ์ด๋จธ๋ฆฌ ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ CannotVerifyAndSignLogicalTime
์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ ์์ํ์ฌ CannotVerifyAndSignLogicalTime
์ค๋ฅ๋ฅผ ์์ ํ์ง ์๋๋ก ํ ์๋ ์์ต๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.mongosh "mongodb://<username>@<host>:<port>" ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ด๋ ค๋์ต๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค:
rs.stepDown() ๊ฐ๋ฑ์ด ์๋ฃ๋์๋์ง ํ์ธํฉ๋๋ค.
rs.status()
๋ฅผ ์คํํ์ฌ ์ฐ๊ฒฐ๋ ๋ฉค๋ฒ๊ฐ ์ธ์ปจ๋๋ฆฌ๋ก ๋ณ๊ฒฝ๋์๋์ง ํ์ธํฉ๋๋ค.rs.status() ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
use admin db.shutdownServer() ์ข ๋ฃ๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ์ ๊ตฌ์ฑ ํ์ผ์ ํธ์งํฉ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ๊ตฌ์ฑ ํ์ผ์์
sharding.clusterRole
์shardsvr
๋ก ์ค์ ํฉ๋๋ค.security: keyFile: <PATH_TO_KEYFILE> replication: replSetName: rs0 sharding: clusterRole: shardsvr net: port: 27017 bindIp: localhost,<hostname(s)> ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํ์ธ์.
ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ค๋ ์๋ฒ๋ก ๋ค์ ์์ํฉ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ํฌํจ๋ ํธ์คํธ์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
mongod --config <PATH_TO_CONFIG_FILE>
ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ปจ๋๋ฆฌ ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค.๋ฐฐํฌ์ x.509 ์ธ์ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์
mongosh
์ต์ ์ ์ง์ ํ์ธ์.๋ฐฐํฌ์ x.509 ์ธ์ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์
mongosh
์ต์ ์ ์ง์ ํ์ธ์.mongosh "mongodb://<username>@<host>:<port>" --tls --tlsCAFile <CA_FILE> --tlsCertificateKeyFile <filename> ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ด๋ ค๋์ต๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค:
rs.stepDown() ๊ฐ๋ฑ์ด ์๋ฃ๋์๋์ง ํ์ธํฉ๋๋ค.
rs.status()
๋ฅผ ์คํํ์ฌ ์ฐ๊ฒฐ๋ ๋ฉค๋ฒ๊ฐ ์ธ์ปจ๋๋ฆฌ๋ก ๋ณ๊ฒฝ๋์๋์ง ํ์ธํฉ๋๋ค.rs.status() ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
use admin db.shutdownServer() ์ข ๋ฃ๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ์ ๊ตฌ์ฑ ํ์ผ์ ํธ์งํฉ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ๊ตฌ์ฑ ํ์ผ์์
sharding.clusterRole
์shardsvr
๋ก ์ค์ ํฉ๋๋ค.replication: replSetName: rs0 sharding: clusterRole: shardsvr security: clusterAuthMode: x509 net: port: 27017 tls: mode: requireTLS certificateKeyFile: <FILE_WITH_COMBINED_CERT_AND_KEY> CAFile: <CA_FILE> bindIp: localhost,<hostname(s)> TLS ์ธ์ฆ์ ํค ํ์ผ์ด ๋น๋ฐ๋ฒํธ๋ก ์ํธํ๋ ๊ฒฝ์ฐ
net.tls.certificateKeyFilePassword
์ ๊ฐ์ด ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํฉ๋๋ค.ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ค๋ ์๋ฒ๋ก ๋ค์ ์์ํฉ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ํฌํจ๋ ํธ์คํธ์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
mongod --config <PATH_TO_CONFIG_FILE>
์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ค๋๋ก ์ถ๊ฐ
์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ(rs0
)๋ฅผ ์ค๋๋ก ๋ณํํ ํ ์ด๋ฅผ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ถ๊ฐํฉ๋๋ค.
ํด๋ฌ์คํฐ์ ๊ด๋ฆฌ ์ฌ์ฉ์๋ก
mongos
์ ์ฐ๊ฒฐํฉ๋๋ค.mongos
์ธ์คํด์ค๊ฐ ํธ์คํธmongodb6.example.net
์์ ์คํ ์ค์ ๋๋ค.mongosh
์mongos
์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค:mongosh "mongodb://admin01@mongodb6.example.net:27017" ์ด ๋ช ๋ น์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ์์ฑํ
admin01
์ฌ์ฉ์๋ก ์ธ์ฆํฉ๋๋ค. ๋ช ๋ น์ ์ ๋ ฅํ ํ ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.์ค๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
ํด๋ฌ์คํฐ์ ์ค๋๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด
sh.addShard()
๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.sh.addShard( "rs0/mongodb0.example.net:27017,mongodb1.example.net:27017,mongodb2.example.net:27017" ) ๊ฒฝ๊ณ
์ ์ค๋๊ฐ ํ์ฑํ๋๋ฉด
mongosh
๋ฐ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ ํญ์mongos
์ธ์คํด์ค์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.mongod
์ธ์คํด์ค์ ์ง์ ์ฐ๊ฒฐํ์ง ๋ง์ธ์. ํด๋ผ์ด์ธํธ๊ฐ ์ค๋์ ์ง์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๋๋ ๋ฉํ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ฐ๊ฒฐ string์ ๋ฐ์ดํธ
ํด๋ฌ์คํฐ์ ์ฒซ ๋ฒ์งธ ์ค๋๋ฅผ ์ถ๊ฐํ ํ, ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ์ฐ๊ฒฐ ๋ฌธ์์ด์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐ ๋ฌธ์์ด๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์์ํฉ๋๋ค.
๋ ๋ฒ์งธ ๋ณต์ ๋ณธ ์ธํธ ๋ฐฐํฌ
rs1
์ด๋ผ๋ ์ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๋ฐฐํฌํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ rs1
์ ๋ฉค๋ฒ๊ฐ ๋ค์ ํธ์คํธ์ ์์ต๋๋ค.
mongodb3.example.net
mongodb4.example.net
mongodb5.example.net
๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ ๋ฉค๋ฒ๋ฅผ ์์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ
mongod
์ธ์คํด์ค์ ๋ํด ๋ค์ ์ต์ ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํฉ๋๋ค.์ต์ ๊ฐ์ด๊ธฐ ๋ณต์ ๋ณธ ์ธํธ์ ์ฌ์ฉ๋๋ ํค ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.rs1
shardsvr
localhost
, ๊ทธ ๋ค์mongod
๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์์ ํด์ผ ํ๋ ๋ค๋ฅธ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.security: keyFile: <PATH_TO_KEYFILE> replication: replSetName: rs1 sharding: clusterRole: shardsvr net: bindIp: localhost,<hostname(s)> ๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ต์ ์ ํฌํจํ์ธ์.
๊ฐ ๋ฉค๋ฒ์ ๋ํด ๋ค์ ์ต์ ์ ์ฌ์ฉํ์ฌ
mongod
๋ฅผ ์์ํฉ๋๋ค.์ต์ ๊ฐrs1
shardsvr
x509
requireTLS
TLS ์ธ์ฆ์์ ํค๊ฐ ๋ชจ๋ ํฌํจ๋.pem
ํ์ผ์ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค.์ธ์ฆ ๊ธฐ๊ด์ ๋ฃจํธ ์ธ์ฆ์ ์ฒด์ธ์ด ํฌํจ๋.pem
ํ์ผ์ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค.localhost
, ๊ทธ ๋ค์mongod
๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์์ ํด์ผ ํ๋ ๋ค๋ฅธ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.replication: replSetName: rs1 sharding: clusterRole: shardsvr security: clusterAuthMode: x509 net: tls: mode: requireTLS certificateKeyFile: <FILE_WITH_COMBINED_CERT_AND_KEY> CAFile: <CA_FILE> bindIp: localhost,<hostname(s)> ์ง์ ๋ ๊ตฌ์ฑ์ผ๋ก
mongod
๋ฅผ ๋ฐฐํฌํฉ๋๋ค.mongod --config <PATH_TO_CONFIG_FILE> ์ฐธ๊ณ
mongod
์ธ์คํด์ค์ ๋ํด--shardsvr
์ต์ ์ ์ง์ ํ๋ฉด ์ธ์คํด์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํธ27018
์์ ์คํ๋ฉ๋๋ค.๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ ๋ฉค๋ฒ๋ฅผ ์์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.mongosh "mongodb://mongodb3.example.net:27018" mongosh "mongodb://mongodb3.example.net:27018" --tls --tlsCAFile <CA_FILE> --tlsCertificateKeyFile <filename> ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์์ํฉ๋๋ค.
mongosh
์์rs.initiate()
๋ฉ์๋๋ฅผ ์คํํ์ฌ ํ์ฌ ๋ ธ๋๋ฅผ ํฌํจํ๋ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์์ํฉ๋๋ค.rs.initiate( { _id : "rs1", members: [ { _id: 0, host: "mongodb3.example.net:27018" }, { _id: 1, host: "mongodb4.example.net:27018" }, { _id: 2, host: "mongodb5.example.net:27018" } ] } ) ์์ ์กฐ์น๋ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์์ด ๊ด๋ฆฌ ์์ ์ ์ํํฉ๋๋ค.
์ค์
๋ณต์ ๋ณธ ์ธํธ์ ๋ํด ๋จ
mongod
rs.initiate()
ํ๋์ ์ธ์คํด์ค์์๋ง ๋ฅผ ์คํํฉ๋๋ค.๋ณต์ ๋ณธ ์ธํธ์ ๋ํ ๊ด๋ฆฌ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๋ฐฐํฌํ ํ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๊ฒฐ์ ํ๋ ค๋ฉด
rs.status()
๋ฅผ ์คํํฉ๋๋ค.rs.status() ๋ช ๋ น ์ถ๋ ฅ์์
replSetGetStatus.members[n].stateStr
ํ๋๋ ์ด๋ค ๋ฉค๋ฒ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ์ธ์ง ๋ํ๋ ๋๋ค.๋ณต์ ๋ณธ ์ธํธ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ผ์ด๋จธ๋ฆฌ๊ฐmongodb4.example.net
์ธ ๊ฒฝ์ฐ ์ด ๋ช ๋ น์ ์คํํฉ๋๋ค.mongosh "mongodb://mongodb4.example.net:27018" ๊ด๋ฆฌ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
๋ค์
db.createUser()
๋ฉ์๋๋ฅผ ์คํํ์ฌuserAdmin
์ญํ ์ ๊ฐ์งrs1Admin
์ด๋ผ๋ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค.use admin db.createUser( { user: "rs1Admin", pwd: passwordPrompt(), roles: [ { role: "userAdmin", db: "admin" } ] } ) ๋ช ๋ น์ ์คํํ๋ฉด
rs1Admin
์ฌ์ฉ์์ ์ํธ๋ฅผ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์๋ฉ๋๋ค.
๋ ๋ฒ์งธ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ค๋๋ก ํด๋ฌ์คํฐ์ ์ถ๊ฐ
์ ๋ณต์ ๋ณธ ์ธํธ rs1
์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ถ๊ฐํฉ๋๋ค.
mongosh
์mongos
์ ์ฐ๊ฒฐํฉ๋๋ค.๋ช ๋ น์ค์์ ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ํธ์คํธ
mongodb6.example.net
์์ ์คํ ์ค์ธmongos
์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.mongosh "mongodb://admin01@mongodb6.example.net:27017/admin" mongosh "mongodb://admin01@mongodb6.example.net:27017/admin" --tls --tlsCAFile <CA_FILE> --tlsCertificateKeyFile <filename> ์ด ๋ช ๋ น์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ์์ฑํ
admin01
์ฌ์ฉ์๋ก ์ธ์ฆํฉ๋๋ค. ๋ช ๋ น์ ์ ๋ ฅํ ํ ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.๋ ๋ฒ์งธ ์ค๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
mongos
์ ์ฐ๊ฒฐํ ํ,sh.addShard()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ ๋ณต์ ๋ณธ ์ธํธrs1
์ ์ค๋๋ก ์ถ๊ฐํฉ๋๋ค.sh.addShard( "rs1/mongodb3.example.net:27018,mongodb4.example.net:27018,mongodb5.example.net:27018" )
Collection ์ค๋
์ ์ฐจ์ ๋ง์ง๋ง ๋จ๊ณ๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ์ปฌ๋ ์ ์ ์ค๋ฉํ๋ ๊ฒ์ ๋๋ค.
์ค๋ ํค๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์ปฌ๋ ์ ์ ์ค๋ ํค๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ค๋ ํค๋ MongoDB๊ฐ ์ค๋ ๊ฐ์ ๋ฌธ์๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ๋ ๋๋ค. ์ ์ ํ ์ค๋ ํค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ ๋ฌธ์์ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ๋ ๊ฐ์ด ์์ด์ผ ํฉ๋๋ค.
๋์์ ์์ฃผ ์ก์ธ์ค๋๋ ๋ฌธ์๋ฅผ ์ฐ์๋ ์ฒญํฌ๋ก ๊ทธ๋ฃนํํฉ๋๋ค.
์ค๋ ๊ฐ์ ํ๋์ ํจ๊ณผ์ ์ผ๋ก ๋ถ์ฐํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ค๋ ํค ์ ํ์ ์ฐธ์กฐํ์ธ์.
์ด ์ ์ฐจ์์๋
number
ํ๋๋ฅผtest_collection
์ปฌ๋ ์ ์ ์ค๋ ํค๋ก ์ฌ์ฉํฉ๋๋ค.์ค๋ ํค์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
๋น์ด ์์ง ์์ ์ปฌ๋ ์ ์ ์ค๋ฉํ๊ธฐ ์ ์ ์ค๋ ํค์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์ธ์.
use test db.test_collection.createIndex( { "number" : 1 } ) ์ปฌ๋ ์ ์ ์ค๋ฉํฉ๋๋ค.
test
๋ฐ์ดํฐ๋ฒ ์ด์ค์์test_collection
์ ์ค๋ฉํฉ๋๋คnumber
๋ฅผ ์ค๋ ํค๋ก ์ง์ ํฉ๋๋ค.sh.shardCollection( "test.test_collection", { "number" : 1 } ) ๋ค์์ ๋ฐธ๋ฐ์๊ฐ ์คํ๋ ๋ ์ค๋ ๊ฐ์ ๋ฌธ์ ์ฒญํฌ๋ฅผ ์ฌ๋ฐฐ๋ถํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ด ์ปฌ๋ ์ ์ ์ถ๊ฐ ๋ฌธ์๋ฅผ ์ฝ์ ํ๋ฉด
mongos
๋ ํด๋น ๋ฌธ์๋ฅผ ์ ์ ํ ์ค๋๋ก ๋ผ์ฐํ ํฉ๋๋ค.๋ฐธ๋ฐ์๊ฐ ์ฒญํฌ๋ฅผ ์ฌ๋ถ๋ฐฐํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๊ธฐ ์ํด ๋ฐธ๋ฐ์ ์คํ ์๊ธฐ๋ฅผ ์ง์ ํ์ฌ ์ฌ์ฉ๋์ด ๋ง์ ์๊ฐ์๋ ์คํ๋์ง ์๋๋ก ํ ์ ์์ต๋๋ค. ์์ธํ ์์๋ณด๋ ค๋ฉด ๋ฐธ๋ฐ์ฑ ๊ธฐ๊ฐ ์์ฝ์ ์ฐธ์กฐํ์ธ์.
์์ธํ ์์๋ณด๊ธฐ
์ค๋ฉ ํํ ๋ฆฌ์ผ๊ณผ ์ ์ฐจ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ด ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.