Linux conntrack์ด ๋” ์ด์ƒ ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

Linux conntrack์ด ๋” ์ด์ƒ ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

์—ฐ๊ฒฐ ์ถ”์ (โ€œconntrackโ€)์€ Linux ์ปค๋„ ๋„คํŠธ์›Œํ‚น ์Šคํƒ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ปค๋„์€ ๋ชจ๋“  ๋…ผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋˜๋Š” ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ณ  ๊ฐ ํ๋ฆ„์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ํŒจํ‚ท์„ ์‹๋ณ„ํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Conntrack์€ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ์ปค๋„ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  • NAT๋Š” conntrack์˜ ์ •๋ณด์— ์˜์กดํ•˜๋ฏ€๋กœ ๋™์ผํ•œ ์ŠคํŠธ๋ฆผ์˜ ๋ชจ๋“  ํŒจํ‚ท์„ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋“œ๊ฐ€ Kubernetes ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋ฉด kube-proxy ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” NAT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ํŠน์ • ํฌ๋“œ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Conntrack์€ ํŠน์ • ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด IP ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ํŒจํ‚ท์ด ๋™์ผํ•œ ํฌ๋“œ๋กœ ์ „์†ก๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋ฐฑ์—”๋“œ ํฌ๋“œ์—์„œ ๋ฐ˜ํ™˜๋œ ํŒจํ‚ท์€ ์š”์ฒญ์ด ๋ฐœ์ƒํ•œ ํฌ๋“œ๋กœ ๋‹ค์‹œ NAT ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • Calico์™€ ๊ฐ™์€ ์ƒํƒœ ์ €์žฅ ๋ฐฉํ™”๋ฒฝ์€ connecttrack์˜ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "์‘๋‹ต" ํŠธ๋ž˜ํ”ฝ์„ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์‘๋‹ต ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋Š” ์ •์ฑ…์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ "๋‚ด ํฌ๋“œ๊ฐ€ ๋ชจ๋“  ์›๊ฒฉ IP ์ฃผ์†Œ์— ์—ฐ๊ฒฐํ•˜๋„๋ก ํ—ˆ์šฉ"ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด๊ฒƒ์ด ์—†์œผ๋ฉด ํ›จ์”ฌ ๋œ ์•ˆ์ „ํ•œ "๋ชจ๋“  IP์—์„œ ๋‚ด ํฌ๋“œ๋กœ์˜ ํŒจํ‚ท ํ—ˆ์šฉ" ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

๋˜ํ•œ conntrack์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ŠคํŠธ๋ฆผ์˜ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท๋งŒ ์ „์†กํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค(CPU ์†Œ๋น„ ๋ฐ ํŒจํ‚ท ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ฐ์†Œ).
์ „์ฒด ๋„คํŠธ์›Œํฌ ์Šคํƒ์„ ์‚ดํŽด๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๋ฌผ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค "kube-proxy ๋ชจ๋“œ ๋น„๊ต" ์ž‘๋™ ๋ฐฉ์‹์˜ ์˜ˆ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๊ทธ๋Ÿฌ๋‚˜ conntrack์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋””์„œ ์ž˜๋ชป ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

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

  • ๊ฐ€์žฅ ํ™•์‹คํ•œ ๊ฒฝ์šฐ๋Š” ์„œ๋ฒ„๊ฐ€ ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ๋™์‹œ ํ™œ์„ฑ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, conntrack ํ…Œ์ด๋ธ”์ด 128๊ฐœ ํ•ญ๋ชฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ ๋™์‹œ ์—ฐ๊ฒฐ์ด 128๊ฐœ๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค๋ฉด ๋ถ„๋ช…ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!
  • ์•ฝ๊ฐ„ ๋œ ๋ถ„๋ช…ํ•œ ๊ฒฝ์šฐ: ์„œ๋ฒ„๊ฐ€ ์ดˆ๋‹น ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์ด ์ผ์‹œ์ ์ด๋”๋ผ๋„ ์ผ์ • ๊ธฐ๊ฐ„(๊ธฐ๋ณธ์ ์œผ๋กœ 120์ดˆ) ๋™์•ˆ Linux์—์„œ ๊ณ„์† ๋ชจ๋‹ˆํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, conntrack ํ…Œ์ด๋ธ”์ด 128๊ฐœ ํ•ญ๋ชฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ์ดˆ๋‹น 1100๊ฐœ์˜ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—ฐ๊ฒฐ์ด ๋งค์šฐ ์งง์€ ๊ฒฝ์šฐ์—๋„(128k/120s = 1092๊ฐœ ์—ฐ๊ฒฐ/) conntrack ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์—์Šค).

์ด๋Ÿฌํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ํ‹ˆ์ƒˆ ์œ ํ˜•์˜ ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์•…์˜์ ์ธ ํ–‰์œ„์ž๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์„œ๋ฒ„์˜ conntrack ํ…Œ์ด๋ธ”์„ ๋ฐ˜์ฏค ์—ด๋ฆฐ ์—ฐ๊ฒฐ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์€ ์„œ๋น„์Šค ๊ฑฐ๋ถ€(DOS) ๊ณต๊ฒฉ์˜ ์ผ๋ถ€๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ conntrack์€ ์‹œ์Šคํ…œ์˜ ์ œํ•œ์ ์ธ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ conntrack ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์ค„์ž„์œผ๋กœ์จ conntrack ํ…Œ์ด๋ธ” ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ž˜๋ชปํ•˜๋ฉด ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๊ณต๊ฒฉ์ ์ธ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด conntrack์„ ์šฐํšŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์˜ˆ

๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ˜‘๋ ฅํ•œ ํ•œ ๋Œ€ํ˜• SaaS ์ œ๊ณต์—…์ฒด๋Š” ํ˜ธ์ŠคํŠธ(๊ฐ€์ƒ ๋จธ์‹  ์•„๋‹˜)์— ๋‹ค์ˆ˜์˜ memcached ์„œ๋ฒ„๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์—ˆ์œผ๋ฉฐ ๊ฐ ์„œ๋ฒ„๋Š” ์ดˆ๋‹น 50๊ฐœ ์ด์ƒ์˜ ๋‹จ๊ธฐ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ conntrack ๊ตฌ์„ฑ์„ ์‹คํ—˜ํ•˜์—ฌ ํ…Œ์ด๋ธ” ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์ถ”์  ์‹œ๊ฐ„์„ ์ค„์˜€์ง€๋งŒ ๊ตฌ์„ฑ์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์—ˆ๊ณ  RAM ์†Œ๋น„๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์œผ๋ฉฐ(GBytes ์ •๋„!) ์—ฐ๊ฒฐ์ด ๋„ˆ๋ฌด ์งง์•„์„œ conntrack์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์„ฑ๋Šฅ ์ด์ (CPU ์†Œ๋น„ ๋˜๋Š” ํŒจํ‚ท ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ฐ์†Œ)์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๋Œ€์•ˆ์œผ๋กœ Calico๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. Calico ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์œ ํ˜•์˜ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด conntrack์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(doNotTrack ์ •์ฑ… ์˜ต์…˜ ์‚ฌ์šฉ). ์ด๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ์„ฑ๋Šฅ ์ˆ˜์ค€๊ณผ Calico๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ถ”๊ฐ€ ๋ณด์•ˆ ์ˆ˜์ค€์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

conntrack์„ ์šฐํšŒํ•˜๋ ค๋ฉด ์–ด๋Š ์ •๋„๊นŒ์ง€ ๊ฐ€์•ผ ํ•ฉ๋‹ˆ๊นŒ?

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

ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์ž

์ดˆ๋‹น ๋งค์šฐ ๋งŽ์€ ์ˆ˜์˜ ์—ฐ๊ฒฐ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก Memcached ์„œ๋ฒ„์™€ ์›๊ฒฉ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ Memcached ํด๋ผ์ด์–ธํŠธ ํฌ๋“œ๊ฐ€ ์žˆ๋Š” ๋‹จ์ผ ํฌ๋“œ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. memcached ์„œ๋ฒ„ ํฌ๋“œ๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„์—๋Š” conntrack ํ…Œ์ด๋ธ”(ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ๋œ ํ‘œ์ค€ ํ…Œ์ด๋ธ” ํฌ๊ธฐ)์— 8๊ฐœ์˜ ์ฝ”์–ด์™€ 512k ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ์‚ฌ์ด์˜ ์„ฑ๋Šฅ ์ฐจ์ด๋ฅผ ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์—†์Œ; ์ผ๋ฐ˜ Calico ์ •์ฑ…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Calico ์ถ”์  ๊ธˆ์ง€ ์ •์ฑ….

์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ดˆ๋‹น 4.000๊ฐœ๋กœ ์„ค์ •ํ•˜์—ฌ CPU ์†Œ๋น„์˜ ์ฐจ์ด์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ •์ฑ… ์—†์Œ๊ณผ ์ผ๋ฐ˜ ์ •์ฑ… ์‚ฌ์ด์—๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์—†์—ˆ์ง€๋งŒ ์ถ”์ ํ•˜์ง€ ์•Š์Œ์œผ๋กœ ์ธํ•ด CPU ์†Œ๋น„๊ฐ€ ์•ฝ 20% ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

Linux conntrack์ด ๋” ์ด์ƒ ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

๋‘ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋งŽ์€ ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•˜๊ณ  memcached ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ดˆ๋‹น ์ตœ๋Œ€ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒํ•œ ๋Œ€๋กœ "์ •์ฑ… ์—†์Œ" ๋ฐ "์ผ๋ฐ˜ ์ •์ฑ…" ์‚ฌ๋ก€ ๋ชจ๋‘ ์ดˆ๋‹น 4,000๊ฐœ ์ด์ƒ์˜ ์—ฐ๊ฒฐ ์ œํ•œ(512k/120s = 4,369๊ฐœ ์—ฐ๊ฒฐ/์ดˆ)์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”์  ๊ธˆ์ง€ ์ •์ฑ…์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ ์—†์ด ์ดˆ๋‹น 60,000๊ฐœ์˜ ์—ฐ๊ฒฐ์„ ์ „์†กํ–ˆ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ์ˆซ์ž๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ ์ด ์ˆซ์ž๋Š” ์ด๋ฏธ ์ด ๊ธฐ์‚ฌ์˜ ์š”์ ์„ ์„ค๋ช…ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

Linux conntrack์ด ๋” ์ด์ƒ ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

๊ฒฐ๋ก 

Conntrack์€ ์ค‘์š”ํ•œ ์ปค๋„ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ž์‹ ์˜ ์ผ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” conntrack์œผ๋กœ ์ธํ•œ ์ •์ฒด๊ฐ€ ์ด๊ฒƒ์ด ์ œ๊ณตํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์ด์ ๋ณด๋‹ค ๋” ํฝ๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” Calico ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋ฉด์„œ conntrack ์‚ฌ์šฉ์„ ์„ ํƒ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„œ๋Š” conntrack์ด ๊ณ„์†ํ•ด์„œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์นœ๊ตฌ๊ฐ€ ๋˜์–ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋ธ”๋กœ๊ทธ์—์„œ ๋‹ค๋ฅธ ๊ธฐ์‚ฌ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€