ELB(Elastic Load Balancer) 와 ASG(Auto Scaling Group) 각각 Load 를 분산하고 Scale In/Out 을 하기 위한 AWS Service 다.
ELB
LB(Load Balacer) 는 Traffic 을 다른 Server 들로 Forward 하는 Server 다.
ELB 의 TG(Target Group) 이 '다른 Server 들' 에 해당한다.
TG 는 EC2, ECS, IP(private), Lambda, ALB 가 될 수 있다.
TG 에는 Health Check(HC) 기능이 있어서 특정 port 와 path 에 대한 HTTP(S) 응답을 기반으로 해당 EC2에 Traffic 을 줄지 말지 결정한다.
AWS 에서 제공하는 LB 인 ELB 는 4가지 종류가 있다.
이름 | 출시년도 | 지원 프로토콜 | Cross-Zone LB |
CLB(Classic Load Balacer) | 2009 | HTTP, HTTPS, TCP, SSL | disabled / no charge |
ALB(Application Load Balacer) | 2016 | HTTP, HTTPS, WebSocket | enabled / no charge |
NLB(Network Load Balacer) | 2017 | TCP, TLS, UDP | disabled / charge |
GLB(Gateway Load Balacer) | 2020 | IP | disabled / charge |
CLB
Deprecated 되어 더 이상 제공하지 않는다.
ALB
ALB 는 L7 의 LB 이며 DNS 를 하나 제공한다.
ALB 의 Port Listner 에 Rule 을 추가하여 Path, Query String, Header, Hostname 을 기반으로 Traffic 을 Forward 할 수 있다.
TG(Target Group) 으로는 EC2, ECS, Lambda, Private IP 가 가능하다.
Application 은 Client 가 사용하는 IP/Port/Protocol 를 직접 볼 수 없고 X-Forwarded-For/Port/Proto 를 통해 보게된다.
SG 으로 보안을 관리한다.
Cookies 를 활용하여 Sticky Session(Session Affinity) 을 지원한다.
사용되는 Cookies 로는 App-based, Duration-based 가 있으며 App-based 는 Custom 과 Application 으로 나뉜다.
NLB
NLB 는 L4 의 LB 이며 DNS 를 하나 제공하고 AZ 마다 Static IP 를 하나씩 제공한다.
EIP 를 지원한다.
TG 으로는 EC2, Private IP, ALB 가 가능하다.
HC(Health Check) 로 TCP, HTTP, HTTPS 를 사용 가능하다.
SG 를 사용하지 않는다.
GLB
Transparent Network Gateway 와 Load Balancer 기능을 제공한다.
Single Entry Single Exit
GENEVE, 6081 이면 GLB 이다.
TG 으로는 EC2, Private IP 가 가능하다.
주로 3rd Party 에게 모든 트래픽을 넘기고 3rd Pary 에서 Filterling 한 Traffic 만 Application 에 전달할 때 쓰인다.
SSL/TLS
In-flight Encryption, CA 에 의해 발행, SNI, Connection Draining
ASG
ASG 는 Scaling Policy 를 정하고 거기에 맞게 EC2 를 Scale In/Out 하는 서비스이다.
ASG 를 사용하려면 먼저 ASG 에서 생성할 EC2 들의 Template 인 Launch Template 을 작성해야한다.
ASG 에도 EC2 에 HC 를 하는 기능이 기본적으로 내장되어 있어서 EC2 Status 가 정상인지를 확인한다.
ELB 와 연계하여 ELB 의 HC 를 기반으로 EC2 를 종료하고 대체할 수 있다.
Scaling Policy 는 다음과 같다.
- Dynamic Scaling
- Target Tracking Scaling
- Network 입출력, CPU 사용량, LB 의 요청 수 등으로 Policy 를 만든다.
- Simple Scaling
- CloudWatch Alarm 을 기준으로 Policy 를 만든다.
- Step Scaling
- CloudWatch Alarm 을 기준으로 세분화된 기준을 가지고 Policy 를 만든다.
- 예를 들면 ASG CPU Utilization 이 70% 이상일 때 Alarm 이 생성되는 경우에 해당 알람이 발생하는 경우 70~80 구간, 80~90구간, 90~100 구간에서 각각 어떤 Scaling 을 할 것인지 설정할 수 있다.
- Scheduled Action
- 시간대별로 실행할 Scaling 을 설정할 수 있다.
- Target Tracking Scaling
- Predictive Scaling
- 머신러닝을 사용하여 과거의 부하를 분석하고 Scaling 을 수행해주는 Policy 이다.
Scaling Cooldown 이 존재하여 어느 한 Policy 가 다시 적용된 후 CloudWatch Metric 이 안정되기위한 Delay 를 줄 수 있다.
'AWS' 카테고리의 다른 글
RDS 와 Elasticache (0) | 2023.01.20 |
---|---|
EBS 와 EFS (0) | 2023.01.14 |
EC2 기초 (0) | 2023.01.12 |
Cloud 기본과 IAM (0) | 2023.01.11 |