tip: aws 관련 용어
로드 밸런싱이란?
ELB(Elastic Load Balancer)
: 관리형 로드 밸런서
- 자체 로드 밸런서를 마련하는 것보다 저렴하고 확장성 측면에서 굉장히 번거롭기 때문에 ELB를 사용하는 편이 훨씬 낫다.
- 애플리케이션에서 사용할 수 있는 static DNS 이름을 제공함으로써 AWS가 관리하는 기본 인프라가 변경되더라도 AWS는 static 엔드포인트를 사용하여 로드 밸런서에 액세스할 수 있게 한다.
Health Checks
: 헬스 체크는 port와 route에서 이루어진다.
- ELB Health Checks를 활성화하면 ELB가 비정상(충돌) EC2 인스턴스로 트래픽을 보내지 않는다.
Load Balancer Security Groups
: EC2 인스턴스의 보안 그룹을 로드 밸런서의 보안 그룹으로 연결하여 EC2 인스턴스는 로드 밸런서에서 온 트래픽만을 허용하면 강화된 보안 매커니즘이 된다.
Sticky Sessions(Session Affinity)
: 로드 밸런서에 2가지 요청을 수행하는 클라이언트가 요청에 응답하기 위해 백엔드에 동일한 인스턴스를 갖는 것
- 이것은 클라이언트가 세션 데이터를 잃지 않도록 도와준다.
Cookie Names
Applicaion-based Cookies
- Custom cookie: AWSALB, AWSALBAPP, AWSALBTG 같은 이름의 경우 ELB에서 사용하기 때문에 사용하면 안된다.
- Application cookie: AWSALBAPP
Duration-based Cookies
: 로드 밸런서에서 생성되는 쿠키
Server Name Indication(SNI)
: 하나의 웹 서버에 여러 SSL 인증서를 로드해 웹 서버가 여러 웹사이트를 지원하게 만든다.
- CLB: 하나의 SSL 인증서 지원
- ALB, NLB: 여러 SSL 인증서 지원(SNI 사용 가능): SNI를 사용하면 동일한 수신기에서 각각 자체 SSL 인증서가 있는 여러 HTTPS 애플리케이션을 노출할 수 있다.
Connection Draining
: 인스턴스가 등록 취소, 혹은 비정상인 상태에 있을 때 인스턴스에 어느 정도의 시간을 주어 인플라이트(활성) 요청을 완료할 수 있도록 하는 기능
Feature naming
- Connection Draining(CLB)
- Deregistration Delay(ALB, NLB)
ALB(Application Load Balancer)
: HTTP(7계층) 전용 로드 밸런서
- 포트 매핑기능이 있기 때문에 ECS 인스턴스의 동적 포트로의 리다이렉션을 가능하게 한다.
- 마이크로 서비스나 컨테이너 기반 애플리케이션에 가장 좋은 로드 밸런서
Good to know
- 로드 밸런서를 사용하는 경우에도 고정 호스트 이름이 부여된다.
- 애플리케이션 서버는 클라이언트의 IP를 직접 보지 못하며 클라이언트의 실제 IP는 X-Forwarded-For라고 불리는 헤더에 삽입된다.
- X-Forwarded-Port를 사용하는 포트와 X-Forwarded-Proto에 의해 사용되는 프로토콜을 얻게된다.
- ALB는 URL 경로, 호스트 이름, HTTP 헤더 및 쿼리 문자열을 기반으로 트래픽을 다른 대상 그룹으로 라우팅할 수 있다.
- Elastic IP 주소를 Application Load Balancer에 연결할 수 없다.
Target Groups
- EC2 인스턴스
- IP 주소(프라이빗 IP)
- Lambda 함수
NLB(Network Load Balancer)
: TCP, UDP(4계층) 트래픽을 처리할 수 있는 로드 밸런서
- 초당 수백만 건의 요청을 처리할 수 있는 고성능 로드 밸런서이며 지연시간도 ALB 대비 짧다.
- 가용 영역 당 하나의 고정 IP만 존재한다.
- 각 가용 영역에 탄력적 IP를 배정할 수 있다.
- 여러 고정 IP가 있는 애플리케이션을 노출해야 할 때 유용하다.
- Network Load Balancer에는 AZ당 하나의 static IP 주소가 있으며 Elastic IP 주소를 연결할 수 있다.
Target Groups
- EC2 인스턴스
- IP 주소(프라이빗 IP)
- Application Load Balancer
- 헬스 체크는 TCP, HTTP, HTTPS 세가지 프로토콜을 지원한다.
GWLB(Gateway Load Balancer)
: 배포 및 확장과 AWS의 타사 네트워크 가상 어플라이언스의 플릿 관리에 사용하는 로드 밸런서
GENEVE 프로토콜의 6081번 포트 사용
Functions
- Tansparent Network Gateway
- Load Balancer
Target Groups
Cross-Zone Load Balancing
: 모든 AZ에 등록된 모든 EC2 인스턴스에 트래픽을 고르게 분산
- ALB의 경우 교차 영역 로드 밸런싱이 기본적으로 활성화, NLB & GWLB는 비활성화(AZ 간 이동하는 데이터 비용 부과), CLB도 비활성화(AZ 간 이동하는 데이터 비용 비부과)
ASG(Auto Scaling Group)
- Scale out: 인스턴스를 추가해서 늘어난 로드에 맞춘다.
- Scale in: 줄어든 로드에 맞추기 위해 EC2 인스턴스를 제거한다.
- 로드 밸런서와 연결하면 ASG에 포함된 EC2 인스턴스가 로드 밸런서에 연결된다.
- 어떤 인스턴스가 비정상이라고 여겨지면 이것을 종료하고 새 EC2 인스턴스를 만들어 대체한다.
- 스케일아웃 이벤트 중에는 구성한 최대 용량을 초과할 수 없다.
Dynamic Scaling Policies
- Target Tracking Scaling
- Simple/Step Scaling
- Scheduled Actions
predictive Scaling
Scaling Cooldowns
: 인스턴스의 추가 또는 삭제를 막론하고 기본적으로 메트릭이 안정화될 300초(5분)의 휴지 기간을 갖는다.
- 휴지 기간에는 ASG가 추가 인스턴스를 실행 또는 종료할 수 없다.
Instance Refresh