AWS ๊ธฐ์ ๋ธ๋ก๊ทธ
NLB์ TCP idle timeout ์ค์ ๊ธฐ๋ฅ ์๊ฐ
์ด ๊ธ์ AWS Networking & Content Delivery Blog์ ๊ฒ์๋ Introducing NLB TCP configurable idle timeout by Tom Adamski, Milind Kulkarni ์ ํ๊ตญ์ด๋ก ๋ฒ์ญ ๋ฐ ํธ์งํ์์ต๋๋ค.
์ด๋ฒ ๊ฒ์๋ฌผ์์๋ ์ ์ก ์ ์ด ํ๋กํ ์ฝ (TCP) ํ๋ฆ์ ๋ํ AWS ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์ (NLB) ์ ํด ์ ํ ์๊ฐ (idle timeout)์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
NLB๋ ๊ฐ๋ฐฉํ ์์คํ ์ํธ ์ฐ๊ฒฐ(OSI) ๋ชจ๋ธ์ ๋ ์ด์ด 4์์ ์๋ํ๋ Amazon Web Services (AWS) Elastic Load Balancing ์ ํ๊ตฐ ์ค ํ๋์ ๋๋ค. TCP ๋๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ทธ๋จ ํ๋กํ ์ฝ (UDP)์ ํตํด ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๊ณ ๋ก๋ ๋ฐธ๋ฐ์์ ํ๊ฒ ๊ทธ๋ฃน์ ๋ถ์ฐ์ํต๋๋ค.
NLB๋ ์ฐ๊ฒฐ์ด ์ค์ ๋ ํ ๋ซํ๊ฑฐ๋ ๋นํ์ฑํ๋ก ์ธํด ์ ํด ์ ํ ์๊ฐ์ ๋๋ฌํ ๋๊น์ง ์ฐ๊ฒฐ์ ์ถ์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก TCP ์ฐ๊ฒฐ์ ์ ํด ์ ํ ์๊ฐ์ 350์ด์ด๋ฉฐ, UDP ์ฐ๊ฒฐ์ ์๊ฐ ์ ํ์ 120์ด์ ๋๋ค.
์ด์ ์๋ก ์ถ๊ฐ๋ TCP ์ ํด ์ ํ ์๊ฐ ์ค์ ์ ํตํด ๊ธฐ์กด ๋ฐ ์ NLB์ ๋ํด ์ด ์์ฑ์ ์์ ํ๊ณ ๋นํ์ฑ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ธฐ ์ ์ NLB๊ฐ ๋๊ธฐํด์ผ ํ๋ ์๊ฐ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
TCP ์ฐ๊ฒฐ ์ค์ ์ ์ดํด
์์ธํ ์์๋ณด๊ธฐ ์ ์ TCP ํ๋กํ ์ฝ์ ์๋ ์๋ฆฌ๋ฅผ ๊ฐ๋ตํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ ์์ธํ ๋์๋ฐฉ์์ ํ์ธํ๋ ค๋ฉด TCP RFC๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ทธ๋ฆผ 1. TCP ์ฐ๊ฒฐ ์ค์ ๋จ๊ณ
TCP ์ฐ๊ฒฐ์ ์ฐ๊ฒฐ ์ค์ , ๋ฐ์ดํฐ ์ ์ก, ์ฐ๊ฒฐ ์ข ๋ฃ ๋ฑ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์นฉ๋๋ค.
- ํํ์คํ (Half Open): ํด๋ผ์ด์ธํธ๊ฐ SYN์ ๋ณด๋ด๊ณ ์๋ฒ๊ฐ ์๋ตํ์ง๋ง ํธ๋์ ฐ์ดํฌ๊ฐ ์๋ฃ๋์ง ์์ ์ํ์ ๋๋ค.
- ์ฐ๊ฒฐ๋จ (Established): 3๋ฐฉํฅ ํธ๋์ ฐ์ดํฌ (three-way handshake)๊ฐ ์๋ฃ๋ ์ํ.
- ๋ฐ์ดํฐ ์ ์ก( Data Transferred): ํธ๋์ ฐ์ดํฌ๊ฐ ์๋ฃ๋๋ฉด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์์ต๋๋ค. ๋ค์ด์ด๊ทธ๋จ์ ์ด ์น์ ์ ๋ ์ฝ๊ฒ ์ฝ์ ์ ์๋๋ก ๋ช ํํ๊ฒ ์ค๋ช ๋์ด ์์ต๋๋ค.
- ์ฐ๊ฒฐ์ข ๋ฃ (Closed): ํด๋ผ์ด์ธํธ๊ฐ FIN ํจํท์ผ๋ก ์ข ๋ฃ๋ฅผ ์์ฒญํ์ฌ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋ฉ๋๋ค.
NLB์ TCP ์ฐ๊ฒฐ ์ฒ๋ฆฌ
NLB๋ ํ๋ก์ฐ ํ ์ด๋ธ (flow table)์์ ์ค์ ๋ ๊ฐ ์ฐ๊ฒฐ์ ์ถ์ ํ๋ ๋ ์ด์ด 4 ํ๋ก์๋ก ๋์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ํด ํ์ชฝ๋ง ์ด๋ ค ์๊ฑฐ๋ (half open), ์ ์์ ์ผ๋ก ๋ซํ๊ฑฐ๋, ์ฌ์ค์ ๋ (reset) ์ฐ๊ฒฐ์ ์ถ์ ๋์ง ์์ต๋๋ค.
๋จ์ผ ์ฐ๊ฒฐ์ ํ๋กํ ์ฝ ์ข ๋ฅ (TCP), ์์ค IP ์ฃผ์, ์์ค ํฌํธ, ๋์ IP ์ฃผ์ ๋ฐ ๋์ ํฌํธ๋ฅผ ํฌํจํ๋ 5 ํํ๋ก ์ ์๋ฉ๋๋ค.

๊ทธ๋ฆผ2. NLB ๊ตฌ์ฑ ์์ ์ํคํ ์ฒ
๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ๋์ ๊ฐ์ 350์ด ๋์ ํธ๋ํฝ์ด ์๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ด NLB ํ๋ก์ฐ ํ ์ด๋ธ์์ ์ ๊ฑฐ๋ฉ๋๋ค. ์ฐ๊ฒฐ์ด ๋ ์ด์ ์ถ์ ๋์ง ์์ ํ ํด๋ผ์ด์ธํธ๊ฐ ํธ๋ํฝ์ ๋ณด๋ด๋ ค๊ณ ์๋ํ๋ฉด NLB๋ ์ ์ฐ๊ฒฐ์ ์ค์ ํด์ผ ํ๋ค๋ ์ ํธ๋ฅผ ๋ณด๋ด๋ TCP RST๋ก ์๋ตํฉ๋๋ค.
๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ๊ฐ ๊ด์ฐฎ์ ์ ์์ง๋ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ฌ๋ฌผ ์ธํฐ๋ท (IoT) ๋๋ฐ์ด์ค๋ ๋งค๋ฒ ์๋๋ง ์ ์กํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋๋ง๋ค ์ฐ๊ฒฐ, ํนํ ์ํธํ๋ ์ฐ๊ฒฐ์ ๋ค์ ์ด๋ ค๋ฉด ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค.
์ฐ๊ฒฐ ์๊ฐ ์ด๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฏธ๋ฆฌ ์ ์๋ ๊ฐ๊ฒฉ์ผ๋ก ์ค์ ๋ ์ฐ๊ฒฐ์ ํตํด ํ๋ก๋ธ (probe)๋ฅผ ์ ์กํ๋ TCP keepalive๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์ด ํ๋ก๋ธ์๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ง ์์ง๋ง NLB์ ๊ฐ์ ์ค๊ฐ ์์คํ ์์ ์ ํด ์๊ฐ ํ์ด๋จธ๋ฅผ ์ด๊ธฐํํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. TCP keepalive ์ค์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์ด์ ํฌ์คํ ์ ์ฐธ์กฐํ์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ ์ง์๋๋ TCP ์ฐ๊ฒฐ์ด ํ์ํ์ง๋ง TCP keepalive๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ NLB์์ TCP ์ ํด ์ ํ ์๊ฐ์ ์์ ํ ์ ์์ต๋๋ค.
TCP ์ ํด ์ ํ ์๊ฐ์ ๋ณ๊ฒฝํ ๋ ๊ณ ๋ ค์ฌํญ
๊ฐ NLB ๋ฆฌ์ค๋์ ๋ํ TCP ์ ํด ์ ํ ์๊ฐ์ 60์ด์์ 6000์ด ์ฌ์ด์ ๊ฐ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค. ์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ฏธ ์งํ ์ค์ธ ์ฐ๊ฒฐ์ด ์๋ ์ TCP ์ฐ๊ฒฐ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ ํด ์ ํ ์๊ฐ ๊ฐ์ ์ค์ ํ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ ์ดํดํ๊ณ TCP keepalive๊ฐ ๋์์ด ๋ ์ ์๋์ง ๊ณ ๋ คํ์ธ์. NLB TCP ์ ํด ์ ํ ์๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ TCP ์ ํด ์ ํ ์๊ฐ๋ณด๋ค ๊ธธ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ด๋ NLB ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฐ๊ฒฐ ๊ด๋ฆฌ ๋ฐ ์๊ฐ ์ด๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ํด ์ ํ ์๊ฐ์ ๋๋ฌด ๊ธธ๊ฒ ์ค์ ํ๋ฉด ํ๋ก์ฐ ํ ์ด๋ธ์ด ๊ฐ๋ ์ฐฐ ์ํ์ด ๋์์ง๋๋ค. ํ ์ด๋ธ์ด ๊ฐ๋ ์ฐจ๋ฉด NLB๊ฐ ์ ์ฐ๊ฒฐ์ ์๋์ผ๋ก ๊ฑฐ๋ถํ๊ฒ ๋ฉ๋๋ค. ์๋ ๋ชจ๋ํฐ๋ง ์น์ ์์ ๋ค๋ฃฌ ์๋ก์ด Amazon CloudWatch ๋ฉํธ๋ฆญ์ ์ฌ์ฉํ์ฌ ๊ฑฐ๋ถ๋ ์ฐ๊ฒฐ์ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค. ๊ฑฐ๋ถ๋ ์ฐ๊ฒฐ์ด ํ์ธ๋๋ฉด TCP ์ ํด ์ ํ ์๊ฐ ๊ฐ์ ์ค์ฌ์ผ ํ๋ค๋ ๋ป์ ๋๋ค.
AWS APIs/CLI ๋ฅผ ์ฌ์ฉํ์ฌ TCP ์ ํด ์ ํ ์๊ฐ์ ์ค์ ํ๋ ๋จ๊ณ
AWS๋ NLB์ฉ TCP ์ ํด ์ ํ ์๊ฐ ์ค์ ๊ธฐ๋ฅ์ ์ถ์ํ๋ฉด์ ์๋ก์ด API๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋ค์ ์์ ๋ ์ค์ ๋ก ์๋ํ๋ API๋ฅผ ๋ณด์ฌ์ค๋๋ค.
TCP ์ ํด ์ ํ ์๊ฐ์ ๋ํ ํ์ฌ ๊ฐ์ ํ์ธํ๊ธฐ ์ํด NLB ๋ฆฌ์ค๋ ์ค์ ์ ํ์ธํฉ๋๋ค.
์ ๋ ฅ:
์ถ๋ ฅ:
TCP ์ ํด ์ ํ ์๊ฐ ๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค.
์ ๋ ฅ:
์ถ๋ ฅ:
AWS ๊ด๋ฆฌ ์ฝ์์ ์ฌ์ฉํ์ฌ TCP ์ ํด ์ ํ ์๊ฐ์ ์ค์ ํ๋ ๋จ๊ณ
๋ค์์ AWS ๊ด๋ฆฌ ์ฝ์์ ์ฌ์ฉํ์ฌ ์ ํด ์ ํ ์๊ฐ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
1. NLB TCP ๋ฆฌ์ค๋๋ฅผ ์ฐพ์ต๋๋ค.
๊ทธ๋ฆผ3. NLB TCP ๋ฆฌ์ค๋
2. ์์ฑ ํญ์์ ํ์ฌ TCP ์ ํด ์ ํ ์๊ฐ ๊ฐ์ ํ์ธํฉ๋๋ค.

๊ทธ๋ฆผ4. NLB ๋ฆฌ์ค๋ ์์ฑ
3. ๋ฆฌ์ค๋ ์์ฑ ํธ์ง ์น์ ์์ ์๋ก์ด TCP ์ ํด ์ ํ ์๊ฐ ๊ฐ์ ์ ๋ ฅํฉ๋๋ค.

๊ทธ๋ฆผ5. ์ ํด ์ ํ ์๊ฐ ์ค์
๋ชจ๋ํฐ๋ง
NLB TCP ์ ํด ์ ํ ์๊ฐ ์ค์ ๊ธฐ๋ฅ์ด ์ถ์๋๋ฉด์ ๋ ๊ฐ์ง ์๋ก์ด ๋ฉํธ๋ฆญ์ด ๋์ ๋์์ต๋๋ค: RejectedFlowCount (ํ๋ก์ฐ ํ ์ด๋ธ์ด ๊ฝ ์ฐจ์ ๊ฑฐ๋ถ๋ ์ด ํ๋ก์ฐ ์) ๋ฐ RejectedFlowCount_TCP (๊ฐ์ ์ด์ ๋ก ๊ฑฐ๋ถ๋ TCP ํ๋ก์ฐ ์)์ ๋๋ค. ์ด๋ฌํ ๋ฉํธ๋ฆญ์ ์ ํด ์ ํ ์๊ฐ ์ค์ ์ ์ํฅ์ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
NLB๊ฐ ํ๋ก์ฐ๋ฅผ ๊ฑฐ๋ถํ๊ธฐ ์์ํ๋ ์์ ์ ์๋ ค์ฃผ๋ CloudWatch ์๋์ ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. RejectedFlowCount๊ฐ ์ฆ๊ฐํ๋ฉด ์ ํ ์๊ฐ์ ์ค์ฌ์ผ ํจ์ ๋ํ๋ด๋ฏ๋ก NLB๊ฐ ํ๋ฆ์ ๋ ๋นจ๋ฆฌ ์ง์ฐ๊ณ ํ๋ฆ ํ ์ด๋ธ์ด ๊ฐ๋ ์ฐจ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
NewFlowCount, NewFlowCount_TCP, ActiveFlowCount ๋ฐ ActiveFlowCount_TCP์ ๊ฐ์ ๊ธฐ์กด NLB ๋ฉํธ๋ฆญ์ ๋ณ๊ฒฝ๋์ง ์๊ณ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
๊ฒฐ๋ก
NLB์์ TCP ์ ํด ์ ํ ์๊ฐ์ ์ค์ ํ๋ฉด ํนํ ์ฐ๊ฒฐ์ด ์ค๋ ์ง์๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ๊ด๋ฆฌ๋ฅผ ๋์ฑ ํจ๊ณผ์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค. ์ ํด ์ ํ ์๊ฐ์ ์กฐ์ ํ๊ณ ๊ด๋ จ ๋ฉํธ๋ฆญ์ ๋ชจ๋ํฐ๋งํ์ฌ NLB ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ์ ์ฌ์ ์ธ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
