๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Tech Stack/AWS

[241216] AWS ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(Load Balancer)

by _silver 2024. 12. 16.
ํ™•์žฅ์„ฑ(Scalability) vs ๊ณ ๊ฐ€์šฉ์„ฑ(Availability)

 

1. ํ™•์žฅ์„ฑ(Scalability)

- ์‹œ์Šคํ…œ ์‚ฌ์šฉ์ž ์ˆ˜, ๋ฐ์ดํ„ฐ ์–‘ , ์ฒ˜๋ฆฌ์–‘ ์ฆ๊ฐ€์— ๋Œ€์‘ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋Šฅ๋ ฅ

- ์ˆ˜ํ‰์  ํ™•์žฅ(Horizontal Scaling): ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ

- ์ˆ˜์ง์  ํ™•์žฅ(Vertical Scaling): ๊ธฐ์กด ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ์—…๊ทธ๋ ˆ์ด๋“œ(์˜ˆ: CPU, RAM ์ถ”๊ฐ€)

- ์˜ˆ: ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์— ๋”ฐ๋ผ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์˜คํ† ์Šค์ผ€์ผ๋ง(Auto Scaling)

 

2. ๊ณ ๊ฐ€์šฉ์„ฑ(Availability)

- ์‹œ์Šคํ…œ์ด ์ง€์†์ ์œผ๋กœ ์ •์ƒ ๋™์ž‘ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ

- ์žฅ์•  ๋ฐœ์ƒ ์‹œ์—๋„ ์„œ๋น„์Šค ์ค‘๋‹จ ์—†์ด ์šด์˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„

- ์˜ˆ: ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ํ™œ์šฉํ•œ ์žฅ์•  ๋Œ€์‘


๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(Load Balancer)๋ž€?

 

- ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„์‚ฐํ•˜์—ฌ ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• 

๋กœ๋“œ ๋ฐธ๋Ÿฌ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…
์š”์ฒญ ๋ถ„์‚ฐ ์—ฌ๋Ÿฌ EC2 ์ธ์Šคํ„ด์Šค์— ํŠธ๋ž˜ํ”ฝ์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐ
๋‹จ์ผ ์•ก์„ธ์Šค ํฌ์ธํŠธ ์ œ๊ณต Route 53๊ณผ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ ๊ฐœ์˜ ์ฃผ์†Œ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
์ธ์Šคํ„ด์Šค ํ—ฌ์Šค ์ฒดํฌ ์žฅ์•  ๊ฐ์ง€ ํ›„ ์ž๋™์œผ๋กœ ์š”์ฒญ์„ ์ •์ƒ ์ธ์Šคํ„ด์Šค๋กœ ๋ผ์šฐํŒ…
HTTPS ์ œ๊ณต AWS Certificate Manager(ACM)๊ณผ ์—ฐ๋™ํ•˜์—ฌ SSL/TLS ์ง€์›
๊ณ ๊ฐ€์šฉ์„ฑ ๋ณด์žฅ ๋‹ค์ค‘ AZ ๋ฐฐํฌ๋ฅผ ํ†ตํ•ด ์žฅ์•  ๋ฐœ์ƒ ์‹œ์—๋„ ์„œ๋น„์Šค ์ง€์† ๊ฐ€๋Šฅ
ํŠธ๋ž˜ํ”ฝ ๋ถ„๋ฆฌ ๊ณต๊ฐœ ํŠธ๋ž˜ํ”ฝ(users)๊ณผ ๋‚ด๋ถ€ ํŠธ๋ž˜ํ”ฝ(EC2 ๊ฐ„ ํ†ต์‹ ) ๋ถ„๋ฆฌ

 


AWS Elastic Load Balancer(ELB) ์‚ดํŽด๋ณด๊ธฐ

 

- AWS์—์„œ๋Š” ELB๋ฅผ ํ†ตํ•ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์ œ๊ณต

- ELB๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ž๋™์œผ๋กœ ์—ฌ๋Ÿฌ EC2 ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„๋ฐฐํ•˜์—ฌ ํ™•์žฅ์„ฑ๊ณผ ๊ณ ๊ฐ€์šฉ์„ฑ ํ–ฅ์ƒ

 

ELB ์œ ํ˜• ๋ฐ ํŠน์ง•
๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์œ ํ˜• OSI ๊ณ„์ธต ํŠน์ง• ๋Œ€์ƒ
Application Load Balancer
(ALB)
7๊ณ„์ธต
(Application Layer)
- HTTP/HTTPS ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ
- ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ
- ๊ณ ๊ธ‰ ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ ์ œ๊ณต (URL ๊ธฐ๋ฐ˜, ํ˜ธ์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ๊ฐ€๋Šฅ)
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, RESTful API, ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ์šด์˜ ์‹œ ์ ํ•ฉ
Network Load Balancer
(NLB)
4๊ณ„์ธต
(Transport Layer)
- TCP, UDP, TLS ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌ
- ๊ณ ์„ฑ๋Šฅ, ์ดˆ์ €์ง€์—ฐ ์ฒ˜๋ฆฌ (์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์š”์ฒญ์„ ๋น ๋ฅด๊ฒŒ ๋ถ„์‚ฐ)
- ๊ณ ์ • IP ์ œ๊ณต (ํŠน์ • IP ์ฃผ์†Œ๊ฐ€ ํ•„์š”ํ•œ ์„œ๋น„์Šค์— ์œ ์šฉ)
- ์ค‘์•™ ์ง‘์ค‘ํ˜• TLS ์˜คํ”„๋กœ๋“œ ๊ธฐ๋Šฅ ์ง€์›
๊ณ ์„ฑ๋Šฅ, ์ €์ง€์—ฐ, ๋Œ€๊ทœ๋ชจ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šด์˜ ์‹œ ์ ํ•ฉ
Gateway Load Balancer
(GWLB)
๋„คํŠธ์›Œํฌ ๊ณ„์ธต - ์„œ๋“œํŒŒํ‹ฐ ๊ฐ€์ƒ ์–ดํ”Œ๋ผ์ด์–ธ์Šค (๋ฐฉํ™”๋ฒฝ, IDS/IPS, ๋ณด์•ˆ ์„œ๋น„์Šค) ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
- GNVVE ํ”„๋กœํ† ์ฝœ ์ง€์›
- ๋ณด์•ˆ, ๊ทœ์ • ์ค€์ˆ˜, ์ •์ฑ… ์ œ์–ด ๊ธฐ๋Šฅ ๊ฐ•ํ™”
- ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ํŠน์ • ๋ณด์•ˆ ์žฅ๋น„๋กœ ๋ผ์šฐํŒ… ๊ฐ€๋Šฅ
๋ณด์•ˆ, ๊ทœ์ • ์ค€์ˆ˜, ์ •์ฑ… ๊ธฐ๋ฐ˜ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ

ALB ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

 

1. ALB ์ฃผ์š” ๊ธฐ๋Šฅ

- HTTP ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ํƒ€๊นƒ ๊ทธ๋ฃน์— ๋ถ„์‚ฐ ๊ฐ€๋Šฅ

- ํ•œ ๋จธ์‹  ๋‚ด์—์„œ๋„ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์ปจํ…Œ์ด๋„ˆ)์œผ๋กœ ํŠธ๋ž˜์น™ ๋ผ์šฐํŒ… ๊ฐ€๋Šฅ

- HTTP/2 ๋ฐ ์›น์†Œ์ผ“ ์ง€์›

- HTTPS ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ง€์›

- URL, hostname, qurery string, header์— ๊ธฐ๋ฐ˜์œผ๋กœ ํƒ€๊นƒ ๊ทธ๋ฃน์œผ๋กœ ์š”์ฒญ ์ „๋‹ฌ ๊ฐ€๋Šฅ

 

2. EC2 ์ธ์Šคํ„ด์Šค ์ž๋™ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ

- EC2 ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ž๋™์œผ๋กœ ์›น ์„œ๋ฒ„(Nginx)๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ

- ๊ฒฝ๋กœ: EC2 > Advanced details > User data - optional 

#!/bin/bash
apt-get update
apt-get install -y nginx
cat <<EOF > /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx</title>
</head>
<body>
<h1>Hello World!</h1>
<p>AWS deployed by Me!</p>
<p>private ip is $(hostname -f)</p>
</body>
</html>
EOF
sudo systemctl start nginx

ELB๋ฅผ ํ™œ์šฉํ•œ ํ™•์žฅ์„ฑ๊ณผ ๊ณ ๊ฐ€์šฉ์„ฑ ๊ตฌํ˜„
๊ธฐ๋Šฅ ํ™•์žฅ์„ฑ(Scalability) ๊ณ ๊ฐ€์šฉ์„ฑ(Availability)
ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์ฆ๊ฐ€ํ•˜๋Š” ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„๋ฐฐ ํŠน์ • ์ธ์Šคํ„ด์Šค ์žฅ์•  ์‹œ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋กœ ๋ผ์šฐํŒ…
์˜คํ†  ์Šค์ผ€์ผ๋ง ์—ฐ๋™ ์ธ์Šคํ„ด์Šค ์ž๋™ ์ถ”๊ฐ€/์ œ๊ฑฐ๋กœ ์œ ์—ฐํ•œ ํ™•์žฅ ์ธ์Šคํ„ด์Šค ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ž๋™ ๋Œ€์ฒด
๋ฉ€ํ‹ฐ AZ ์ง€์› ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ(AZ)์—์„œ ์ธ์Šคํ„ด์Šค ํ™•์žฅ ๊ฐ€๋Šฅ ํŠน์ • AZ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋‹ค๋ฅธ AZ๋กœ ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜
ํ—ฌ์Šค ์ฒดํฌ ๋น„์ •์ƒ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ์ „์†ก ๋ฐฉ์ง€ ์žฅ์•  ๊ฐ์ง€ ํ›„ ์ž๋™์œผ๋กœ ์š”์ฒญ์„ ์ •์ƒ ์ธ์Šคํ„ด์Šค๋กœ ์ „์†ก

SSL ์ธ์ฆ ์ ์šฉ ๋ฐ HTTPS ์„ค์ •

1. SSL๊ณผ HTTPS๋ž€?

- SSL (Secure Sockets Layer): ์ธํ„ฐ๋„ท์—์„œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ

- TLS (Transport Layer Security): SSL์˜ ๋ณด์™„๋œ ๊ธฐ์ˆ , ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„ TLS๊ฐ€ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ์—ฌ์ „ํžˆ 'SSL'์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉ

- SSL/TLS๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์•ˆ์ „ํ•œ ํ†ต์‹ ์„ ์ œ๊ณต

2. AWS์—์„œ SSL ์ธ์ฆ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

1) AWS Certificate Manager (ACM)์—์„œ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰

2) ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(ALB/NLB)์—์„œ HTTPS ๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€

3) HTTPS ํŠธ๋ž˜ํ”ฝ์„ SSL ์ธ์ฆ์„œ์™€ ์—ฐ๊ฒฐ

4) EC2 ์ธ์Šคํ„ด์Šค์—์„œ HTTP → HTTPS ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์„ค์ •