재형이의 성장통 일지
  • Elastic Load Balancer 란
    2023년 05월 22일 11시 14분 59초에 업로드 된 글입니다.
    작성자: 재형이
    반응형

    Elastic Load Balancer 개요

    • ELB는 Elastic Load Balancing의 약자로 AWS에서 제공하는 로드 밸런싱 기술. 로드 밸런서는 EC2 인스턴스의 상태를 확인하고 데이터를 분산하여 전달하는 단일 접점 역할을 수행.

    📢 Load Balance : 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것을 의미하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적입니다.

    Elastic Load Balancer 종류

    1. ALB (Application Load Balancer)

    • HTTP나 HTTPS와 같이 웹 어플리케이션에 대한 분산 처리를 제공.
    • ALB는 HTTP와 HTTPS에 특화된 어플리케이션 레벨의 로드 밸런서로서 다른 로드 밸런서에 비해 처리 속도가 조금 느릴 수 있으나 HTTP(S)에 대한 세부적이고 다양한 정책을 통해 라우팅이 가능.
    • URL 경로 기반 라우팅, 호스트 기반 라우팅, HTTP 헤더 기반 라우팅 등과 같이 다양한 규칙을 생성하여 포워드, 리다이렉션, 지정 HTTP 응답 등의 작업을 수행할 수 있음.
    • ALB는 Lambda 함수를 호출하여 HTTP(S) 요청을 처리할 수 있음

    2. NLB (Network Load Balancer)

    • TCP나 UDP 프로토콜에 대한 포트 정보를 정의하여 네트워크 기반의 분산 처리를 제공.
    • NLB는 TCP, UDP, TLS 프로토콜에 대하여 로드 밸런싱을 수행할 수 있는 OSI 4계층 레벨의 로드 밸런서.
    • 가장 빠른 처리 속도가 가능하며 고정 IP나 탄력적 IP를 보유하고 있음.
    • VPC 엔드포인트 서비스로 연결하여 프라이빗 링크 구성을 할 수 있음.

    3. CLB (Classic Load Balancer) => 안씀

    • EC2 인스턴스의 예전 버전인 EC2-Classic에 대해서도 분산 처리를 제공할 수 있는 이전 세대의 기본적인 로드 밸런서로서 VPC 환경에서는 ALB나 NLB를 사용하는 것을 추천.

    Elastic Load Balancer 주요 기능

    • 고가용성
      ELB로 인입되는 트래픽을 다수의 대상으로 분산하여 고가용성을 유지
    • 상태 확인
      대상 그룹에 대한 Keepalive를 통해 주기적으로 상태를 확인
    • 보안 기능
      보안 그룹을 적용하여 보안 옵션을 부여(단, NLB는 보안 그룹이 적용되지 않음)
    • 4계층/7계층 로드밸런싱
      HTTP/HTTPS의 7계층의 어플리케이션을 로드 밸런싱하거나 TCP/UDP의 4계층의 로드 밸런싱을 사용
    • 운영 모니터링
      ELB 어플리케이션 성능을 실시간으로 모니터

    Elastic Load Balancer 통신 방식

    1. 인터넷 연결 (Internet Facing Load Balancer)
    퍼블릭 주소를 가지고 있어, 인터넷을 통해 요청을 로드 밸런서에 등록된 EC2 인스턴스로 라우팅

    2. 내부 (Internal Load Balancer)
    프라이빗 주소만 가지고 있어, 로드 밸런서를 위한 VPC 내부에 액세스하여 등록된 EC2 인스턴스로 라우팅

    Elastic Load Balancer 생성 순서

    1. 로드밸런서 생성 및 종류 선택

    2. 로드밸런서 리스너 설정

    3. 로드밸런서 대상그룹 설정

    순서로 생성해주면 된다.

     

    📢 주의할점)
    Application Load Balancer 는 생성할 때, 서로 다른 가용영역에 걸쳐서 생성해주어야 한다. 그렇지 않으면 NLB 는 오류가 나지 않지만 ALB는 생성 시 오류가 난다.

    Cloudformation for Application Load Balancer

    # Application Load Balancer
      MyALB:
        Type: AWS::ElasticLoadBalancingV2::LoadBalancer
        Properties:
          Name: My-ALB
          Scheme: internet-facing
          SecurityGroups:
            - !Ref SecurityGroup
          Subnets:
            - !Ref MyPublicSN1
            - !Ref MyPublicSN2
          Tags:
            - Key: Name
              Value: My-ALB
    
      # Listener
      ALBListener:
        Type: AWS::ElasticLoadBalancingV2::Listener
        Properties:
          DefaultActions:
            - Type: forward
              TargetGroupArn: !Ref DefaultTG
          LoadBalancerArn: !Ref MyALB
          Port: 80
          Protocol: HTTP
    
      # Target Group
      DefaultTG:
        Type: AWS::ElasticLoadBalancingV2::TargetGroup
        Properties:
          Name: Default-TG
          Port: 80
          Protocol: HTTP
          HealthCheckPort: 80 # default value is 80
          VpcId: !Ref MyVPC
          Targets:
            - Id: !Ref MyWeb1
              Port: 80
            - Id: !Ref MyWeb2
              Port: 80
    반응형

    '클라우드 > AWS' 카테고리의 다른 글

    딥레이서(DeepRacer) 대회  (0) 2023.06.13
    Route 53 서비스 란  (0) 2023.05.22
    Transit Gateway 란  (2) 2023.05.22
    Global Accelerator 란  (0) 2023.05.22
    AWS 활용해서 온프레미스 환경과 웹서버 연동해보기  (0) 2023.05.21
    댓글