[aws] ๋ก๋๋ฐธ๋ฐ์ฑ(load balancing)๊ณผ ๋ก๋๋ฐธ๋ฐ์(load balancer)์ ์ข ๋ฅ
๐ ๋ก๋๋ฐธ๋ฐ์ฑ (load balancing)
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ๋ ๋ฆฌ์์ค ํ ์ ์ฒด์ ๋คํธ์ํฌ ํธ๋ํฝ์ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฐฑ๋ง ๋ช ์ ์ฌ์ฉ์๋ฅผ ๋์์ ์ฒ๋ฆฌํ๊ณ ์ ํํ ํ ์คํธ, ๋น๋์ค, ์ด๋ฏธ์ง ๋ฐ ๊ธฐํ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ฐ ์ฌ์ฉ์์๊ฒ ๋ฐํํด์ผํ๋ค.
์ด๋ ๊ฒ ๋ง์ ์์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋๋ ๋ฆฌ์์ค ์๋ฒ๊ฐ ๋ง์ด ์๋ค.
๋ก๋ ๋ฐธ๋ฐ์๋ ์ฌ์ฉ์์ ์๋ฒ ๊ทธ๋ฃน ์ฌ์ด์ ์์นํ๋ฉฐ ๋ณด์ด์ง ์๋ ์ด์ง์ ์ญํ ์ ํ์ฌ ๋ชจ๋ ๋ฆฌ์์ค ์๋ฒ๊ฐ ๋์ผํ๊ฒ ์ฌ์ฉ๋๋๋ก ํ๋ ๋๋ฐ์ด์ค๋ค.
๐ ๋ก๋ ๋ฐธ๋ฐ์ (load balancer)
๋ก๋ ๋ฐธ๋ฌ์ฑ์ ํด์ธ ๋ก๋ ๋ฐธ๋ฐ์๋ ์ด 4๊ฐ์ง์ ์ข ๋ฅ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ ์ฐ์์๊ฐ ๊ฐ๊ฐ ๋ค๋ฅด๋ค.
- CLB (Classic Load Balancer) - 2009๋ ์ ์ถ์๋ ๋ก๋ ๋ฐธ๋ฐ์๋ก HTTP, HTTPS, TCP, SSL, secure TCP ํ๋กํ ์ฝ์ ์ง์ํ์ง๋ง ๊ถ์ฅํ์ง ์๋ ๋ฐธ๋ฐ์์ด๋ค.
- ALB (Application Load Balancer) - 2016๋ ์ ์ถ์๋ ๋ก๋ ๋ฐธ๋ฐ์๋ก HTTP, HTTPS, WebSocket ํ๋กํ ์ฝ์ ์ง์ํ๋ค
- NLB (Network Load Balancer) - 2017๋ ์ ์ถ์๋ ๋ก๋ ๋ฐธ๋ฐ์๋ก TCP, TLS ,secure TCP, UDP ํ๋กํ ์ฝ์ ์ง์ํ๋ค.
- GLB (Gateway Load Balancer) - 2020๋ ์ ๋์จ ๊ฒ์ดํธ์จ์ด ๋ก๋ ๋ฐธ๋ฐ์๋ก 3๊ณ์ธต์ ๋คํธ์ํฌ ๋ ์ด์ด IP ํ๋กํ ์ฝ์์ ์๋ํ๋ค.
์ ์ ๋ HTTP ๋ HTTPS๋ฅผ ํตํด ์ด๋์๋ ๋ก๋ ๋ฐธ๋ฐ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก ๋ณด์ ๊ทธ๋ฃน์ ๊ท์น์ 80 ํฌํธ์ 443 ํฌํธ๋ ํญ์ ์ด๋ ค ์์ด์ผํ๋ฉฐ 0.0.0.0/0 ๋ชจ๋์๊ฒ ์ด๋ ค์์ด์ผ ํ๋ค. ์ฌ๊ธฐ์ EC2 ์ธ์คํด์ค๋ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํ ํธ๋ํฝ๋ง์ ํ์ฉํด์ผํ๊ธฐ ๋๋ฌธ์ EC2 ์ธ์คํด์ค์ ๋ณด์ ๊ทธ๋ฃน ๊ท์น์ HTTPํฌํธ์ธ 80ํฌํธ๋ง ๊ฐ๋ฐฉํ๋ฉฐ ์์ค๋ IP ๋ฒ์๊ฐ ์๋๋ผ ๋ก๋๋ฐธ๋ฐ์์ ๋ณด์๊ทธ๋ฃน์ผ๋ก ์ฐ๊ฒฐํด์ผ ํ๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ EC2 ์ธ์คํด์ค๋ ๋ก๋ ๋ฐธ๋ฐ์์์ ์จ ํธ๋ํฝ๋ง์ ํ์ฉํ๊ฒ ๋๋ค.
๐ ALB(Application Load Balancer)
์ดํ๋ฆฌ์ผ์ด์ ๋ก๋ ๋ฐธ๋ฐ์๋ 7๊ณ์ธต , ์ฆ HTTP ์ ์ฉ ๋ก๋ ๋ฐธ๋ฐ์๋ก URL ๋ผ์ฐํ , URL์ ํธ์คํธ ์ด๋ฆ์ ๊ธฐ๋ฐํ ๋ผ์ฐํ , ์ฟผ๋ฆฌ ๋ฌธ์์ด๊ณผ ํค๋์ ๊ธฐ๋ฐํ ๋ผ์ฐํ ์ด ๊ฐ๋ฅํ๋ค. ALB๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฅ ์ข์ ๋ก๋ ๋ฐธ๋ฐ์์ด๋ค.
์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์. EC2 ์ธ์คํด์ค๋ค๋ก ๊ตฌ์ฑ๋ ์ฒซ ๋ฒ์งธ ๋์ ๊ทธ๋ฃน์ Route/ user๋ก ๋ผ์ฐํ ๋๊ณ ๋ ๋ฒ์งธ ๋์ ๊ทธ๋ฃน์ ๊ฒ์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก Route/ search๋ก ๋ผ์ฐํ ๋๋ค๋ฉด ๋ ๊ฐ์ ๋ ๋ฆฝ๋ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์ฒซ ๋ฒ์งธ๋ ์ ์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ ๋ฒ์งธ๋ ๊ฒ์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก์จ ์๋ก ๋ค๋ฅธ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋ ๊ฒ์ด๋ค. ์ด๋ค์ URL์์ ์ฌ์ฉ๋๋ ๋ผ์ฐํ ์ ๊ธฐ๋ฐ์ผ๋ก ํด ๊ฐ ๋์ ๊ทธ๋ฃน์ผ๋ก ์ง๋ฅ์ ์ผ๋ก ๋ผ์ฐํ ํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ ๋์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ ๋ฐธ๋ฐ์์ ๋ค์ ์๋ ๊ฒ์ด๋ค.
ALB๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ณ ์ ํธ์คํธ ์ด๋ฆ์ด ๋ถ์ฌ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ IP๋ฅผ ์ง์ ๋ณด์ง ๋ชปํ๋ฉฐ ํด๋ผ์ด์ธํธ์ ์ค์ IP๋
X-Forwarded-For ๋ผ๋ ํค๋์ ์ฝ์ ๋๋ค. X-Forwarded-Port๋ฅผ ์ฌ์ฉํ๋ ํฌํธ์ X-Forwarded-Proto์ ์ํด ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ๋ ์ป๊ฒ ๋ ํ ๋ฐ ๋ง์ฝ ํด๋ผ์ด์ธํธ IP์ธ 12.34.56.78์ด ๋ก๋๋ฐธ๋ฐ์์ ํต์ ํ ๋ EC2 ์ธ์คํด์ค๊ฐ ํด๋ผ์ด์ธํธ์ IP๋ฅผ ์๊ธฐ ์ํด์๋ HTTP ์์ฒญ์ ์ถ๊ฐ ํค๋์ธ X-Forarded-Port์ Proto๋ฅผ ํ์ธํ์ฌ ์ ์ ์๋ค.
๐ NLB(Network Load Balancer)
NLB๋ L4 ๋ก๋ ๋ฐธ๋ฐ์์ด๋ฏ๋ก TCP์ UDP ํธ๋ํฝ์ ๋ค๋ฃฐ ์ ์๋ค. ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์์ ์ฑ๋ฅ์ ๋งค์ฐ ๋์ ์ด๋น ์๋ฐฑ๋ง ๊ฑด์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๊ณ ALB์ ๋นํด ์ง์ฐ ์๊ฐ๋ ์งง๋ค. NLB๋ AZ ๋ณ๋ก ํ๋์ ๊ณ ์ IP๋ฅผ ๊ฐ์ง๋ฉฐ ํ๋ ฅ์ IP ์ฃผ์๋ฅผ ๊ฐ AZ์ ํ ๋นํ ์ ์์ด ์ฌ๋ฌ ๊ฐ์ ๊ณ ์ IP๋ฅผ ๊ฐ์ง ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ ธ์ถํ ๋ ์ ์ฉํ๋ค.
์๋ ๋ฐฉ์์ ALB์ ๋น์ทํ๋ค. ๋์ ๊ทธ๋ฃน์ ์์ฑํ๋ฉด ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ๋์ ๊ทธ๋ฃน์ ๋ฆฌ๋ค์ด๋ ํธํ์ฌ ๋ฐฑ์๋, ํ๋ก ํธ์๋ ๋ชจ๋ TCB ํธ๋ํฝ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ฐฑ์๋์์๋ HTTP๋ฅผ ํ๋ก ํธ์์๋ TCP๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
EC2 ์ธ์คํด์ค๊ฐ ๋์ ๊ทธ๋ฃน์ผ ๋ NLB๋ TCP ๋๋ UDP ํธ๋ํฝ์ EC2 ์ธ์คํด์ค๋ก ๋ฆฌ๋ค์ด๋ ํธํ ์ ์๋ค. ๋ํ IP ์ฃผ์๋ฅผ ๋ฑ๋กํ ์๋ ์๋๋ฐ ์ด ๋ IP ์ฃผ์๋ ๋ฐ๋์ ํ๋ ์ฝ๋ฉ๋์ด์ผ ํ๊ณ ํ๋ผ์ด๋น IP์ฌ์ผ ํ๋ค.(ํ๋ผ์ด๋น IP๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ ALB๋ ๊ฐ๋ฅ)
NLB๋ฅผ ALB ์์ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ๋ ๊ฐ๋ฅํ๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ NLB ๋๋ถ์ ๊ณ ์ IP ์ฃผ์๋ฅผ ์ป๊ณ ALB์ HTTP ์ ํ์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๊ท์น์ ์ป๋ ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋ค.
๐ GWLB (Gateway Load Balancer)
GWLB๋ ๋ชจ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ณด๋ค ๋ฎ์ ์์ค์ธ L3 ๋คํธ์ํฌ ๊ณ์ธต์ผ๋ก ๋ฐฐํฌ ๋ฐ ํ์ฅ๊ณผ AWS์ ํ์ฌ ๋คํธ์ํฌ ๊ฐ์ ์ดํ๋ผ์ด์ธ์ค์ ํ๋ฆฟ ๊ด๋ฆฌ์ ์ฌ์ฉ๋๋ค. GWLB๋ ๋คํธ์ํฌ์ด ๋ชจ๋ ํธ๋ํฝ์ด ๋ฐฉํ๋ฒฝ์ ํต๊ณผํ๊ฒ ํ๊ฑฐ๋ ์นจ์ ํ์ง ๋ฐ ๋ฐฉ์ง ์์คํ ์ ์ฌ์ฉํ๋ค. ๊ทธ๋์ IDPS ๋ ์ฌ์ธต ํจํท ๋ถ์ ์์คํ ๋๋ ์ผ๋ถ ํ์ด๋ก๋๋ฅผ ์์ ํ ์ ์์ง๋ง ๋คํธ์ํฌ ์์ค์์ ๊ฐ๋ฅํ๋ค.
์ด๋ฏธ์ง์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ก์ธ์คํ๋ ์ฌ์ฉ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ๋ชจ๋ ํธ๋ํฝ์ ๊ฒ์ฌํ๋ ค๋ฉด ์ดํ๋ฆฌ์ผ์ด์ ์ ๋๋ฌํ๊ธฐ ์ ์ EC2 ์ธ์คํด์ค์ ๊ฐ์ ํ์ฌ ๊ฐ์ ์ดํ๋ผ์ด์ธ์ค๋ฅผ ๋ฐฐํฌ ํ GWLB๋ฅผ ๊ฑฐ์น๊ฒ ํด์ผํ๋ค. VPC์์ ๋ผ์ฐํ ํ ์ด๋ธ์ด ์ ๋ฐ์ดํธ๋๋ฉด ๋ชจ๋ ์ฌ์ฉ์๋ค์ ๋งจ ์ฒ์์ผ๋ก GWLB๋ฅผ ํต๊ณผํ๊ฒ ๋๊ณ GWLB๋ ๊ฐ์ ์ดํ๋ผ์ด์ธ์ค์ ๋์ ๊ทธ๋ฃน ์ ๋ฐ์ผ๋ก ํธ๋ํฝ์ ํ์ฐํ๋ค. ๊ทธ๋์ ๋ชจ๋ ํธ๋ํฝ์ ์ดํ๋ผ์ด์ธ์ค์ ๋๋ฌํ๊ณ ์ดํ๋ผ์ด์ธ์ค๋ ํธ๋ํฝ์ ๋ฐฉํ๋ฒฝ์ด๋ ์นจ์ ํ์ง์ ์ญํ ๋ก ๋ถ์,์ฒ๋ฆฌํ๊ฒ ๋๋๋ฐ ์ด์์ด ์์ผ๋ฉด ๋ค์ GWLB๋ก ํต๊ณผํ์ฌ ์ต์ข ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ณด๋ด๊ณ ์ด์์ด ์์ผ๋ฉด ํธ๋ํฝ์ ๋๋ํ๋ค.
์ด์ GWLB๋ 2๊ฐ์ง ๊ธฐ๋ฅ์ ๊ฐ๊ฒ ๋๋ค. ์ฒซ ๋ฒ์งธ๋ VCP์ ๋ชจ๋ ํธ๋ํฝ์ด GWLB๊ฐ ๋๋ ๋จ์ผ ์ํธ๋ฆฌ์ ์ถ๊ตฌ๋ก ํต๊ณผํ๊ฒ ๋๋ ํฌ๋ช ๋คํธ์ํฌ ๊ฒ์ดํธ์จ์ด์ ๊ธฐ๋ฅ์ ํ๊ฒ ๋๊ณ , ๋ ๋ฒ์งธ๋ก๋ ๋์ ๊ทธ๋ฃน์ ๊ฐ์ ์ดํ๋ผ์ด์ธ์ค ์งํฉ์ ๊ทธ ํธ๋ํฝ์ ๋ถ์ฐํ๋ ๋ก๋๋ฐธ๋ฐ์์ ๊ธฐ๋ฅ์ ํ๊ฒ ๋๋ค. ํฌํธ๋ 6081๋ฒ ํฌํธ์ GENEVE ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค.