본문 바로가기
Cloud

[DVE-C02] 07. AWS Fundmentals : ELB + ASG

by DenverAlmighty 2024. 10. 20.

High Availability and Scalability

ELB(Elastic Load Balancing) Overview

 

 

ELB (Elastic Load Balancing)

서버 / 서버세트로 EC2인스턴스나 서버로 수신되는 트래픽 전달하는 역할. 

- managed load balancer -> 사용자가 관리할 필요 없음

 

Health Check

특정 포트에 /heath와 같은 경로로 체크. 200인지 아닌지 확인. 비정상이며 해당인스턴스로 트래픽 보내지않음

 

AWS Load Balancer 종류

CLN (Classic Load Balancer. v1) : HTTP, HTTPS, TCP, SSL -> 더이상 사용하지 않음

ALB (Application Load Balancer. V2) : Layer 7 HTTP, HTTPS, Websocket

NLB (Network Load Balancer. V2) : TCP, TLS, UDP, 초고성능 분산 필요할 때

GWLB (Gateway Load Balancer) : 네트워크 계층에서 동작(IP protocol),보안, 방화벽, 침입 감지등에 사용 네트워크 트래픽 분석

 

 

Load Banacer Security Group

EC2는 Load Balancer에서 온 트래픽만 허용함

 

ALB

URL path, hostname, 쿼리 스트링/헤더 별로 타겟 그룹마다 다르게 라우팅 가능

마이크로 서비스, 컨테이너 기반 어플리케이션에 적합 포트 매핑기능이 있기때문에 ECS의 동적 포트에 리다이렉트 할 수 있게 해줌

고정된 hostname

client가  LB 통하기 때문에 application 서버는 client ip를 직접적으로못봄 (클라이언트 진짜 IP는 헤더 X-Forwarder-For에 삽입되어있음)

 

NLB

Layer 4.  인스턴스에 TCP, UDP 트래픽 포워드. 초당 수만 request 처리. latency(대기) 매우 낮음

NLB는 AZ당 1개 고정 IP가짐. Elastic IP로 할당  가능

cokie 사용x 

target group

- EC2 인스턴스, IP 주소(private), ALB(NLB 앞에두어서 고정 IP, 트래픽 처리 규칙 등 사용가능해짐), hptt, https, TCP 프로토콜 health check.

 

GWLB

Layer 3 - IP packet

target group

EC2인스턴스, IP주소(private),

 

Elastic Load Balancer

Stcky Session

client -> lb에 전송된 쿠키 사용하여특정 사용자는 특정 인스턴스에 리다리엑트되도록 하기(만료될 때 까지)

세션 데이터(로그인) 유지 등에 사용. 로드 불균형 생길 수 있음

쿠기 종류 : Applicatioin-based, duration-based. load balancer에의해쿠키생성됨

 

 

Cross-Zone Load Balancing

사용자는 Cross-zone Load Balancer에 액세스 -> 등록된 모든 AZ의 인스턴스에 고르게 분산 

AZ에 2, 8개가 있다고 가정,각각 10씩 분산됨(20, 80씩 분산되어 각각 10씩)

Cross-Zone Load Balancing이 없으면 AZ당 50, 50씩 분산되고, 25,25, 6.25, 6.25, 6.25 ... 씩 분산됨

 

SSL Certicificates

SSL / TLS 

: client-lb간 트래픽 암호화함 (in-flight encryption). 송,수신자만 해독 가능

SSL : Secure Sockts Layer. 연결 암호화

TLS : Transport Layer Security

 

ACM (AWS Certicicate Manager) 사용해 인증서 관리 가능

 

SNI (Server Name Indication)

: SNI가 다중 SSL 읹으서를 한 웨서버에 로드할 것인가 (해당 웹 서버가 다중 웹사이트 서비스하기 위해) 하는 문제 해결 해줌

ALB, NLB, Cloudfront 에서 동작

 

Connection Draining (for CLB) & Deregistration Delay (for ALB, NLB)

인스턴스의 등록 취소(de-registring) 시 존재하는 connection, 요청이 완료될 때까지 기다리고, 해당 인스턴스로 새 request 보내는거 중단함.

 

ASG (Auto Scaling Group)

모표 : load 증가/감소에따라 scale out/in

인스턴스 min,max 수 설정 가능하고 , 새로운 인스턴스는 LB에 자동으로 등록됨. 하나가 unhealthy 등의 이유로 종료되면 재생성함.

ELB가 EC2 healty check할 수 있는데, ASG로 전달 가능함. -> ASG가 unhealthy EC2 종료가능함.

Cloudwatch 알람에의해 scale 정책 생성

 

Scaling Poiicies

정책에 사용하는 기준 : CPU Utilization, RqeustCountPerTarget, Average Network In/Out ....

 

Instance Refresh

목표 : 시작 템플릿 어데이트와 모든 EC2 인스턴스 재생성