Azure Load Balancer 개념과 AWS ELB와의 비교

2 분 소요

Azure Load Balancer 개념과 AWS ELB와의 비교

LoadBalancer (LB)

Azure Service 탐구 제4탄. Load Balancer. 이번 포스팅에서 이야기할 내용은 다음과 같다.

  • Azure의 Load Balancer란
  • Azure Load Balancer의 유형
  • Azure 의 Application Gateway
  • AWS ELB와의 비교

Azure의 Load Balancer란?

Azure Load Balancer는 OSI 모델 layer4 에서 작동하며, Backend Resource 나 server group에서 들어오는 네트워크 트래픽 부하를 효율적으로 분산시키는 장치이다.

Who’s balanced?

LB는 load balancer의 front end로 들어오는 inbound flow를 backend instances로 pool해줌. backend instance는 Azure vm이나, vm Scaleset의 인스턴스들이 될 수 있다.

How balanced?

  1. Inbound dedicated load balancers (Private LB)

    지정한 ①**load balancing rules**, ② **health probes**에 따라서 부하가 분산된다.


    **load balancing rules**

    • backend pool 내의 모든 인스턴스에 들어오는 트래픽이 배포되는 방법을 정의하는데 사용된다.
    • 지정된 frontend ip구성, 포트를 backend ip주소와 포트에 매핑한다.

    Untitled

    • LB rules를 지정하기 위해서, Azure portal 에서 몇 가지 지정해야 할 요소는 다음과 같다.
      • Backend port

        Backend pool의 어떤 포트로 트래픽 분산할지 정의

      • Backend pool

        분산될 트래픽 대상(ip configuration은 같은 vn내 위치해야함.

        vnet(1):Backend Pool(N)관계이며, pool 내의 vm들은 같은 region 내에 위치해야함.

      • Health probe

        Backend pool의 상태 검사

      • **Session persistance**

        트래픽이 세션 기간 동안 Backend pool에 있는 가상머신 중 같은 머신에서 처리되어야 하는지 지정한다 3가지의 옵션이 있다.

        • None : 요청 모든 가상머신에서 처리
        • Client IP : 동일한 client ip 주소의 연속적인 요청이 동일한 가상머신에서 처리되도록
        • Client IP & Protocol

          동일한 client ip 에다가 더해서 protocol 요청까지 동일한 가상머신에서 처리되도록 결정

      • **Idle timeout(minutes)**

        keep-alive messages를 보내기 위해 클라이언트에 의존하지 않고 TCP HTTP connection을 얼마나 열어둘지를 결정하는 옵션.

      • TCP reset
      • Floating IP

        동적 ip 옵션을 지정하지 않으면 azure는 자체 traditional mapping scheme 에 따라서 load balancing ip address를 노출함. 옵션을 활성화하면 프론트엔드 ip랑 동기화함.

      • **Outbound source network address translation**

        LB의 frontend 에 지정된 public ip를 사용하도록 backend pool instance에 대해 아웃바운드 규칙 구성


    **Health Probes**

    • Health Probes는 부하를 분산하기 전, backend pool의 인스턴스들이 healthy 한지 검사하기 위해 사용된다.
    • HTTP/HTTPS 로 health check를 날리는 경우, probe endpoint에서 200 이외의 응답코드를 반환하면 가동 중단 상태로 표시한다.

    Azure portal 에서 5가지 요소를 설정해야한다.

    • **Health probe name**
    • Protocol

      어떤 프로토콜 사용해 health check할 것인가 (TCP, HTTP, HTTPS) 를 선택하는 옵션

    • Port

      health signal의 목적 포트 (Application 포트와 같을 필요는 없다!!)

    • Interval (단위 : seconds)

      몇초 단위로 health check 날릴껀지

    • **Unhealthy threshold**

      최대 연속 probe failure 수 (이거 넘으면 인스턴스 비정상으로 간주)

    Basic SKU(Pricing tier) 의 경우 HTTPS health check protocol을 지원하지 않는다.


  2. Outbound dedicated load balancers (Public LB)

    Untitled 1

    Outbound load balancing 은 어떤 vm이 어떤 public ip address로 할당될지, 아웃바운드 connection idle timeout 등을 가능하게 해준다.

유형

Azure Load Balancer를 목적 별로 분류한 유형은 2가지. 아래와 같다.

Untitled 2

Azure Application Gateway

Azure Application Gateway

위의 Load Balancer와 기능적으로 동작하는건 같으나, OSI 7계층에서 작동하는 LB이다.

웹 어플리케이션 수준에서 트래픽을 관리할 수 있도록 하는 트래픽 부하 분산 장치이다.

Who’s balanced?

AG는 load balancer의 front end로 들어오는 inbound flow 중에서도 URI 경로, **host header**와 같은 HTTP 요청의 추가적인 특성을 기반으로 라우팅해서 backend instances로 pool 해준다. Azure LB와 마찬가지로, Backend instance는 Azure vm이나, VM Scaleset의 인스턴스들이 될 수 있다.

Untitled 3

AWS ELB와의 비교

AWS에서의 LB hands on 경험이 없었어서, 이번 기회로 콘솔 살펴보면서 AWS vs Azure LB 비교를 한번 해봤다.

Untitled 4

이렇게 Azure LB 정복 끝~