ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS | ALB와 NLB 차이점
    aws 2021. 5. 26. 00:54

    평소에 aws의 LB(Load Banlancer) 중 ALB(Application Load Balancer)와 NLB(Network Load Balancer)의 차이점으로는 통신하는 네트워크 계층의 차이정 도로 밖에 설명을 못하는 것 같아 이에 대한 내용을 공부해보려고 ALB와 NLB의 차이점에 대해서 정리해보려고 합니다.

     

    시작하기 전에 LB(Load Balancer)는 무슨 역할을 하는지에 대해서 다시 한번 정리하도록 하겠습니다.

     

    Load Balancer란

    하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산 처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산 처리하여 해결해주는 서비스입니다.

    위의 그림처럼 사용자가 많아져 트래픽이 하나의 서버로 몰리지 않도록 적절하게 분배시켜주는 역할을 합니다.

     

     

    AWS ALB, NLB 비교

    ALB와 NLB의 차이점은 다음과 같습니다.

    ALB

    1. ALB는 L7단의 로드 밸런서를 지원합니다.
    2. ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
    3. ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭합니다.
    4. ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
    5. ALB는 L7단을 지원하기 때문에 SSL 적용이 가능합니다.

    NLB

    1. NLB는 L4단의 로드 밸런서를 지원합니다.
    2. NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
    3. NLB는 IP + 포트번호를 보고 스위칭합니다.
    4. NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능합니다.
    5. NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해 주어야 합니다.

     

    번외

    ALB에 고정IP 적용

    alb는 기본적으로 IP가 변경되기 때문에 고정 IP를 가질 수 있는 NLB를 앞에 둠으로서 적용이 가능합니다.

    위의 그림처럼 앞에 NLB를 두지만 CloudWatch와 Lambda함수를 이용하여 ALB의 IP가 변경되는 시점마다 변경된 IP에 맞게 설정해주는 작업이 추가적으로 필요합니다.

     

    위의 내용에 관해서는 링크를 걸어 두도록 하겠습니다.

    https://aws.amazon.com/ko/blogs/korea/using-static-ip-addresses-for-application-load-balancers/

     

    ALB와 NLB의 속도 차이

    NLB의 장점 중 하나는 클라이언트의 요청에 대해서 낮은 대기 시간으로 높은 처리가 가능하다는 것입니다.

    NLB는 network 계층까지만 확인하기 때문에 7 계층인 ALB보다 빠릅니다.

    또한 기존 ELB사용 시에 짧은 시간 내 스파크 성 트래픽 발생에 대한 대응이 어려웠으나 NLB를 사용함으로 ELB의 단점을 해소할 수 있습니다.

    마지막으로 단순한 라우팅이 필요하고, 트래픽이 극도로 많은 경우에는 ALB 보다는 NLB를 사용하는 것이 적합하다고 할 수 있습니다.

     

    ALB/NLB Target Group

    ALB

    Target Group을 Instance ID로 지정

    ALB는 인스턴스에 대한 연결이 로드 밸런서에서 설정되므로 웹 서버 액세스 로그에는 로드 밸런서의 IP 주소가 캡처됩니다. 

    따라서 Client의 IP를 얻기 위해서는 X-Forwarded-For헤더를 사용합니다.

     

    X-Forwarded-For 요청 헤더는 자동으로 추가되어 HTTP 또는 HTTPS 로드 밸런서를 사용할 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다. 로드 밸런서가 클라이언트와 서버 간의 트래픽을 가로채기 때문에 서버 액세스 로그에 로드 밸런서의 IP 주소만 포함됩니다. 클라이언트의 IP 주소를 확인하려면 X-Forwarded-For 요청 헤더를 사용하십시오
    https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/x-forwarded-headers.html

     

    NLB

    Target Group을 Instance ID로 지정

    Instance ID로 지정한 Target Group의 경우 DSR(Direct Server Return) 방식으로 동작하여 Response 시에 EC2 Instance는 직접 Client에게 패킷을 전달합니다.

    따라서 Server단에서 Client의 ip를 확인할 수 있습니다.

     

    Target Group을 IP로 지정

    IP로 지정한 Target Group의 경우 기존 방식대로 Request/Response가 모두 LB를 경유하기 때문에 아웃바운드 통신이 되지 않는 Private 구간에서도 NLB를 이용하여 서비스가 가능합니다.

     

    따라서 Server단에서 LoadBalancer의 ip를 확인할 수 있습니다.

     

     

     

    ALB와 NLB를 다시 한번 정리해보면서 새로 알게 된 내용도 많았던 거 같고, 생각보다 LB에 대한 내용들이 많은 것 같았습니다. 추후에도 LB에 관련해서 공부를 더하려 정리하는 시간을 가져볼 생각입니다.

     

     

    참고 블로그


    'aws' 카테고리의 다른 글

    AWS | Karpenter  (0) 2022.10.13
Designed by Tistory.