ํผํฌ๋จผ์Šค ์˜ค์ผ€์ŠคํŠธ๋ผ

์ตœ๊ณ ์˜ ๋‚จ์ž๋ผ๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ ๊ฒƒ์ด๋‹ค.
๊ณ ๋‚œ์„ ํ†ตํ•ด ๊ธฐ์จ์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค.
๋ฃจํŠธ๋น„ํžˆ ํŒ ๋ฒ ํ† ๋ฒค

ํผํฌ๋จผ์Šค ์˜ค์ผ€์ŠคํŠธ๋ผ

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

์šฐ๋ฆฌ ํŒ€์— ์ง€ํœ˜์ž๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ง€ํœ˜์ž๋Š” ๋ˆ„๊ตฌ์ž…๋‹ˆ๊นŒ? fr์—์„œ. diriger - ์Œ์•…์˜ ์„ธ๊ณ„์—์„œ ๊ด€๋ฆฌํ•˜๊ณ , ์ง€ํœ˜ํ•˜๊ณ , ์ด๋„๋Š” - ์•™์ƒ๋ธ” ์Œ์•…์˜ ํ•™์Šต๊ณผ ์—ฐ์ฃผ๋ฅผ ์ฃผ๋„ํ•˜๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด ์ž๋ฆฌ๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฐ ์ž๋™ํ™” ์‹œ์Šคํ…œ์ด ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์˜ ์—ญํ• ์€ ์Œ์•… ์ง€ํœ˜์ž์˜ ์—ญํ• ๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํŒ€์„ ๋•๊ณ , ์—ฐ๊ทน์„ ์•ˆ๋‚ดํ•˜๊ณ  ์กฐ์งํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ํŒ€์—๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํŠน์ • ์šฉ๋Ÿ‰(์„œ๋ฒ„๋ผ๊ณ  ๋ถ€๋ฅด์ž)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์„œ๋ฒ„๋ฅผ ํ™•๋ณดํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ:

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

์šฐ๋ฆฌ ํŒ€์€ OS ์—…๋ฐ์ดํŠธ, ์ƒˆ ํŒจํ‚ค์ง€ ์„ค์น˜ ๋“ฑ ์ง€์›์ด ํ•„์š”ํ•œ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์œ ํ˜•์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํƒฑํฌ ๊ทธ๋ฃน,
  • ์„œ๋น„์Šค ๊ทธ๋ฃน.

ํƒฑํฌ ๊ทธ๋ฃน์€ Yandex.Tank๊ฐ€ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ทธ๋ฃน์—๋Š” ์œ ์ง€ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ ์ง€์›, ์ž๋™ ๋ณด๊ณ ์„œ ์ƒ์„ฑ ๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์–ด๋А ์ˆœ๊ฐ„ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋ถˆํŽธํ•ด์กŒ๊ณ , ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„ '๋กœ๋”ฉ'๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋‚ด๋ถ€ ์„œ๋น„์Šค์˜ ๊ฐœ๋ฐœ, ์ถœ์‹œ, ์ถœ์‹œ๊นŒ์ง€ ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค์ผ€์ŠคํŠธ๋ผ ์ž์ฒด๋Š” ์—ฐ์ฃผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ ์ง€ํœ˜์ž๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?

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

ํšŒ์‚ฌ์—์„œ๋Š” Ansible์„ ์‚ฌ์šฉํ•œ ์ž‘์—…์ด ์˜ค๋žซ๋™์•ˆ ๊ตฌ์„ฑ ๋ฐ ๊ทœ์ œ๋˜์–ด ์™”๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ ์†”๋ฃจ์…˜์„ ์ด ํ”„๋กœ์„ธ์Šค์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ˜ธ์ŠคํŠธ ํ’€์€ ์„ธ ๊ฐ€์ง€ Ansible ์—ญํ• ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์—ญํ• ์€ OS๋ฅผ ์„ค์น˜ํ•˜๊ณ ,
  • ๋‘ ๋ฒˆ์งธ๋Š” ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์„ค์ •์ธ LDAP ์ธ์ฆ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ์„ธ ๋ฒˆ์งธ๋Š” Yandex.Tank ๋ฐ ๊ด€๋ จ ์ข…์†์„ฑ์„ Docker ์ปจํ…Œ์ด๋„ˆ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ž‘์—…์—์„œ๋Š” Kotlin๊ณผ Python์„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  Golang์„ ์กฐ๊ธˆ ๋” ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ์— ํŒจํ‚ค์ง•ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋™์‹œ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๊ท ์ผํ•œ ์ „๋‹ฌ ํ˜•์‹์„ ๊ทœ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker์˜ ipv6์— ๋Œ€ํ•œ ์ž‘์€ ์ฐธ๊ณ  ์‚ฌํ•ญ

์šฐ๋ฆฌ๊ฐ€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์ผ๋ถ€ ์„œ๋น„์Šค๋Š” ipv6์„ ํ†ตํ•ด์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ปจํ…Œ์ด๋„ˆ์šฉ ipv6์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณต์‹ Docker ์›น์‚ฌ์ดํŠธ์˜ ipv6 ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ipv6์€ daemon.json์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

์ด ๊ฒฝ์šฐ ๊ณต๊ธ‰์ž๋Š” ๊ท€ํ•˜๊ฐ€ ๋“ฑ๋กํ•  ipv6 ์„œ๋ธŒ๋„ท์„ ๋ฐœ๊ธ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. fixed-cidr-v6.
๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์˜ต์…˜์ธ ipv6 NAT๋ฅผ ์„ ํƒํ–ˆ์œผ๋ฉฐ ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ด์ œ ๋„์ปค ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค ipv6์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ์ „์—ญ์ ์œผ๋กœ ๋ผ์šฐํŒ… ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ถ”๊ฐ€ ํ•„ํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ชจ๋“  ํฌํŠธ(๊ฒŒ์‹œ๋˜์ง€ ์•Š์€ ํฌํŠธ๋„ ํฌํ•จ)๊ฐ€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋…ธ์ถœ๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  • ๊ฒŒ์‹œ ํฌํŠธ๋ฅผ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์˜์—ญ ํ”„๋ก์‹œ, ipv4 ์ „์šฉ iptables.

IPv6 NAT๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ, ์ด๋Š” ์ž์ฒด์ ์œผ๋กœ ip6tables์˜ ๊ทœ์น™์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๊ทœ์น™์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

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

2019/01/22 14:59:54 running [/sbin/ip6tables -t filter -N DOCKER --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directory
ip6tables v1.6.2: can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)

modprobe ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ Ansible ์—ญํ• ์— ์ดˆ๊ธฐํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  lineinfile์„ ์‚ฌ์šฉํ•˜์—ฌ OS ์‹œ์ž‘ ์‹œ ์ด๋ฅผ ๋กœ๋“œํ•œ ํ›„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

- name: Add ip6table_nat module
 modprobe:
   name: ip6table_nat
   state: present
- name: Add ip6table_nat to boot
 lineinfile:
   path: /etc/modules
   line: 'ip6table_nat'

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ํ—ˆ๋ธŒ์— ์ข‹์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค ๊ธฐ์‚ฌ, docker์—์„œ ipv6์„ ์‹คํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ฒ˜์Œ์— ํ–ˆ๋˜ ์งˆ๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์˜ค์ผ€์ŠคํŠธ๋ผ ์ž์ฒด๋Š” ์—ฐ์ฃผํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ ์ง€ํœ˜์ž๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?

์ด์ œ ๋ชจ๋‘๊ฐ€ ์šฐ๋ฆฌ ํŒ€์—์„œ ํ”Œ๋ ˆ์ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

ํ•ฉ๋ฆฌ์ ์ธ ์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค. Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์„œ๋น„์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์ด๊ณ  ์ž๋™์œผ๋กœ ๋ฐฐํฌ, ์—…๋ฐ์ดํŠธ ๋ฐ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

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

์ตœ์†Œํ•œ์˜ ํˆฌ์ž๋กœ ์ข‹์€ ์ง€ํœ˜์ž๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด๋ผ๋Š” ์ฃผ์ œ๋Š” ์‹œ์žฅ์—์„œ ๊ฝค ์ž˜ ๋ฐœ๋‹ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋จผ์ € ์ง€ํœ˜์ž์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ณด์กฐ ๋„๊ตฌ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜์‚ฌ - ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ:

  • ์„œ๋น„์Šค ๋ฐœ๊ฒฌ,
  • ๋ถ„์‚ฐ๋œ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ.

์šฐ๋ฆฌ ์˜ค์ผ€์ŠคํŠธ๋ผ์—์„œ๋Š” Consul์ด ์„œ๋น„์Šค ๋“ฑ๋ก ๋ฐ ๊ตฌ์„ฑ ์ €์žฅ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋“ฑ๋ก ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํ™œ์„ฑ์€ ์„œ๋น„์Šค๊ฐ€ HTTP API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด์ ์œผ๋กœ ๋“ฑ๋ก๋˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • ์ˆ˜๋™ - ์„œ๋น„์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Vault๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ธ์ฆ์„œ ๋“ฑ ๋น„๋ฐ€์˜ ๋ณด์•ˆ ์ €์žฅ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ‘œ์ค€ํ™”ํ•˜๊ณ  ํ†ตํ•ฉํ•˜๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • HTTP API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€์„ ์ƒ์„ฑ ๋ฐ ์ €์žฅํ•˜๊ณ  ๋น„๋ฐ€์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋‹จ์ผ ์„ผํ„ฐ์ž…๋‹ˆ๋‹ค.
  • Transit Secrets Engine - ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์•”ํ˜ธํ™” ๋ฐ ํ•ด๋…ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ๋˜์ง€ ์•Š์€ ํ†ต์‹  ์ฑ„๋„์„ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • ๊ตฌ์„ฑํ•˜๊ธฐ ์‰ฌ์šด ์•ก์„ธ์Šค ์ •์ฑ….
  • ๋น„๋ฐ€์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ฐ์‚ฌ.
  • ์ธํ”„๋ผ ๋‚ด์—์„œ ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฒด CA(์ธ์ฆ ๊ธฐ๊ด€)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ.

๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•  ๋•Œ ์ง€ํœ˜์ž์˜ ์—ญํ• ์—๋Š” Kubernetes์™€ Nomad๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์ ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes

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

์œ ๋ชฉ๋ฏผ

์ˆ˜๋‹จ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์˜์‚ฌ ๋ฐ ๊ธˆ๊ณ ๋กœ ์œ ๋ช…ํ•œ HashiCorp ํšŒ์‚ฌ์˜ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค.

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

ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…:

  • Consul ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์ค€๋น„๋œ ์„œ๋ฒ„,
  • nomad ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์€ Consul์— ์ž…๋ ฅ๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด nomad๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
  • ๋™์‹œ์— ๋น„๋ฐ€์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ €์žฅ์†Œ๋ฅผ ์„ค์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋ธ”๋กœ๊ทธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์—ฐ๋ฝ์„ ์œ ์ง€ํ•˜์„ธ์š”. ๊ฒฐ๊ตญ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋…ธ๋งˆ๋“œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ณง ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์•„๋Š‘ํ•œ ๊ณณ์œผ๋กœ ์˜ค์„ธ์š” ์ „๋ณด ์ฑ„ํŒ…์—์„œ๋Š” ์–ธ์ œ๋“ ์ง€ ์กฐ์–ธ์„ ๊ตฌํ•˜๊ณ , ๋™๋ฃŒ๋ฅผ ๋•๊ณ , ์ƒ์‚ฐ์„ฑ ์—ฐ๊ตฌ ๋“ฑ์— ๊ด€ํ•ด ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster