AWS 기초: ELB + ASG

jisoolee·2023년 5월 8일
0

AWS Associate Developer

목록 보기
4/27

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가지 요청을 수행하는 클라이언트가 요청에 응답하기 위해 백엔드에 동일한 인스턴스를 갖는 것

  • 이것은 클라이언트가 세션 데이터를 잃지 않도록 도와준다.
Applicaion-based Cookies
  • Custom cookie: AWSALB, AWSALBAPP, AWSALBTG 같은 이름의 경우 ELB에서 사용하기 때문에 사용하면 안된다.
  • Application cookie: AWSALBAPP
Duration-based Cookies

: 로드 밸런서에서 생성되는 쿠키

  • ALB: AWSALB, CLB: AWSELB

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

  • EC2 인스턴스
  • IP 주소(프라이빗 IP)

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

0개의 댓글