본문으로 바로가기

AWS SAA 강의 - ELB

category AWS/udemy 2023. 5. 29. 13:33

Elastic Load Balancer(ELB)

High Availability

  • 동일 애플리케이션의 동일 인스턴스를 다수의 AZ 걸쳐 실행
  • 고가용성은 애플리케이션이나 시스템을 두 개의 AZ나 데이터 센터에서 가동하는 것을 의미
  • 손실이나 장애를 막기 위해 사용

Load Balancing

  • 네트워크 트래픽을 여러 서버에 분산해주는 서비스
  • 부하를 분산하기 위해 사용
  • 애플리케이션의 단일 액세스 지점(DNS) 노출
  • 인스턴스의 장애를 원할히 처리
  • ELB는 managed load balancer
    • aws가 관리하며 어떤 경우에도 작동할 것을 보장

Health Checks

  • 연결된 인스턴스의 상태를 계속해서 확인

Types of load balancer on AWS

  • Application Load Balancer (v2)
    • HTTP, HTTPS, WebSocket 지원
  • Network Load Balancer(v2)
    • TCP, TLS, UDP 지원
  • Gateway Load Balancer
    • 3계층(Network Layer)에서 IP Protocol 사용

Load Balancer Security Groups

  • 유저는 HTTP, HTTPS를 통해 LB에 접근 가능
  • 인스턴스는 LB만 접근 가능하도록 보안그룹 설정

Application Load Balancer(v2)

  • Application Load Balancer는 7계층에서 동작(HTTP)
  • 다수 HTTP 어플리케이션으로 라우팅되어 부하분산
  • 동일 머신의 다수의 어플리케이션을 부하분산(ex. containers)
  • HTTP/2, Web Socket 지원
  • 라우팅 테이블 지원
    • URL의 경로 기반으로 라우팅
    • URL의 호스트 네임을 기반으로 라우팅
    • 쿼리와 헤더를 기반으로 라우팅
  • 포트 매핑 기능을 지원하기 때문에 동적 포트로의 리다이렉션 가능

Target Groups

  • EC2 인스턴스들의 그룹(Auto Scaling Group을 통해 관리 가능)
  • ECS task
  • Lambda functions
  • IP Addresses
  • ALB는 여러 target group으로 라우팅 가능

Good to Know

  • 호스트네임은 고정(XXX.region.elb.amazonaws.com)
  • 애플리케이션 서버는 클라이언트의 IP를 직접 확인하지 못함
    • 클라이언트 IP는 X-Forwarded-For 헤더에 삽입
    • X-Forwarded-Port에서 사용 포트를 X-Forwarded-Proto에서 사용 프로토콜을 확인 가능

Network Load Balancer(v2)

  • 네트워크 로드 밸런서는 L4 로드 밸런서
    • TCP & UDP 트래픽을 제어
    • 초당 수백만건의 요청을 처리 가능
    • ALB에 비해 지연 시간이 짧음(NLB - 100ms, ALB - 400ms)
  • 네트워크 로드 밸런서는 가용 영역별로 하나의 고정 IP를 가짐

Target Groups

  • EC2 인스턴스
  • IP 주소 - private IP만 사용 가능
  • Application Load Balancer
  • TCP, HTTP와 HTTPS 프로토콜 헬스체크 지원

Gateway Load Balancer

  • 배포 및 확장과 AWS의 타사 네트워크 가상 어플라이언스의 플릿 관리에 사용
  • 네트워크의 모든 트래픽이 방화벽, IDS, IPS, Deep Packet Inspection, payload 수정(네트워크 레벨) 등의 모든 곳을 통과하도록 설계 가능
  • 레이어 3인 네트워크 계층에서 동작 - IP packet
  • GWLB의 기능
    • Transparent Network Gateway - VCP의 모든 트래픽이 GWLB를 지나기 때문
    • Load Balancer - target group인 자신의 가상 어플라이언스 집합(방화벽, IPS 등)에 트래픽을 분산
  • 6081번 포트의 GENEVE 프로토콜을 사용

Target Groups

  • EC2 Instance
  • IP Addresses - private IP만 사용 가능

Sticky Sessions

  • Client가 처음 통신을 시도한 EC2 인스턴스로 계속해서 통신을 유지할 수 있도록 세션 유지
  • Application Load Balancers에서 사용 가능
  • 쿠키를 이용하여 제어

Cookie Names

  • Application-based Cookies
    • Custom Cookie
      • 애플리케이션에서 생성한 Custom Cookie
      • 애플리케이션에 필요한 모든 사용자 정의 속성을 포함
      • 쿠키 이름은 대상 그룹별로 개별적으로 지정
    • Application cookie
      • 로드밸런서에서 생성
      • 생성한 쿠키 이름은 AWSALBAPP
  • Duration-based Cookie
    • 로드밸런서에서 생성한 쿠키
    • ALB의 쿠키 이름은 AWSALB

Cross-Zone Load Balancing

  • 다른 AZ에 존재하는 모든 EC2 인스턴스에 트래픽을 분배
  • Aplication Load Balancer
    • 기본적으로 Cross-Zone Load Balancing 활성화(Target Group 레벨에서 비활성화 가능)
    • 다른 AZ로 옮기는 비용 발생하지 않음
  • Network Load Balancer & Gateway Load Balancer
    • 기본적으로 비활성화
    • AZ간 데이터 옮기는 비용 발생

SSL/TLS

Basic

  • SSL 인증서는 클라이언트와 로드 밸런서 사이에서 트래픽이 이동하는 동안 암호화(in-flight 암호화)
  • SSL은 보안 소켓 계층(Secure Sockets Layer)을 의미하고 연결을 암호화하는데 사용
  • TLS는 새로운 버전의 SSL로 전송 계층 보안(Transport Layer Security)을 의미
  • 최근에는 TLS 인증서가 많이 사용

Load Balancer - SSL Certificates

  • 로드밸런서는 X.509 인증서를 사용(SSL/TLS 서버 인증서)
  • AWS에서는 ACM(AWS Certificate Manager)에서 인증서들을 관리할 수 있음
  • 개인이 가지고 있는 인증서를 ACM에 업로드 가능
  • HTTPS 리스너
    • 기본 인증서로 지정
    • 다중 도메인을 지원하기 위해 다른 인증서를 추가 가능
    • 클라이언트는 SNI(Server Name Indication)을 통해 호스트의 이름을 알릴 수 있음

SNI(Server Name Indication)

  • SNI는 여러 개의 SSL 인증서를 하나의 웹서버에 로드해 여러 개의 웹사이트를 지원
  • 확장된 프로토콜로 클라이언트가 대성 서버의 호스트 이름을 지정
  • ALB & NLB(신버전), CloudFront에서만 지원

Deregistration Delay

  • 인스턴스가 등록 취소, 혹은 비정상인 상태일 때 인스턴스에 어느정도 시간을 주어 'in-flight request'(기존 연결 및 요청)를 완료할 수 있도록 하는 기능
  • 등록 취소(de-registering)중인 EC2 인스턴스에 새로운 요청을 보내지 않음
  • 1~3600초 사이로 설정 가능(기본 300초)

'AWS > udemy' 카테고리의 다른 글

AWS SAA 강의 - EFS  (0) 2023.05.29
AWS SAA 강의 - EBS  (0) 2023.05.29
AWS SAA 강의 - AMI  (0) 2023.05.29
AWS SAA 강의 - EC2  (0) 2023.05.29
AWS SAA 강의 - IAM  (0) 2023.05.29