본문으로 건너뛰기

NLB

1 Network Load Balancer

  • 레퍼런스
  • Network Load Balancer는 높은 성능과 저지연 연결을 처리하는 데 최적화되어 있습니다.
  • NLB는 주로 TCP, UDP, TLS 트래픽을 처리하며, 이는 OSI 모델의 4계층인 전송 계층에서 작동합니다.
  • NLB는 수백만 개의 요청을 초당 처리할 수 있으며, 자동 스케일링 및 무중단 서비스를 제공합니다.

1.1 ALB와 NLB 비교

  • ALB
    • 지연시간: 약 400ms
    • 프로토콜: HTTP, HTTPS, WebSocket, HTTP/2
  • NLB
    • 지연시간: 약 100ms 이하
    • 프로토콜: TCP, UDP, TLS

2 Listener

  • Network Load Balancer에 하나 이상의 listener를 추가합니다.
  • listener는 설정된 프로토콜과 포트를 통해 클라이언트로부터 연결 요청을 확인하고 해당 요청을 타겟 그룹으로 포워딩합니다.

2.1 TLS 리스너 구성

  • TLS 리스너는 클라이언트와 NLB 간의 TLS 트래픽을 처리합니다.
  • TLS 리스너를 구성하려면 AWS Certificate Manager(ACM)에서 인증서를 생성하거나 가져와야 합니다.
  • NLB 설정 시, TLS 리스너를 추가하고 해당 인증서를 선택하여 보안 연결을 설정합니다.

구성 단계

  1. AWS Certificate Manager에서 인증서 생성:
    • ACM을 통해 인증서를 생성하거나 가져옵니다.
  2. NLB 생성:
    • AWS Management Console에서 EC2 서비스로 이동하여 "Load Balancers"를 선택하고 "Create Load Balancer"를 클릭합니다.
    • "Network Load Balancer"를 선택하고 기본 설정을 입력합니다.
  3. TLS 리스너 추가:
    • 리스너 구성 단계에서 프로토콜로 "TLS"를 선택하고 포트 번호를 입력합니다.
    • "Default SSL certificate" 섹션에서 ACM 인증서를 선택합니다.
  4. 대상 그룹 설정:
    • TLS 리스너에서 라우팅할 대상 그룹을 선택합니다.
  5. NLB 생성 완료:
    • 설정을 검토하고 "Create" 버튼을 클릭하여 NLB를 생성합니다.

3 Target Group

  • Target Group은 Network Load Balancer (NLB)가 클라이언트 요청을 분산시킬 대상을 정의하는 논리적인 그룹입니다.
  • NLB는 지정된 프로토콜과 포트 번호를 사용하여 트래픽을 하나 이상의 타겟으로 라우팅합니다.

3.1 타겟 유형

  • EC2 인스턴스: NLB는 다양한 프로토콜(TCP, UDP, TLS)을 사용하는 EC2 인스턴스를 타겟으로 설정할 수 있습니다. 이는 가장 일반적으로 사용되는 타겟 유형으로, AWS의 가상 서버를 통해 트래픽을 처리합니다.
  • IP 주소: 특정 IP 주소를 타겟으로 지정할 수 있습니다. 이를 통해 온프레미스 시스템이나 다른 클라우드 서비스와의 통합이 가능합니다. 이 기능을 사용하면 AWS 외부의 인프라와 연결할 수 있어 유연한 네트워크 구성이 가능합니다.
  • Application Load Balancer (ALB): NLB는 ALB를 타겟으로 설정하여 HTTP/HTTPS 트래픽을 처리할 수 있습니다. 이는 멀티 레이어 로드 밸런싱 구조를 만들 수 있으며, NLB가 4계층에서 트래픽을 관리하고, ALB가 7계층에서 추가적인 라우팅을 처리하는 구조를 구축할 수 있습니다.
  • Lambda: ALB만 사용가능하며 NLB에서는 사용할 수 없습니다.

3.2 헬스 체크

  • 헬스 체크는 NLB가 각 타겟의 상태를 모니터링하는 방법입니다. 헬스 체크는 주기적으로 수행되며, 타겟이 요청을 처리할 준비가 되었는지를 확인합니다.
  • 헬스 체크가 성공적인 타겟만을 사용하여 트래픽을 분산시킴으로써, 서비스의 안정성을 높입니다.
  • 헬스 체크는 TCP, HTTP, HTTPS 프로토콜을 사용하여 설정할 수 있으며, 특정 경로, 타임아웃, 재시도 횟수 등을 설정할 수 있습니다.
    • HTTP/HTTPS 프로토콜은 헬스 체크 용도로만 사용할 수 있습니다.
    • 실제 트래픽의 라우팅에는 TCP, UDP, TLS 프로토콜만 지원합니다.

4 Sticky Sessions in Network Load Balancer (NLB)

4.1 정의 및 기능

  • Sticky Sessions는 특정 클라이언트의 세션이 특정 백엔드 타겟에 고정되도록 하는 기능을 말합니다.
  • Network Load Balancer(NLB)는 전송 계층(OSI 4계층)에서 작동하므로, Application Load Balancer(ALB)에서처럼 쿠키를 사용하여 세션을 고정하지 않습니다.
  • 대신, NLB는 클라이언트의 소스 IP 주소포트 정보를 기반으로 세션을 유지합니다.
    • 이를 Source IP Affinity 또는 Client IP Affinity라고 합니다.

4.2 작동 방식

  • NLB에서 Sticky Sessions은 클라이언트의 소스 IP 주소와 포트 정보를 기반으로 트래픽을 특정 백엔드 타겟으로 고정합니다.
  • 클라이언트가 동일한 소스 IP 주소와 포트를 사용하여 연결을 시도할 때, NLB는 이전에 할당된 동일한 타겟 인스턴스로 트래픽을 라우팅합니다.
  • 이 방식은 클라이언트와 서버 간의 세션 일관성을 유지하는 데 사용되며, 특히 상태 저장(Stateful) 애플리케이션에서 유용합니다.

4.3 설정 방법

  • NLB의 Target Group을 설정할 때, Sticky Sessions을 활성화할 수 있습니다.
  • Target Group 설정에서 Stickiness를 활성화하고, 세션 유지 기간(초)을 설정할 수 있습니다.
  • 설정된 시간 동안 동일한 소스 IP와 포트에서 오는 요청은 동일한 타겟 인스턴스로 라우팅됩니다.

4.4 장점과 고려 사항

  • 장점: 클라이언트 세션이 일정한 서버에 고정되므로, 세션 정보를 서버 간에 동기화할 필요가 줄어듭니다. 이는 상태 저장 애플리케이션에서 세션 일관성을 유지하는 데 도움이 됩니다.
  • 고려 사항: 특정 서버에 트래픽이 집중될 수 있으므로, 서버 간 부하 분산이 균등하지 않을 수 있습니다. 이로 인해 일부 서버가 과부하될 수 있으므로, 설정을 신중하게 조정할 필요가 있습니다.

5 Cross-Zone Load Balancing in Network Load Balancer (NLB)

5.1 정의 및 기능

  • Cross-Zone Load Balancing은 Network Load Balancer(NLB)에서 여러 가용 영역(AZ)에 걸쳐 트래픽을 고르게 분산시키는 기능입니다.
  • 이 기능을 활성화하면, NLB는 동일 리전 내의 모든 가용 영역에 걸쳐 있는 타겟 인스턴스에 트래픽을 균등하게 분배합니다.
  • 이를 통해 특정 가용 영역에 트래픽이 과도하게 집중되는 것을 방지하고, 전체 인프라의 안정성과 가용성을 높일 수 있습니다.

5.2 작동 방식

  • Cross-Zone Load Balancing이 활성화된 경우, NLB는 각 가용 영역의 모든 타겟에 균등하게 트래픽을 분산합니다.
  • 예를 들어, 두 개의 가용 영역(AZ A, AZ B)에 각각 4개의 타겟 인스턴스가 있을 경우, Cross-Zone Load Balancing을 사용하면 각 인스턴스는 전체 리전에서 들어오는 트래픽의 1/8씩을 처리하게 됩니다.

5.3 활성화 방법

  • 기본적으로 Network Load Balancer(NLB)의 Cross-Zone Load Balancing 기능은 비활성화되어 있습니다.
  • AWS Management Console, CLI, SDK를 통해 NLB의 설정에서 Cross-Zone Load Balancing을 활성화할 수 있습니다.
  • NLB를 생성하거나 기존 NLB의 설정을 편집할 때, 이 기능을 활성화하거나 비활성화할 수 있습니다.

5.4 장점과 고려 사항

  • 장점
    • 고가용성: 특정 가용 영역의 인스턴스에 장애가 발생하더라도, 다른 가용 영역의 인스턴스가 트래픽을 처리할 수 있어 서비스의 중단을 최소화할 수 있습니다.
    • 부하 균등화: 모든 가용 영역에 걸쳐 트래픽이 균등하게 분배되어, 인스턴스 간의 부하가 고르게 분포됩니다.
  • 고려 사항
    • 비용: Cross-Zone Load Balancing 기능이 활성화되면, 가용 영역 간의 데이터 전송 비용이 발생할 수 있습니다.
    • 일부 상황에서는 가용 영역 간의 트래픽 분배를 신중하게 계획해야 할 필요가 있습니다.