Tech Stack/AWS

[241216] AWS λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)

_silver 2024. 12. 16. 17:20
ν™•μž₯μ„±(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 λ¦¬λ‹€μ΄λ ‰νŠΈ μ„€μ •