Elastic Load Balancer (ELB) - aws_introduction[12]

Elastic Load Balancer (ELB) - aws_introduction[12]

생성일
May 16, 2024 05:14 AM
Description
ELB에 대해 알아봅니다.
Tag
AWS

로드밸런싱

notion image
  • user가 인스턴스에 접속하려면, scale out으로 인해 생성된 인스턴스들의 모든 ip를 알고 있어야 한다.
  • 즉, 부하를 분산해주는 로드밸런싱이 필요하다.
 
notion image
 

Elastic Load Balancer

notion image
Elastic Load Balancing은 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소, Lambda함수와 같은 여러 대상에 자동으로 분산시킵니다. Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에서 다양한 애플리케이션 부하를 처리할 수 있습니다. Elastic Load Balancing이 제공하는 세 가지 로드밸런서는 모두 애플리케이션의 내결함성에 필요한 고가용성, 자동 확장/축소, 강력한 보안을 갖추고 있습니다.
 
  • 다수의 서비스에 트래픽을 분산 시켜주는 서비스
  • Health Check: 직접 트래픽을 발생시켜 Instance가 살아있는지 체크
  • Autoscaling과 연동 가능
  • 여러 가용영역에 분산 가능
  • 지속적으로 IP 주소가 바뀌며 IP 고정 불가능: 항상 도메인 기반으로 사용
  • 총 4가지 종류
    • Application Load Balancer
    • Network Load Balancer
    • Classic Load Balancer
    • Gateway Load Balancer
 

Application Load Balancer

  • 똑똑함
  • Network Load Balancer
    • 빠름
    • TCP 기반 빠른 트래픽 분산
    • Elastic IP 할당 가능
  • Classic Load Balancer
    • 옛날 방식
    • 예전에 사용되던 타입으로 현재는 잘 사용하지 않음
  • Gateway Load Balancer
    • 먼저 트래픽 체크함
    • 가상 어플라이언스 배포/확장 관리를 위한 서비스
 
Gateway Load Balancer: EC2에 도달하기 전에 네트워크 어플라이언스에 접근하여 인증, 로깅 등 여러 작업을 먼저
Gateway Load Balancer: EC2에 도달하기 전에 네트워크 어플라이언스에 접근하여 인증, 로깅 등 여러 작업을 먼저
 

대상 그룹(Target Group)

  • ALB가 라우팅 할 대상의 집합
  • 구성
    • 3 + 1가지 종류
      • Instance
      • IP (private)
      • Lambda
      • ALB
    • 프로토콜(HTTP, HTTPS, gRPC 등)
    • 기타 설정
      • 트래픽 분산 알고리즘, 고정 세션 등
 
대상 그룹
대상 그룹
 
일반적인 아키텍쳐
일반적인 아키텍쳐
 

실습

  • 시작 템플릿
    • 바로 전에 만들었던 시작 템플릿을 수정
notion image
  • 고급 세부 정보 > 사용자 데이터에 아래의 내용 추가
    • instance가 올라갈 때 instanceID를 index.html에 추가하여 웹서버를 실행하도록 하겠다.
notion image
#!/bin/bash TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") INSTANCE_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id) yum install httpd -y echo ""$INSTANCE_ID"" >> /var/www/html/index.html service httpd start
 
  • 기존에 만들었던 AutoScaling 그룹
    • 시작 템플릿을 편집 ⇒ 버전을 올림
notion image
→ public IP를 통해 페이지에 접속하면 인스턴스 ID를 확인할 수 있다.
 
  • 로드밸런싱 > 대상 그룹 설정
notion image
notion image
  • AutoScaling으로 인해 생성된 인스턴스들을 선택하고 아래에 보류 중인 것으로 포함 클릭
 
  • 로드밸런서 > 로드밸런서 생성
  • Application Load Balancer 생성
notion image
notion image
notion image
  • 대상그룹 선택
  • ALB의 DNS 을 통해 접근하면 접근할 때마다 인스턴스 ID가 다르게 뜨는 것을 볼 수 있다.
 
  • 이번엔 로드밸런서를 ALB에 붙여보자
  • Auto Scaling 그룹 > MyASG > 로드 밸런싱 편집
notion image
  • 이러한 행동을 함으로써 Auto Scaling으로 인해 생성된 인스턴스들은 타겟 그룹에 들어가게 된다.
 
📌
만약 AutoScaling 관점에서는 정상인데, ELB 관점에서는 에러인 경우는? ex) 인스턴스는 올라가있으나, 웹서버가 죽은 경우
notion image
  • AutoScaling 그룹에서 ELB 상태 확인도 키면, 웹서버가 정상적인 트래픽을 주는지도 확인하여 웹서버가 뻗었다면 재부팅