๋ฌธ์„œ ๋ฉ”๋‰ด

๋ฌธ์„œ ํ™ˆ โ†’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ โ†’ MongoDB ๋งค๋‰ด์–ผ

Red Hat ๋˜๋Š” CentOS์— MongoDB Enterprise Edition ์„ค์น˜

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

  • ๊ฐœ์š”
  • ๊ณ ๋ ค ์‚ฌํ•ญ
  • MongoDB Enterprise Edition ์„ค์น˜
  • MongoDB Enterprise Edition ์‹คํ–‰
  • MongoDB ์ œ๊ฑฐ
  • ์ถ”๊ฐ€ ์ •๋ณด

์ฐธ๊ณ 

MongoDB Atlas

MongoDB Atlas ๋Š” ํด๋ผ์šฐ๋“œ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” MongoDB ์„œ๋น„์Šค ์˜ต์…˜์œผ๋กœ, ์„ค์น˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฌด๋ฃŒ ๊ณ„์ธต์„ ์ œ๊ณตํ•˜์—ฌ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์„ ์‚ฌ์šฉํ•˜์—ฌ MongoDB 5 ์„(๋ฅผ) ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Red Hat Enterprise Linux, CentOS Linux ๋˜๋Š” Oracle Linux [1] ์—์„œ yum ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 0 Enterprise Edition.

MongoDB Enterprise Edition ์€ ์ผ๋ถ€ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณด์•ˆ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” MongoDB 5.0 Enterprise Edition์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „์˜ MongoDB Enterprise๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ํŽ˜์ด์ง€ ์™ผ์ชฝ ์ƒ๋‹จ์˜ ๋ฒ„์ „ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ํ•ด๋‹น ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

์ฐธ๊ณ 

EOL ์•Œ๋ฆผ

  • MongoDB 5.0 Enterprise Edition์€ x86_64์—์„œRHEL / CentOS / Oracle 6์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • MongoDB Enterprise Edition์€ ๋ฒ„์ „ 4 ๊ฐ„์— RHEL 7 / CentOS / Oracle PPC64LE ์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.0 ๋ฐ 5.0. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜๋Š” 5 ์— ๋Œ€ํ•ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.0.X ๋ฒ„์ „.

MongoDB 5.0 Enterprise Edition์€ 64 x์—์„œ8664Red Hat Enterprise Linux(RHEL), CentOS Linux, Oracle Linux [1] , Rocky Linux ๋ฐ [2] ์˜ ๋น„ํŠธ ๋ฒ„์ „์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. _ ์•„ํ‚คํ…์ฒ˜:

  • RHEL / CentOS / Oracle / Rocky / Alma 8

  • RHEL / CentOS / Oracle 7

MongoDB๋Š” ์ด๋Ÿฌํ•œ ํ”Œ๋žซํผ์˜ 64๋น„ํŠธ ๋ฒ„์ „๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

MongoDB 5. RHEL /CentOS/Oracle/Rocky/Alma Linux์˜ 0 Enterprise Edition์€ ์ผ๋ถ€ ํ”Œ๋žซํผ์—์„œ ARM64 ์•„ํ‚คํ…์ฒ˜๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ์ •๋ณด๋Š” ํ”Œ๋žซํผ ์ง€์›์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[1](1, 2) MongoDB๋Š” Red Hat ํ˜ธํ™˜ ์ปค๋„(RHCK)์„ ์‹คํ–‰ํ•˜๋Š” Oracle Linux๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. MongoDB๋Š” UEK(Unbreakable Enterprise Kernel)๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .
[2] RHEL ๋ฒ„์ „ 8.0 ์ด์ƒ์„ ์ง€์›ํ•˜๋„๋ก ์ถœ์‹œ๋œ MongoDB ์˜จํ”„๋ ˆ๋ฏธ์Šค ์ œํ’ˆ์€ ํ•ด๋‹น ๋ฐฐํฌํŒ์ด ์™„์ „ํ•œ RHEL ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•  ์˜๋ฌด๋ฅผ ์ถฉ์กฑํ•˜๋Š” ๊ฒฝ์šฐ Rocky Linux ๋ฒ„์ „ 8.0 ์ด์ƒ๊ณผ AlmaLinux ๋ฒ„์ „ 8.0 ์ด์ƒ์„ ํ˜ธํ™˜ ๋ฐ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ MongoDB ๋ฐฐํฌ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๊ณ ๋ ค ์‚ฌํ•ญ๊ณผ ๊ตฌ์„ฑ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๋•์…˜ ๋…ธํŠธ ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•œ ์ดํ›„์— ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— MongoDB๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ yum ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MongoDB Enterprise Edition์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

1

yum๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MongoDB Enterprise๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๋ ค๋ฉด /etc/yum.repos.d/mongodb-enterprise-5.0.repo ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ด์ „์— MongoDB๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์—์„œ mongodb-enterprise.repo ํŒŒ์ผ์ด ์ด ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. MongoDB 5.0์„ ์„ค์น˜ํ•˜๋ ค๋ฉด ์œ„์˜ mongodb-enterprise-5.0.repo ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MongoDB ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์—์„œ .rpm ํŒŒ์ผ์„ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ๋Š” Red Hat/CentOS ๋ฒ„์ „(์˜ˆ: 8), MongoDB ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „ (์˜ˆ: 5.0), ์•„ํ‚คํ…์ฒ˜(์˜ˆ: x86_64) ์ˆœ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

2

๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

sudo yum install -y mongodb-enterprise

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

sudo yum install -y mongodb-enterprise-5.0.26 mongodb-enterprise-database-5.0.26 mongodb-enterprise-server-5.0.26 mongodb-enterprise-shell-5.0.26 mongodb-enterprise-mongos-5.0.26 mongodb-enterprise-tools-5.0.26

mongodb-enterprise=5.0.26๋งŒ ์„ค์น˜ํ•˜๊ณ  ๊ตฌ์„ฑ ์š”์†Œ ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉด ์ง€์ •ํ•œ ๋ฒ„์ „์— ๊ด€๊ณ„์—†์ด ๊ฐ MongoDB ํŒจํ‚ค์ง€์˜ ์ตœ์‹  ๋ฒ„์ „์ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

์ด์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  MongoDB ๋ฒ„์ „์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ yum์ด ํŒจํ‚ค์ง€๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ์˜๋„ํ•˜์ง€ ์•Š์€ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด /etc/yum.conf ํŒŒ์ผ์— ๋‹ค์Œ exclude ์ง€์‹œ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค.

exclude=mongodb-enterprise,mongodb-enterprise-database,mongodb-enterprise-server,mongodb-enterprise-shell,mongodb-enterprise-mongos,mongodb-enterprise-tools

Unix ๊ณ„์—ด ์šด์˜ ์ฒด์ œ๋Š” ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œํ•œ์€ MongoDB ์ž‘๋™์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์— ๊ถŒ์žฅ๋˜๋Š” ์„ค์ •์— ๊ด€ํ•œ ๋‚ด์šฉ์€ UNIX ulimit ์„ค์ •์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์—ด๋ฆฐ ํŒŒ์ผ ์ˆ˜์— ๋Œ€ํ•œ ulimit ๊ฐ’์ด 64000 ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ MongoDB๋Š” ์‹œ์ž‘ ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ MongoDB๋Š” mongod ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜๋ฉฐ ๋‹ค์Œ ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • /var/lib/mongo (๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ)

  • /var/log/mongodb (๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ)

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋Š” ์„ค์น˜ ๊ณผ์ •์—์„œ ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์†Œ์œ ์ž ๋ฐ ๊ทธ๋ฃน ์ด๋ฆ„์€ mongod์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ์ด์™ธ์˜ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  2. ๊ตฌ์„ฑ ํŒŒ์ผ /etc/mongod.conf๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

    • storage.dbPath๋กœ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ ์ง€์ •(์˜ˆ: /some/data/directory)

    • systemLog.path๋กœ ์ƒˆ๋กœ์šด ๋กœ๊ทธ ํŒŒ์ผ ๊ฒฝ๋กœ ์ง€์ •(์˜ˆ: /some/log/directory/mongod.log)

  3. MongoDB๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    sudo chown -R mongod:mongod <directory>

    MongoDB ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋””๋ ‰ํ† ๋ฆฌ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  4. SELinux๊ฐ€ ์ ์šฉ๋˜์–ด ์žˆ๋‹ค๋ฉด, SELinux๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SELinux ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ค‘์š”

SELinux๊ฐ€ enforcing ๋ชจ๋“œ์ธ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ •์ฑ… ์กฐ์ •์„ ํ†ตํ•ด MongoDB์— ๋Œ€ํ•œ SELinux ์ •์ฑ…์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ SELinux ์ •์ฑ…์€ MongoDB ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ /sys/fs/cgroup์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.enforcing ๋ชจ๋“œ์—์„œ SELinux๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด SELinux ์ •์ฑ…์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์‹œ์Šคํ…œ์— checkpolicy ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

    sudo yum install checkpolicy
  2. ์‚ฌ์šฉ์ž ์ง€์ • ์ •์ฑ… ํŒŒ์ผ mongodb_cgroup_memory.te์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    cat > mongodb_cgroup_memory.te <<EOF
    module mongodb_cgroup_memory 1.0;
    require {
    type cgroup_t;
    type mongod_t;
    class dir search;
    class file { getattr open read };
    }
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir search;
    allow mongod_t cgroup_t:file { getattr open read };
    EOF
  3. ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ์ •์ฑ… ๋ชจ๋“ˆ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
    semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
    sudo semodule -i mongodb_cgroup_memory.pp

์ด์ œ SELinux๋ฅผ enforcing ๋กœ ์„ค์ •ํ•˜์—ฌ MongoDB ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ SELinux ์ •์ฑ…์€ MongoDB ํ”„๋กœ์„ธ์Šค๊ฐ€ FTDC (ํ’€ํƒ€์ž„ ์ง„๋‹จ ๋ฐ์ดํ„ฐ ์บก์ฒ˜)์— ํ•„์š”ํ•œ /proc/net/netstat์„ ์—ด๊ณ  ์ฝ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.enforcing ๋ชจ๋“œ์—์„œ SELinux๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด SELinux ์ •์ฑ…์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์‹œ์Šคํ…œ์— checkpolicy ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

    sudo yum install checkpolicy
  2. ์‚ฌ์šฉ์ž ์ง€์ • ์ •์ฑ… ํŒŒ์ผ mongodb_proc_net.te์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    cat > mongodb_proc_net.te <<EOF
    module mongodb_proc_net 1.0;
    require {
    type cgroup_t;
    type configfs_t;
    type file_type;
    type mongod_t;
    type proc_net_t;
    type sysctl_fs_t;
    type var_lib_nfs_t;
    class dir { search getattr };
    class file { getattr open read };
    }
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir { search getattr } ;
    allow mongod_t cgroup_t:file { getattr open read };
    allow mongod_t configfs_t:dir getattr;
    allow mongod_t file_type:dir { getattr search };
    allow mongod_t file_type:file getattr;
    allow mongod_t proc_net_t:file { open read };
    allow mongod_t sysctl_fs_t:dir search;
    allow mongod_t var_lib_nfs_t:dir search;
    EOF
  3. ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€์ • ์ •์ฑ… ๋ชจ๋“ˆ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te
    semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod
    sudo semodule -i mongodb_proc_net.pp

์ค‘์š”

์œ„์˜ ๋‚ด์šฉ ์™ธ์—๋„ SELinux๊ฐ€ enforcing ๋ชจ๋“œ์ธ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— SELinux ์ •์ฑ…์„ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉ์ž ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • RHEL ์—์„œ ๊ธฐ๋ณธ๊ฐ’ pidFilePath, systemLog.path๋˜๋Š” dbPath ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์‚ฌ์šฉ์ž ์ง€์ • ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  7 ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ0 ๋ฐ/๋˜๋Š”

  • ๊ธฐ๋ณธ MongoDB ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์‚ฌ์šฉ์ž ์ง€์ • ํฌํŠธ ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. mongod ์„œ๋น„์Šค๊ฐ€ ์ƒˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก SELinux ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.

    sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*>

    ์—ฌ๊ธฐ์„œ ๋‹ค์Œ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๋ฅผ ์ ์ ˆํžˆ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    • mongod_var_lib_t ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ

    • mongod_log_t ๋กœ๊ทธ ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ

    • mongod_var_run_t pid ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ

    ์ฐธ๊ณ 

    ๋””๋ ‰ํ† ๋ฆฌ ๋์— .* ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”.

  2. ์ƒˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ SELinux ์‚ฌ์šฉ์ž ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.

    sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory>

    ์—ฌ๊ธฐ์„œ ๋‹ค์Œ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๋ฅผ ์ ์ ˆํžˆ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    • mongod_var_lib_t ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ

    • mongod_log_t ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ

    • mongod_var_run_t pid ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ

  3. ์—…๋ฐ์ดํŠธ๋œ SELinux ์ •์ฑ…์„ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

    sudo restorecon -R -v </some/MongoDB/directory>

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

ํŒ

semanage fcontext ์ž‘์—…์˜ ๊ฒฝ์šฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋์— .*๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จ์‹œํ‚ค์„ธ์š”.

  • /mongodb/data์˜ ๊ธฐ๋ณธ์ด ์•„๋‹Œ MongoDB ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

    sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*'
    sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data'
    sudo restorecon -R -v '/mongodb/data'
  • ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹Œ /mongodb/log์˜ MongoDB ๋กœ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ (์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ /mongodb/log/mongod.log์ธ ๊ฒฝ์šฐ):

    sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*'
    sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log'
    sudo restorecon -R -v '/mongodb/log'
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>

์ฐธ๊ณ 

์‚ฌ์šฉ์ž ์ง€์ • ํฌํŠธ๊ฐ€ ์ธ์‹๋˜๋„๋ก ํ•˜๋ ค๋ฉด mongod ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ์—์„œ MongoDB Enterprise ์—๋””์…˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ง€์นจ์€ ๊ธฐ๋ณธ ์„ค์ •์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

init ์‹œ์Šคํ…œ

mongod์„ ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์šด์˜ ์ฒด์ œ์— ๋‚ด์žฅ๋œ init ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ Linux๋Š” systemctl ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” systemd๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด, ๊ตฌ๋ฒ„์ „์€ service ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” System V init๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•˜๋Š” init ์‹œ์Šคํ…œ์„ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ps --no-headers -o comm 1

์ดํ›„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์•„๋ž˜์—์„œ ์ ์ ˆํ•œ ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • systemd - ์•„๋ž˜์˜ systemd(systemctl) ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • init - ์•„๋ž˜์˜ System V Init(์„œ๋น„์Šค) ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.


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

๊ฒฝ๊ณ 

์ด ํ”„๋กœ์„ธ์Šค๋Š” MongoDB์™€ ๊ทธ ๊ตฌ์„ฑ, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ชจ๋“  ๊ตฌ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ์˜ ๋ฐฑ์—… ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ ์ดํ›„์— ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1

๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ mongod ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

sudo service mongod stop
2

์ด์ „์— ์„ค์น˜ํ•œ MongoDB ํŒจํ‚ค์ง€๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

sudo yum erase $(rpm -qa | grep mongodb-enterprise)
3

MongoDB database ๋ฐ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo

๊ธฐ๋ณธ์ ์œผ๋กœ MongoDB๋Š” bindIp๋ฅผ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฐ”์ธ๋”ฉ๋œ 127.0.0.1๋กœ ์„ค์ •ํ•œ ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ mongod๊ฐ€ ๋™์ผํ•œ ๋จธ์‹ ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ๋งŒ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ๋Š” mongod์•  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ด ๊ฐ’์ด ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํšจํ•œ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์€ ํ•œ mongod๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ’์€ ๋‹ค์Œ ์ค‘ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MongoDB ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ bindIp๋ฅผ ํ†ตํ•ด

  • ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด --bind_ip

๊ฒฝ๊ณ 

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

bindIp ๊ตฌ์„ฑ์— ๊ด€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” IP ๋ฐ”์ธ๋”ฉ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB Enterprise Edition์€ ์ „์šฉ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณต์‹ ์ง€์› ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ์ด๋ฆ„
์„ค๋ช…
mongodb-enterprise
metapackage๋Š” ์•„๋ž˜ ๋‚˜์—ด๋œ ๊ตฌ์„ฑ์š”์†Œ ํŒจํ‚ค์ง€๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
mongodb-enterprise-database

metapackage๋Š” ์•„๋ž˜ ๋‚˜์—ด๋œ ๊ตฌ์„ฑ์š”์†Œ ํŒจํ‚ค์ง€๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ์ด๋ฆ„
์„ค๋ช…
mongodb-enterprise-server
mongod ๋ฐ๋ชฌ๊ณผ ๊ด€๋ จ ๊ตฌ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
mongodb-enterprise-mongos
mongos ๋””๋จผ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
mongodb-enterprise-shell
mongo ์…ธ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
mongodb-enterprise-cryptd
mongocryptd ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
mongodb-mongosh
MongoDB Shell(mongosh)์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
mongodb-enterprise-tools

metapackage๋Š” ์•„๋ž˜ ๋‚˜์—ด๋œ ๊ตฌ์„ฑ ์š”์†Œ ํŒจํ‚ค์ง€๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ์ด๋ฆ„
์„ค๋ช…
mongodb-database-tools

๋‹ค์Œ MongoDB database ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

mongodb-enterprise-database-tools-extra

๋‹ค์Œ๊ณผ ๊ฐ™์€ MongoDB ์ง€์› ๋„๊ตฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โ†ย Linux์— MongoDB Enterprise ์„ค์น˜