์์ฒด ๊ด๋ฆฌํ ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ํค ํ์ผ ์ธ์ฆ์ผ๋ก ์ ๋ฐ์ดํธ
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ ๋ํ ์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํ๋ ค๋ฉด ๋ค์์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๋ด๋ถ ์ธ์ฆ์ ์ฌ์ฉํ๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ ์์ ๊ฐ ๋ณด์
์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด๋ฅผ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ํด๋ผ์ด์ธํธ์ ํด๋ฌ์คํฐ ๊ฐ์ ๋ณด์์ ์ ๊ณตํฉ๋๋ค.
์ด ํํ ๋ฆฌ์ผ์์๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฐ ๋ฉค๋ฒ๊ฐ ๋ฐ๋์ ๋์ผํ ๋ด๋ถ ์ธ์ฆ ๋ฉ์ปค๋์ฆ๊ณผ ์ค์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ฆ, ํด๋ฌ์คํฐ์ mongos
๋ฐ mongod
๊ฐ๊ฐ์ ๋ด๋ถ ์ธ์ฆ์ ์ํํด์ผ ํฉ๋๋ค.
๋ค์ ํํ ๋ฆฌ์ผ์์๋ ํค ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ด๋ถ ์ธ์ฆ์ ํ์ฑํํฉ๋๋ค.
๋ด๋ถ ์ธ์ฆ์ ์ค์ ํ๋ฉด ์ฌ์ฉ์ ์ก์ธ์ค ์ ์ด๋ ๊ฐํ๋ฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ๋ ค๋ฉด mongosh
์ ๊ฐ์ ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์ ๊ณ์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ก์ธ์ค ์ ์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
CloudManager ๋ฐ OpsManager
Cloud Manager ๋๋ Ops Manager๊ฐ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ ๋ด๋ถ ์ธ์ฆ์ด ์๋์ผ๋ก ์ํ๋ฉ๋๋ค.
๊ด๋ฆฌํ ๋ฐฐํฌ์์ ์ก์ธ์ค ์ ์ด๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด Cloud Manager ๋งค๋ด์ผ ๋๋ MongoDB Ops Manager ๋งค๋ด์ผ์์ Configure Access Control for MongoDB Deployments
๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ณ ๋ ค ์ฌํญ
์ค์
๋ณ๊ฒฝ๋ IP ์ฃผ์๋ก ์ธํด ๊ตฌ์ฑ์ด ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ํนํ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์ ๊ตฌ์ฑํ ๋ IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
IP ์ฃผ์ ๋์ ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์คํ๋ฆฟ ๋คํธ์ํฌ ํธ๋ผ์ด์ฆ ์ ๋ฐ์ ๊ฑธ์ณ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ์ธ์. MongoDB 5.0๋ถํฐ IP ์ฃผ์๋ก๋ง ๊ตฌ์ฑ๋ ๋ ธ๋๋ ์คํํธ์ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ๋ฉฐ ์์๋์ง ์์ต๋๋ค.
IP ๋ฐ์ธ๋ฉ
2} ๋ฐmongod
mongos
MongoDB localhost
๋ฐ์ด๋๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
์ด์ ์ฒด์
์ด ์์ต์์์๋ ์ฃผ๋ก mongod
ํ๋ก์ธ์ค๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์๋์ฐ ์ฌ์ฉ์๋ mongod.exe
ํ๋ก๊ทธ๋จ์ ๋์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํค ํ์ผ ๋ณด์
ํค ํ์ผ์ ์ต์ํ์ ๋ณด์ ํํ์ด๋ฉฐ, ํ ์คํธ ๋๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์๋ x.509 ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ก์ธ์ค ์ ์ด
์ด ์์ต์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ต์ํ์ ๊ด๋ฆฌ ์ฌ์ฉ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ๋ง ๋ค๋ฃน๋๋ค. ์ฌ์ฉ์ ์ธ์ฆ์๋ ๊ธฐ๋ณธ SCRAM ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค. ์๋-์๋ต ๋ณด์ ๋ฉ์ปค๋์ฆ์ ํ
์คํธ ๋๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ํ๋ก๋์
ํ๊ฒฝ์ ๊ฒฝ์ฐ x.509 ์ธ์ฆ์ ๋๋ ์์ฒด ๊ด๋ฆฌํ LDAP ํ๋ก์ ์ธ์ฆ(MongoDB Enterprise์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ) ๋๋ ์์ฒด ๊ด๋ฆฌํ ๋ฐฐํฌ์์ Kerberos ์ธ์ฆ(MongoDB Enterprise์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํน์ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ๋ํ ์ฌ์ฉ์ ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํน์ ์ธ์ฆ ๋ฉ์ปค๋์ฆ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์ ์์ฑ ๋ฐ ๊ด๋ฆฌ์ ๋ํ ๊ถ์ฅ์ฌํญ์ โค ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์
์ผ๋ฐ์ ์ผ๋ก ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ํ ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ ค๋ฉด mongos
์ ์ฐ๊ฒฐํ์ฌ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ผ๋ถ ์ ์ง ๊ด๋ฆฌ ์์ ์๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ํน์ ์ค๋์ ๋ํ ์ง์ ์ฐ๊ฒฐ์ด ํ์ํฉ๋๋ค. ์ด๋ฌํ ์์ ์ ์ํํ๋ ค๋ฉด ์ค๋์ ์ง์ ์ฐ๊ฒฐํ๊ณ ์ค๋ ๋ก์ปฌ ๊ด๋ฆฌ ์ฌ์ฉ์๋ก ์ธ์ฆํด์ผ ํฉ๋๋ค.
์ค๋ ๋ก์ปฌ ์ฌ์ฉ์๋ ํน์ ์ค๋ ์๋ง ์กด์ฌํ๋ฉฐ ์ค๋๋ณ ์ ์ง ๊ด๋ฆฌ ๋ฐ ๊ตฌ์ฑ์๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ค๋ ๋ก์ปฌ ์ฌ์ฉ์๋ก๋ mongos
์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์ ์ฌ์ฉ์ ๋ณด์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค๋จ ์๊ฐ
์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ์ค๋ cluster๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ๋ค์ดํ์์ด ํ์ํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
MongoDB 8.0 ๋ถํฐ๋ directShardOperations
์ญํ ์ ์ฌ์ฉํ์ฌ ์ค๋ ์ ๋ํด ์ง์ ๋ช
๋ น์ ์คํํด์ผ ํ๋ ์ ์ง ๊ด๋ฆฌ ์์
์ ์ํํ ์ ์์ต๋๋ค.
๊ฒฝ๊ณ
directShardOperations
์ญํ ์ ์ฌ์ฉํ์ฌ ๋ช
๋ น์ ์คํํ๋ฉด ํด๋ฌ์คํฐ ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ์ง ์๊ณ ๋ฐ์ดํฐ๊ฐ ์์๋ ์ ์์ต๋๋ค. directShardOperations
์ญํ ์ ์ ์ง ๊ด๋ฆฌ ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉํ๊ฑฐ๋ MongoDB ์ง์ ์ ์ง์นจ ์ ๋ฐ๋ผ ์ฌ์ฉํ์ธ์. ์ ์ง ๊ด๋ฆฌ ์์
์ํ์ด ์๋ฃ๋๋ฉด directShardOperations
์ญํ ์ฌ์ฉ์ ์ค์งํฉ๋๋ค.
์ ์ฐจ
๊ธฐ์กด ์ค๋ cluster ๋ฐฐํฌ์ ํค ํ์ผ ๋ด๋ถ ์ธ์ฆ ์ ์ฉ
ํค ํ์ผ์ ์์ฑํฉ๋๋ค.
ํค ํ์ผ ์ธ์ฆ์ ์ฌ์ฉํ๋ฉด ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฐ mongod
๋๋ mongos
์ธ์คํด์ค๋ ๋ฐฐํฌ์์ ๋ค๋ฅธ ๋ฉค๋ฒ๋ฅผ ์ธ์ฆํ๊ธฐ ์ํ ๊ณต์ ์ํธ๋ก ํค ํ์ผ์ ๋ด์ฉ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ํค ํ์ผ์ ๊ฐ์ง mongod
๋๋ mongos
์ธ์คํด์ค๋ง ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
๋ด๋ถ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ ์ํ ํคํ์ผ์ YAML ํ์์ ์ฌ์ฉํด ํคํ์ผ์ ์ฌ๋ฌ ํค๋ฅผ ํ์ฉํฉ๋๋ค. YAML ํ์์ ๋ค์ ์ค ํ๋๋ฅผ ํ์ฉํฉ๋๋ค.
๋จ์ผ ํค ๋ฌธ์์ด(์ด์ ๋ฒ์ ๊ณผ ๋์ผ)
ํค ๋ฌธ์์ด์ ์์
YAML ํ์์ ํ ์คํธ ํ์ผ ํ์์ ์ฌ์ฉํ๋ ๊ธฐ์กด์ ๋จ์ผ ํค ํคํ์ผ๊ณผ ํธํ๋ฉ๋๋ค.
ํค ๊ธธ์ด๋ 6~1024์ ์ฌ์ด์ฌ์ผ ํ๋ฉฐ base64 ์ธํธ์ ๋ฌธ์๋ง ํฌํจํ ์ ์์ต๋๋ค. ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋ฉค๋ฒ๋ ํ๋ ์ด์์ ๊ณตํต ํค๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ
UNIX ์์คํ ์์๋ ํค ํ์ผ์ ๊ทธ๋ฃน ๋๋ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. Windows ์์คํ ์์๋ ํค ํ์ผ ๊ถํ์ด ํ์ธ๋์ง ์์ต๋๋ค.
์ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํค ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์์
์์๋ openssl
์ฌ์ฉํ์ฌ ๊ณต์ ์ํธ๋ก ์ฌ์ฉํ ๋ณต์กํ ์์ฌ ๋์ 1024์ ๋ฌธ์์ด์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ chmod
์ฌ์ฉํ์ฌ ํ์ผ ์์ ์์๊ฒ๋ง ์ฝ๊ธฐ ๊ถํ์ ์ ๊ณตํ๋๋ก ํ์ผ ๊ถํ์ ๋ณ๊ฒฝํฉ๋๋ค.
openssl rand -base64 756 > <path-to-keyfile> chmod 400 <path-to-keyfile>
ํคํ์ผ ์ฌ์ฉ์ ๋ํ ์ถ๊ฐ ์ธ๋ถ ์ ๋ณด ๋ฐ ์๊ตฌ ์ฌํญ์ ํคํ์ผ์ ์ฐธ์กฐํ์ธ์.
์ค๋ cluster์ ๊ฐ ๊ตฌ์ฑ ์์์ ํค ํ์ผ์ ๋ณต์ฌํฉ๋๋ค.
cluster์ mongod
๋๋ mongos
๊ตฌ์ฑ ์์๋ฅผ ํธ์คํ
ํ๋ ๋ชจ๋ ์๋ฒ์๋ ํค ํ์ผ ๋ณต์ฌ๋ณธ์ด ํฌํจ๋์ด ์์ด์ผ ํฉ๋๋ค.
์ค๋ฉ๋ ํด๋ฌ์คํฐ ๋ฉค๋ฒ๋ฅผ ํธ์คํ
ํ๋ ๊ฐ ์๋ฒ์ ํค ํ์ผ์ ๋ณต์ฌํฉ๋๋ค. mongod
๋๋ mongos
์ธ์คํด์ค๋ฅผ ์คํํ๋ ์ฌ์ฉ์๊ฐ ํ์ผ์ ์์ ์์ด๋ฉฐ ํค ํ์ผ์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
USB ๋๋ผ์ด๋ธ ๋๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ ์ฅ ์ฅ์น์ ๊ฐ์ด mongod
๋๋ mongos
์ธ์คํด์ค๋ฅผ ํธ์คํ
ํ๋ ํ๋์จ์ด์์ ์ฝ๊ฒ ๋ถ๋ฆฌ๋ ์ ์๋ ์ ์ฅ ๋งค์ฒด์ ํค ํ์ผ์ ์ ์ฅํ์ง ๋ง์ธ์.
๋ฐธ๋ฐ์๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
mongosh
์ mongos
์ ์ฐ๊ฒฐํฉ๋๋ค.
sh.stopBalancer()
๋ง์ด๊ทธ๋ ์ด์
์ด ์งํ ์ค์ธ ๊ฒฝ์ฐ ๋ฐธ๋ฐ์๊ฐ ์ฆ์ ์ค์ง๋์ง ์์ ์ ์์ต๋๋ค. sh.stopBalancer()
๋ฉ์๋๋ balancer๊ฐ ์ค์ง๋ ๋๊น์ง shell์ ์ฐจ๋จํฉ๋๋ค.
MongoDB 6.0.3๋ถํฐ ์๋ ์ฒญํฌ ๋ถํ ์ด ์ํ๋์ง ์์ต๋๋ค. ์ด๋ ๋ฐธ๋ฐ์ฑ ์ ์ฑ ๊ฐ์ ๋๋ฌธ์ ๋๋ค. ์๋ ๋ถํ ๋ช ๋ น์ด ์ฌ์ ํ ์กด์ฌํ์ง๋ง ์์ ์ ์ํํ์ง ์์ต๋๋ค.
MongoDB 6.0.3 ์ด์ ๋ฒ์ ์์ sh.stopBalancer()
๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ํ ์๋ ๋ถํ ๋ ๋นํ์ฑํํฉ๋๋ค.
sh.getBalancerState()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐธ๋ฐ์๊ฐ ์ค์ง๋์๋์ง ํ์ธํฉ๋๋ค.
sh.getBalancerState()
์ค์
๋ฐธ๋ฐ์ ์คํ์ด ์ค์ง๋ ๋๊น์ง ์งํํ์ง ๋ง์ธ์.
cluster ๋ฐธ๋ฐ์ ๋์ ๊ตฌ์ฑ์ ๋ํ ํํ ๋ฆฌ์ผ์ cluster ๋ฐธ๋ฐ์ managed ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ ๋ชจ๋ mongos
์ธ์คํด์ค๋ฅผ ์ข
๋ฃํฉ๋๋ค.
mongosh
๋ฅผ ๊ฐ mongos
์ ์ฐ๊ฒฐํ๊ณ ์ข
๋ฃํฉ๋๋ค.
admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ db.shutdownServer()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ mongos
์(๋ฅผ) ์์ ํ๊ฒ ์ข
๋ฃํฉ๋๋ค.
db.getSiblingDB("admin").shutdownServer()
cluster์ ๋ชจ๋ mongos
์ธ์คํด์ค๊ฐ ์คํ๋ผ์ธ ์ํ๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
์ด ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด cluster์ ๋ชจ๋ mongos
์ธ์คํด์ค๊ฐ ์คํ๋ผ์ธ ์ํ์ฌ์ผ ํฉ๋๋ค.
config ์๋ฒ ์ธ์คํด์ค๋ฅผ mongod
์ข
๋ฃํฉ๋๋ค.
config ์๋ฒ mongosh
๋ฐฐํฌ์ ๊ฐ ์ ๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ข
๋ฃํฉ๋๋ค.mongod
config ์๋ฒ ๋ฐฐํฌ์ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ ์ธํธ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ฅผ ๋ง์ง๋ง์ผ๋ก ์ข ๋ฃํฉ๋๋ค.
admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ db.shutdownServer()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ mongod
์(๋ฅผ) ์์ ํ๊ฒ ์ข
๋ฃํฉ๋๋ค.
db.getSiblingDB("admin").shutdownServer()
๋ชจ๋ config ์๋ฒ๊ฐ ์คํ๋ผ์ธ ์ํ๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
์ค๋ ๋ณต์ ๋ณธ ์ธํธ ์ธ์คํด์ค๋ฅผ mongod
์ข
๋ฃํฉ๋๋ค.
๊ฐ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ํด mongosh
๋ฅผ ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ mongod
๋ฉค๋ฒ์ ์ฐ๊ฒฐํ๊ณ ์ข
๋ฃํฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ฅผ ๋ง์ง๋ง์ผ๋ก ์ข
๋ฃํฉ๋๋ค.
admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ db.shutdownServer()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ mongod
์(๋ฅผ) ์์ ํ๊ฒ ์ข
๋ฃํฉ๋๋ค.
db.getSiblingDB("admin").shutdownServer()
๋ชจ๋ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ mongod
์ธ์คํด์ค๊ฐ ์คํ๋ผ์ธ์ด ๋ ๋๊น์ง ๊ฐ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ํด ์ด ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
์ด ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด ์ค๋ cluster ์ ์ฒด๊ฐ ์คํ๋ผ์ธ ์ํ๊ฐ ๋ฉ๋๋ค.
config ์๋ฒ์ ๋ํ ์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํฉ๋๋ค.
config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ ์์ ๊ฐ mongod
๋ฅผ ์์ํฉ๋๋ค. keyFile
์ค์ ์ ํฌํจํฉ๋๋ค. keyFile
์ค์ ์ ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ์์ฒด ๊ด๋ฆฌ ๋ด๋ถ/๋ฉค๋ฒ์ญ ์ธ์ฆ ๊ณผ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด๋ฅผ ๋ชจ๋ ์ ์ฉํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ์ด๋ ๋ช
๋ น์ค์ ํตํด mongod
์ค์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ ํ์ผ
๊ตฌ์ฑ ํ์ผ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ์ ๋ํด security.keyFile
ํค ํ์ผ์ ๊ฒฝ๋ก๋ก, sharding.clusterRole
๋ฅผ configsvr
๋ก, replication.replSetName
๋ฅผ config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ์ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
security: keyFile: <path-to-keyfile> sharding: clusterRole: configsvr replication: replSetName: <setname> storage: dbpath: <path>
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๋ฉค๋ฒ๊ฐ ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด net.bindIp
์ค์ ์ ์ง์ ํ์ธ์.
--config
์ต์
๊ณผ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ mongod
๋ฅผ ์์ํฉ๋๋ค.
mongod --config <path-to-config>
๋ช ๋ น์ค
๋ช
๋ น์ค ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ์ ๋ํด -keyFile
, --configsvr
๋ฐ --replSet
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ mongod
๋ฅผ ์์ํฉ๋๋ค.
mongod --keyFile <path-to-keyfile> --configsvr --replSet <setname> --dbpath <path>
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๊ตฌ์ฑ์์ด ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด --bind_ip
๋ฅผ ์ง์ ํฉ๋๋ค.
๋ช
๋ น์ค ์ต์
์ ๋ํ ์์ธํ ๋ด์ฉ์ mongod
์ฐธ๊ณ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ฐ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํ ๋ ์๋ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ค๋ cluster์ ๊ฐ ์ค๋์ ๋ํ ์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํฉ๋๋ค.
keyFile
๋งค๊ฐ ๋ณ์์ ํจ๊ป mongod
๋ฅผ ์คํํ๋ฉด ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ์์ฒด ๊ด๋ฆฌ ๋ด๋ถ/๋ฉค๋ฒ์ญ ์ธ์ฆ ๊ณผ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด๊ฐ ๋ชจ๋ ์ ์ฉ๋ฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ ๋๋ ๋ช
๋ น์ค์ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ mongod
๋ฅผ ์์ํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ
๊ตฌ์ฑ ํ์ผ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ security.keyFile
์ต์
์ ํค ํ์ผ์ ๊ฒฝ๋ก๋ก ์ค์ ํ๊ณ replication.replSetName
์ต์
์ ๋ณต์ ๋ณธ ์ธํธ์ ์๋ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
security: keyFile: <path-to-keyfile> replication: replSetName: <setname> storage: dbPath: <path>
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๋ฉค๋ฒ๊ฐ ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด net.bindIp
์ค์ ์ ์ง์ ํ์ธ์.
--config
์ต์
๊ณผ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ mongod
๋ฅผ ์์ํฉ๋๋ค.
mongod --config <path-to-config-file>
๋ช ๋ น์ค
๋ช
๋ น์ค ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ mongod
๋ฅผ ์์ํ๊ณ --keyFile
๋ฐ --replSet
๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.
mongod --keyfile <path-to-keyfile> --replSet <setname> --dbpath <path>
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๊ตฌ์ฑ์์ด ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด --bind_ip
๋ฅผ ์ง์ ํฉ๋๋ค.
์์ ๋งค๊ฐ๋ณ์์ ๋ํ ์์ธํ ๋ด์ฉ์ mongod
์ฐธ์กฐ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ฐ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํ ๋ ์๋ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
cluster์ ๋ชจ๋ ์ค๋๊ฐ ์จ๋ผ์ธ ์ํ๊ฐ ๋ ๋๊น์ง ์ด ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
์ค๋ ๋ก์ปฌ ์ฌ์ฉ์ ๊ด๋ฆฌ์๋ฅผ ์์ฑํฉ๋๋ค(์ ํ ์ฌํญ).
์ค์
์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ํธ์คํธ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ๊ฐ mongod
์์ ์ฌ์ฉ์๋ฅผ ๋ง๋ค ์ ์๋๋ก ์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ฅผ ์์ฑํ ํ ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์ ๋ก์ปฌ ํธ์คํธ ์์ธ ๊ฐ ์ข
๋ฃ๋ฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ userAdminAnyDatabase
์ ๊ฐ์ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ๋ง๋ค ์ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ฒด ๊ด๋ฆฌํ ๋ฐฐํฌ์ Localhost ์์ธ๊ฐ ์ข
๋ฃ๋ ํ ์ถ๊ฐ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
ํ๋ ์ด์์ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ์๋ฅผ ์์ฑํ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ localhost ์์ธ๊ฐ ์ข ๋ฃ๋๋ฉด ์ ๊ถํ์ผ๋ก ์ฌ์ฉ์๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ ์ ์์ผ๋ฏ๋ก ํน์ ๊ธฐ๋ฅ์ด๋ ์์ ์ ์ก์ธ์คํ์ง ๋ชปํ ์ ์์ต๋๋ค.
ํด๋ฌ์คํฐ์ ๊ฐ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ํด mongosh
๋ก์ปฌ ํธ์คํธ ์ธํฐํ์ด์ค ๋ฅผ ํตํด ๋ฅผ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค. ๋ก์ปฌ ํธ์คํธ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด mongod
๋์ ์ ๋์ผํ ๋จธ์ ์์ mongosh
๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
admin
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ userAdminAnyDatabase
์ญํ ์ ๊ฐ์ง ์ฌ์ฉ์๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์ฌ์ฉ์๋ ํ์์ ๋ฐ๋ผ ์ค๋ ๋ณต์ ๋ณธ ์ธํธ ์ ๋ํ ์ถ๊ฐ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด ์ฌ์ฉ์๋ฅผ ๋ง๋ค๋ฉด ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ ๋ซํ๋๋ค.
๋ค์ ์์์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋ ๋ก์ปฌ ์ฌ์ฉ์ fred
๋ฅผ ์์ฑํฉ๋๋ค.
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
ํ
๋ฉ์๋/๋ช
๋ น ํธ์ถ์์ ์ํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
์
ธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์๋ ์์ต๋๋ค.
admin = db.getSiblingDB("admin") admin.createUser( { user: "fred", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
์๋ฒ์ ๋ํ mongos
์ก์ธ์ค์ ์ด๋ฅผ ์ ์ฉํฉ๋๋ค.
keyFile
๋งค๊ฐ ๋ณ์์ ํจ๊ป mongod
๋ฅผ ์คํํ๋ฉด ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ์์ฒด ๊ด๋ฆฌ ๋ด๋ถ/๋ฉค๋ฒ์ญ ์ธ์ฆ ๊ณผ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด๊ฐ ๋ชจ๋ ์ ์ฉ๋ฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ ๋๋ ๋ช
๋ น์ค์ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ mongos
๋ฅผ ์์ํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ
๊ตฌ์ฑ ํ์ผ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ security.keyFile
๋ฅผ ํค ํ์ผ ๊ฒฝ๋ก๋ก ์ค์ ํ๊ณ sharding.configDB
๋ฅผ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ๊ณผ ํ๋ ์ด์์ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ก <replSetName>/<host:port>
ํ์์ผ๋ก ์ค์ ํฉ๋๋ค.
security: keyFile: <path-to-keyfile> sharding: configDB: <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019,...
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๋ฉค๋ฒ๊ฐ ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด net.bindIp
์ค์ ์ ์ง์ ํ์ธ์.
--config
์ต์
๊ณผ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ mongos
๋ฅผ ์์ํฉ๋๋ค.
mongos --config <path-to-config-file>
๋ช ๋ น์ค
๋ช
๋ น์ค ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ mongos
๋ฅผ ์์ํ๊ณ --keyFile
๋ฐ --configdb
๋งค๊ฐ ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.
mongos --keyFile <path-to-keyfile> --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019,...
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๊ตฌ์ฑ์์ด ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด --bind_ip
๋ฅผ ์ง์ ํฉ๋๋ค.
์ด ์์ ์์ ์ ์ฒด ์ค๋ ํด๋ฌ์คํฐ๋ ๋ค์ ์จ๋ผ์ธ ์ํ๊ฐ ๋๋ฉฐ ์ง์ ๋ ํค ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ด๋ถ์ ์ผ๋ก ํต์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ mongosh
์ ๊ฐ์ ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ํด๋ฌ์คํฐ์ ์ฝ๊ฑฐ๋ ์ฐ๋ ค๋ฉด ์ฌ๋ฐ๋ฅด๊ฒ ํ๋ก๋น์ ๋๋ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ก์ปฌ ํธ์คํธ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ธ์คํด์ค ์ mongos
์ฐ๊ฒฐํฉ๋๋ค.
localhost ์ธํฐํ์ด์ค๋ฅผ ํตํด mongosh
๋ฅผ mongos
์ธ์คํด์ค ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค. mongos
์ธ์คํด์ค์ ๋์ผํ ๋ฌผ๋ฆฌ์ ์ปดํจํฐ์์ mongosh
๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
๋ฐฐํฌ๋ฅผ ์ํด ์์ฑ๋ ์ฌ์ฉ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ํธ์คํธ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์ ์์ฑ ํ localhost ์ธํฐํ์ด์ค๋ ๋ซํ๋๋ค.
์ฌ์ฉ์ ๊ด๋ฆฌ์๋ฅผ ๋ง๋ญ๋๋ค.
์ค์
์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ฅผ ๋ง๋ ํ์๋ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ ๋ ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ userAdminAnyDatabase
์ ๊ฐ์ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ๋ง๋ค ์ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ฒด ๊ด๋ฆฌํ ๋ฐฐํฌ์ Localhost ์์ธ๊ฐ ์ข
๋ฃ๋ ํ ์ถ๊ฐ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ฅผ ์์ฑํ ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ํ ๋ช ์ด์์ธ ๊ฒฝ์ฐ, ๋ก์ปฌ ํธ์คํธ ์์ธ๊ฐ ์ข ๋ฃ๋๋ฉด ์ฌ์ฉ์๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ ์ ์์ผ๋ฏ๋ก ํ์ํ ์์ ์ ์ํํ์ง ๋ชปํ ์ ์์ต๋๋ค.
db.createUser()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฌ์ฉ์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ต์ํ userAdminAnyDatabase
์ญํ ์ ๊ฐ๊ณ ์์ด์ผ ํฉ๋๋ค.
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
๋ค์ ์์์์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ์ fred
๋ฅผ ์์ฑํฉ๋๋ค.
ํ
๋ฉ์๋/๋ช
๋ น ํธ์ถ์์ ์ํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
์
ธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์๋ ์์ต๋๋ค.
admin = db.getSiblingDB("admin") admin.createUser( { user: "fred", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
๊ธฐ๋ณธ ์ ๊ณต ์ญํ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์ ๊ณผ ๊ด๋ จ๋ ์ญํ ์ ์ ์ฒด ๋ชฉ๋ก์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ญํ ์์ ํ์ธํ์ธ์.
์ฌ์ฉ์ ๊ด๋ฆฌ์๋ก ์ธ์ฆํฉ๋๋ค.
db.auth()
๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๊ด๋ฆฌ์๋ก ์ธ์ฆํด ์ถ๊ฐ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
ํ
๋ฉ์๋/๋ช
๋ น ํธ์ถ์์ ์ํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
์
ธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์๋ ์์ต๋๋ค.
db.getSiblingDB("admin").auth("fred", passwordPrompt()) // or cleartext password
๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋๋ -u <username>
, -p <password>
๋ฐ --authenticationDatabase "admin"
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ mongosh
์ธ์
์ ๋์ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค. ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ mongos
์ฌ์ฉํด์ผ ํฉ๋๋ค.
mongosh -u "fred" -p --authenticationDatabase "admin"
-p
๋ช
๋ น์ค ์ต์
์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด mongosh
(์ด)๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.
ํด๋ฌ์คํฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ด๋ฆฌ ์ฌ์ฉ์ ์์ฑ
cluster ๊ด๋ฆฌ์ ์ฌ์ฉ์์๊ฒ๋ ์ค๋ cluster์ ๋ํ clusterAdmin
์ญํ ์ด ์์ผ๋ฉฐ, ์ค๋ ๋ก์ปฌ cluster ๊ด๋ฆฌ์๋ ๊ทธ๋ ์ง ์์ต๋๋ค .
๋ค์ ์์์์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ์ ravi
๋ฅผ ์์ฑํฉ๋๋ค.
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
ํ
๋ฉ์๋/๋ช
๋ น ํธ์ถ์์ ์ํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
์
ธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์๋ ์์ต๋๋ค.
db.getSiblingDB("admin").createUser( { "user" : "ravi", "pwd" : passwordPrompt(), // or cleartext password roles: [ { "role" : "clusterAdmin", "db" : "admin" } ] } )
๋ณต์ ๋ณธ ์ธํธ ๋ฐ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์์ ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์ ์ ์ฒด ๋ชฉ๋ก์ ํด๋ฌ์คํฐ ๊ด๋ฆฌ ์ญํ ์ ์ฐธ์กฐํ์ธ์.
cluster ๊ด๋ฆฌ์๋ก ์ธ์ฆํฉ๋๋ค.
์ค๋ฉ ์์
์ ์ํํ๋ ค๋ฉด clusterAdmin
db.auth()
mongosh
๋ฉ์๋ username
๋๋password
, ๋ฐ ๋งค๊ฐ๋ณ์๊ฐ authenticationDatabase
์๋ ์ ์ธ์
์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ก ์ธ์ฆํฉ๋๋ค.
์ฐธ๊ณ
์ด๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ํด๋ฌ์คํฐ ๊ด๋ฆฌ์์ด๋ฉฐ, ์ค๋ ๋ก์ปฌ ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๊ฐ ์๋๋๋ค.
๋ฐธ๋ฐ์๋ฅผ ์์ํฉ๋๋ค.
๋ฐธ๋ฐ์๋ฅผ ์์ํฉ๋๋ค.
sh.startBalancer()
MongoDB 6.0.3๋ถํฐ ์๋ ์ฒญํฌ ๋ถํ ์ด ์ํ๋์ง ์์ต๋๋ค. ์ด๋ ๋ฐธ๋ฐ์ฑ ์ ์ฑ ๊ฐ์ ๋๋ฌธ์ ๋๋ค. ์๋ ๋ถํ ๋ช ๋ น์ด ์ฌ์ ํ ์กด์ฌํ์ง๋ง ์์ ์ ์ํํ์ง ์์ต๋๋ค.
MongoDB 6.0.3 ์ด์ ๋ฒ์ ์์ sh.startBalancer()
๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ํ ์๋ ๋ถํ ๋ ํ์ฑํํฉ๋๋ค.
sh.getBalancerState()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐธ๋ฐ์๊ฐ ์์๋์๋์ง ํ์ธํฉ๋๋ค.
cluster ๋ฐธ๋ฐ์์ ๋ํ ํํ ๋ฆฌ์ผ์ cluster ๋ฐธ๋ฐ์ managed ์์ ํ์ธํ์ธ์.
์ถ๊ฐ ์ฌ์ฉ์ ๋ง๋ค๊ธฐ(์ ํ ์ฌํญ).
ํด๋ผ์ด์ธํธ๊ฐ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ ์ฐ๊ฒฐํ๊ณ ์ก์ธ์ค ํ ์ ์๋๋ก ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค. ๋ฐ ์ read
๊ฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ด์ฅ ์ ๊ณต readWrite
์ญํ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ญํ ์ ์ฐธ์กฐํ์ธ์. ์ถ๊ฐ ๊ด๋ฆฌ ์ฌ์ฉ์๊ฐ ํ์ํ ์๋ ์์ต๋๋ค. ์ฌ์ฉ์์ ๋ํ ์์ธํ ๋ด์ฉ ์ ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์ ์ฌ์ฉ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ถ๊ฐ ์ฌ์ฉ์๋ฅผ ์์ฑํ๋ ค๋ฉด userAdminAnyDatabase
๋๋ userAdmin
์ญํ ์ ๊ฐ์ง ์ฌ์ฉ์๋ก ์ธ์ฆํด์ผ ํฉ๋๋ค.
x.509 ๋ด๋ถ ์ธ์ฆ
๋ด๋ถ ์ธ์ฆ์ x.509๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์์ฒด ๊ด๋ฆฌํ MongoDB์ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ x.509 ์ธ์ฆ์ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
ํค ํ์ผ ๋ด๋ถ ์ธ์ฆ ์์ x๋ก ์ ๊ทธ๋ ์ด๋ ํฉ๋๋ค.509 ๋ด๋ถ ์ธ์ฆ, ํค ํ์ผ ์ธ์ฆ์์ ์์ฒด ๊ด๋ฆฌํ MongoDB ๋ฅผ x๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.509 ์ธ์ฆ.