๐ŸŽฏ ์š”์•ฝ

๋‹จ๊ณ„๋‚ด์šฉ
1 (sudo -iu root ํ›„์—)
openssl rand -base64 756 > mongo-keyfile
2 chmod 600 & chown mongod
3 ๋ชจ๋“  ๋…ธ๋“œ /etc/mongo-keyfile๋กœ SCP
4 mongod.conf์— authorization + keyFile ์„ค์ •
5 replica set ๋กค๋ง ์žฌ์‹œ์ž‘
6 rs.status() ํ™•์ธ

3์„œ๋ฒ„์— ์™„์ „ํžˆ ๋™์ผํ•œ mongo-keyfile์ด ๋ณต์‚ฌ๋˜์–ด์•ผ ํ•จ

์ƒ์„ธ ์„ค๋ช…:
MongoDB Replica Set์—์„œ auth๋ฅผ ์ผœ๋ ค๋ฉด ๋…ธ๋“œ ๊ฐ„ ์ธ์ฆ์šฉ keyFile์„ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์„œ ๋ชจ๋“  ์„œ๋ฒ„์— ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
AWS EC2(๋ฆฌ๋ˆ…์Šค) ๊ธฐ์ค€์œผ๋กœ MongoDB 5.0.23์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ• ๊ฒŒ์š”.


๐Ÿ” Mongo KeyFile ์ƒ์„ฑ & ๋ฐฐํฌ ์ ˆ์ฐจ (EC2 / Linux)

๐Ÿ“Œ 1) EC2 ํ•œ ๋Œ€์—์„œ keyFile ์ƒ์„ฑ

์•„๋ž˜ ๋ช…๋ น์„ ์‹คํ–‰ (์ง€๊ธˆ ๋กœ๊ทธ์ธํ•œ ์„œ๋ฒ„ ์•„๋ฌด ๊ณณ์ด๋‚˜ ์ƒ๊ด€์—†์Œ):

 
openssl rand -base64 756 > mongo-keyfile
  • ํŒŒ์ผ ๊ธธ์ด๋Š” at least 32 bytes ํ•„์š”ํ•˜์ง€๋งŒ
    MongoDB ๊ถŒ์žฅ๊ฐ’์ธ 756 bytes ์‚ฌ์šฉ (5.x์—์„œ๋„ OK)
  • ํŒŒ์ผ ์ด๋ฆ„์€ ์•„๋ฌด๊ฑฐ๋‚˜ ๊ฐ€๋Šฅ (mongo-keyfile, rs.key, ๋“ฑ)

๐Ÿ“Œ 2) ๊ถŒํ•œ ์„ค์ • (๋ฐ˜๋“œ์‹œ 600)

MongoDB๋Š” keyFile ๊ถŒํ•œ์ด 600 ์•„๋‹ˆ๋ฉด ์‹คํ–‰ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

 
chmod 600 mongo-keyfile

(์†Œ์œ ์ž๋Š” MongoDB ์‚ฌ์šฉ์ž๋ฉด ๋” ์•ˆ์ „ํ•จ)

 
chown mongod:mongod mongo-keyfile # ์‹œ์Šคํ…œ๋งˆ๋‹ค mongod ๋˜๋Š” mongodb

๋งŒ์•ฝ MongoDB ํ”„๋กœ์„ธ์Šค๊ฐ€ mongod ์œ ์ €๊ฐ€ ์•„๋‹Œ root๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค๋ฉด
chown ํ•˜์ง€ ์•Š์•„๋„ ๋จ. (๊ถŒ์žฅ X → ๋˜๋„๋ก mongod ์œ ์ €๋กœ)


๐Ÿ“Œ 3) keyFile์„ Replica Set ๋ชจ๋“  ์„œ๋ฒ„์— ๋ณต์‚ฌ

๊ฐ EC2 ์ธ์Šคํ„ด์Šค์— SSH๋กœ ๋ณต์‚ฌ:

 
scp mongo-keyfile ec2-user@<SERVER1_IP>:/etc/ scp mongo-keyfile ec2-user@<SERVER2_IP>:/etc/ scp mongo-keyfile ec2-user@<SERVER3_IP>:/etc/

๊ทธ๋ฆฌ๊ณ  ๊ฐ ์„œ๋ฒ„์—์„œ ๋‹ค์‹œ ๊ถŒํ•œ ์žฌํ™•์ธ:

 
chmod 600 /etc/mongo-keyfile chown mongod:mongod /etc/mongo-keyfile

3๊ฐœ ๋…ธ๋“œ๊ฐ€ ์™„์ „ํžˆ ๋™์ผํ•œ keyFile์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ ˆ๋Œ€ ๊ฐ๊ฐ ์ƒ์„ฑํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ 4) mongod.conf ์ˆ˜์ • (๊ฐ ์„œ๋ฒ„ ๊ณตํ†ต)

/etc/mongod.conf ํŒŒ์ผ ํŽธ์ง‘:

 
security: authorization: enabled keyFile: /etc/mongo-keyfile

๋˜๋Š” ๊ธฐ์กด์— security: ๋ธ”๋ก์ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ํ†ตํ•ฉ:

 
security: authorization: enabled keyFile: /etc/mongo-keyfile

keyFile ์„ค์ • + authorization์„ ๊ฐ™์ด ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
keyFile๋งŒ ๋„ฃ๊ณ  auth ์•ˆ ๋„ฃ์œผ๋ฉด replica set ์ธ์ฆ๋งŒ ๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฌด์กฐ๊ฑด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ 5) ๋…ธ๋“œ๋ณ„ ๋กค๋ง ์žฌ์‹œ์ž‘

๊ฐ ์„œ๋ฒ„์—์„œ ํ•œ ๋Œ€์”ฉ ์ˆœ์„œ๋Œ€๋กœ:

 
sudo systemctl restart mongod

๐Ÿšจ ์ฃผ์˜

Primary๋ฅผ ๋งˆ์ง€๋ง‰์— ์žฌ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Secondary 2๋Œ€ → Primary ์ˆœ์„œ.

Primary ๋จผ์ € ๋„๋ฉด ๋‹ค์šดํƒ€์ž„ ๋ฐœ์ƒ.


๐Ÿ“Œ 6) ์ƒํƒœ ํ™•์ธ

Primary์— ์ ‘์†ํ•œ ํ›„:

 
rs.status()

์ •์ƒ replica set์ด๋ฉด OK.


๐Ÿง  ์ถ”๊ฐ€ Tip (AWS EC2 ์šด์˜ ์‹œ ์ถ”์ฒœ)

โœ” KeyFile ๋ณด์•ˆ์„ ์œ„ํ•ด ๊ถŒ์žฅ

 
chmod 400 /etc/mongo-keyfile

MongoDB๋Š” 600 ๋˜๋Š” 400 ๋ชจ๋‘ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

โœ” EC2 UserData๋กœ ์ž๋™ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ

  • Cloud-init์—์„œ keyFile copy ํ›„ chmod + chown ๋ฐ˜๋“œ์‹œ ์ ์šฉ

โœ” KeyFile Backup

  • keyFile์€ ๋ถ„์‹คํ•˜๋ฉด replica set์ด ์ ˆ๋Œ€๋กœ ๋ถ€ํ™œ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
  • ์•ˆ์ „ํ•œ S3/KMS ๋˜๋Š” Parameter Store์— ๋ฐฑ์—… ๊ถŒ์žฅ
Posted by yongary
,