Network Load Balancer - Elastic Load Balancing

Network Load Balancer

로드 밸런서는 클라이언트에 대한 단일 접점 역할을 수행합니다. 클라이언트는 로드 밸런서에 요청을 전송하고 로드 밸런서는 하나 이상의 가용 영역에 있는 EC2 인스턴스 같은 대상으로 이를 전송합니다.

로드 밸런서를 구성하려는 경우, 대상 그룹을 생성한 다음 대상을 해당 대상 그룹에 등록합니다. 활성화된 각 가용 영역에 등록된 대상이 하나 이상 있는지 확인하는 경우에 로드 밸런서가 가장 효과적입니다. 리스너를 생성하여 클라이언트의 연결 요청을 확인하고, 클라이언트에서 대상 그룹에 있는 대상으로 요청을 라우팅합니다.

Network Load Balancer는 VPC 피어링, AWS 관리형 VPN, AWS Direct Connect 및 타사 VPN 솔루션을 통해 클라이언트에서의 연결을 지원합니다.

로드 밸런서 상태

로드 밸런서는 다음 중 하나의 상태일 수 있습니다.

provisioning

로드 밸런서를 설정하는 중입니다.

active

로드 밸런서가 완전히 설정되어 트래픽을 라우팅할 준비가 되었습니다.

failed

로드 밸런서를 설정할 수 없습니다.

로드 밸런서 속성

다음은 로드 밸런서의 속성입니다.

deletion_protection.enabled

삭제 방지 기능의 활성화 여부를 나타냅니다. 기본값은 false입니다.

load_balancing.cross_zone.enabled

교차 영역 로드 밸런싱의 활성화 여부를 나타냅니다. 기본값은 false입니다.

가용 영역

로드 밸런서를 생성할 때 하나 이상의 가용 영역을 활성화합니다. 로드 밸런서에서 가용 영역을 여러 개 활성화하면 애플리케이션의 내결함성이 높아집니다. 생성한 후에는 Network Load Balancer에 대한 가용 영역을 비활성화할 수 없지만 추가 가용 영역을 활성화할 수 있습니다.

가용 영역을 활성화할 때 해당 가용 영역에서 서브넷을 하나 지정합니다. Elastic Load Balancing은 가용 영역에 로드 밸런서 노드를 생성하고 서브넷의 네트워크 인터페이스를 만듭니다(설명은 'ELB net'으로 시작하며 로드 밸런서의 이름을 포함함). 가용 영역의 각 로드 밸런서 노드는 이 네트워크 인터페이스를 사용하여 IPv4 주소를 가져옵니다. 이 네트워크 인터페이스를 볼 수 있으나 수정할 수는 없습니다.

인터넷 경계 로드 밸런서를 생성하는 경우 필요에 따라 서브넷당 하나의 탄력적인 IP 주소를 지정할 수 있습니다. 고유한 탄력적인 IP 주소 중 하나를 선택하지 않는 경우 Elastic Load Balancing는 서브넷당 하나의 탄력적인 IP 주소를 제공합니다. 이러한 탄력적인 IP 주소는 로드 밸런서 수명 동안 변경되지 않는 고정 IP 주소를 로드 밸런서에 제공합니다. 로드 밸런서를 생성한 후에는 이러한 탄력적인 IP 주소를 변경할 수 없습니다.

내부 로드 밸런서를 생성하는 경우 필요에 따라 서브넷당 하나의 프라이빗 IP 주소를 지정할 수 있습니다. 서브넷에서 IP 주소를 지정하지 않으면 Elastic Load Balancing에서 하나를 자동으로 선택합니다. 이러한 프라이빗 IP 주소는 로드 밸런서 수명 동안 변경되지 않는 고정 IP 주소를 로드 밸런서에 제공합니다. 로드 밸런서를 생성한 후에는 이러한 프라이빗 IP 주소를 변경할 수 없습니다.

요구 사항

  • 인터넷 경계 로드 밸런서의 경우, 사용자가 지정하는 서브넷에 사용 가능한 IP 주소가 8개 이상 있어야 합니다. 내부 로드 밸런서의 경우, AWS가 서브넷에서 프라이빗 IPv4 주소를 선택할 수 있는 경우에만 필요합니다.

  • 제약된 가용 영역의 서브넷은 지정할 수 없습니다. 해당 오류 메시지는 "유형이 'network'인 로드 밸런서는 az_name에서 지원되지 않음"과 같습니다. 제약되지 않은 다른 가용 영역의 서브넷을 지정하고 교차 영역 로드 밸런싱을 사용하여 제약된 가용 영역의 대상에 트래픽을 분산할 수 있습니다.

  • 로컬 영역에서는 서브넷을 지정할 수 없습니다.

가용 영역을 활성화하고 나면 로드 밸런서가 해당 가용 영역의 등록 대상으로 요청을 라우팅하기 시작합니다. 활성화된 각 가용 영역에 등록된 대상이 하나 이상 있는지 확인하는 경우에 로드 밸런서가 가장 효과적입니다.

콘솔을 사용하여 가용 영역을 추가하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 [LOAD BALANCING] 아래에서 [Load Balancers]를 선택합니다.

  3. 로드 밸런서를 선택합니다.

  4. [Description] 탭에서 [Basic Configuration] 아래 [Edit subnets]을 선택합니다.

  5. 가용 영역을 활성화하려면 해당 가용 영역 확인란을 선택합니다. 가용 영역에 대해 서브넷 한 개가 있는 경우 해당 서브넷이 선택됩니다. 가용 영역에 대해 서브넷이 두 개 이상 있는 경우 서브넷 중 하나를 선택합니다. 가용 영역당 서브넷을 한 개만 선택할 수 있습니다.

    인터넷 경계 로드 밸런서의 경우, 각 가용 영역에 대해 탄력적인 IP 주소를 선택할 수 있습니다. 내부 로드 밸런서의 경우, Elastic Load Balancing에서 할당하는 대신 각 서브넷의 IPv4 범위에서 프라이빗 IP 주소를 할당할 수 있습니다.

  6. 저장을 선택합니다.

AWS CLI를 사용하여 가용 영역을 추가하려면

set-subnets 명령을 사용합니다.

교차 영역 로드 밸런싱

기본적으로 각 로드 밸런서 노드는 해당 가용 영역의 등록된 대상에만 트래픽을 분산합니다. 교차 영역 로드 밸런싱을 활성화하면 각 로드 밸런서 노드가 활성화된 모든 가용 영역에 있는 등록된 대상 간에 트래픽을 분산합니다. 자세한 내용은 Elastic Load Balancing 사용 설명서교차 영역 로드 밸런싱을 참조하십시오.

콘솔을 사용하여 교차 영역 로드 밸런싱을 활성화하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 로드 밸런싱에서 로드 밸런서를 선택합니다.

  3. 로드 밸런서를 선택합니다.

  4. [Description], [Edit attributes]를 선택합니다.

  5. 로드 밸런서 속성 편집 페이지에서 교차 영역 로드 밸런싱에 대해 활성화를 선택하고 저장을 선택합니다.

AWS CLI를 사용하여 교차 영역 로드 밸런싱을 활성화하려면

load_balancing.cross_zone.enabled 속성과 함께 modify-load-balancer-attributes 명령을 사용합니다.

삭제 방지

로드 밸런서가 실수로 삭제되지 않도록 방지하려면, 삭제 방지 기능을 활성화할 수 있습니다. 기본 설정상 로드 밸런서에 대한 삭제 방지 기능은 비활성화되어 있습니다.

로드 밸런서용 삭제 방지 기능을 활성화하는 경우 로드 밸런서를 삭제하기 전에 이 기능을 먼저 비활성화해야 합니다.

콘솔을 사용하여 삭제 방지 기능을 활성화하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 로드 밸런싱에서 로드 밸런서를 선택합니다.

  3. 로드 밸런서를 선택합니다.

  4. [Description], [Edit attributes]를 선택합니다.

  5. 로드 밸런서 속성 편집 페이지에서 삭제 보호에 대해 활성화를 선택하고 저장을 선택합니다.

콘솔을 사용하여 삭제 방지 기능을 비활성화하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 로드 밸런싱에서 로드 밸런서를 선택합니다.

  3. 로드 밸런서를 선택합니다.

  4. [Description], [Edit attributes]를 선택합니다.

  5. [Edit load balancer attributes] 페이지에서 [Enable delete protection]을 취소하고 [Save]를 선택합니다.

AWS CLI를 사용하여 삭제 방지 기능을 활성화 또는 비활성화하려면

deletion_protection.enabled 속성과 함께 modify-load-balancer-attributes 명령을 사용합니다.

연결 유휴 제한 시간

클라이언트가 Network Load Balancer를 통해 생성하는 각 TCP 요청에 대해 연결 상태는 추적됩니다. 유휴 제한 시간보다 오래 클라이언트 또는 대상에 의한 연결을 통해 데이터가 전송되지 않으면 연결이 닫힙니다. 유휴 제한 시간이 지난 후 클라이언트 또는 대상에서 데이터를 보내면 연결이 더 이상 유효하지 않음을 나타내는 TCP RST 패킷이 수신됩니다.

Elastic Load Balancing은 TCP 흐름의 유휴 제한 시간 값을 350초로 설정합니다. 이 값은 수정할 수 없습니다. 클라이언트 또는 대상은 TCP keepalive 패킷을 사용하여 유휴 제한 시간을 리셋할 수 있습니다.

UDP가 연결이 없는 동안 로드 밸런서는 소스 및 대상 IP 주소와 포트를 기반으로 UDP 흐름 상태를 유지하므로 동일한 흐름에 속한 패킷이 일관되게 동일한 대상으로 전송됩니다. 유휴 시간 초과 기간이 지나면 로드 밸런서는 들어오는 UDP 패킷을 새 흐름으로 간주하여 새 대상으로 라우트합니다. Elastic Load Balancing는 UDP 흐름의 유휴 제한 시간 값을 120초로 설정합니다.

EC2 인스턴스는 반환 경로를 설정하기 위해 30초 이내에 새 요청에 응답해야 합니다.

DNS 이름

각 Network Load Balancer는 name-id.elb.region.amazonaws.com을 포함하는 기본 설정된 DNS(Domain Name System) 이름을 수신합니다. 예: my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com.

기억하기 쉬운 DNS 이름을 사용하는 것을 선호하는 경우, 사용자 지정 도메인 이름을 생성하고 이를 로드 밸런서의 DNS 이름과 연결할 수 있습니다. 클라이언트가 이러한 사용자 지정 도메인 이름을 사용해 요청을 하면 DNS 서버는 이를 로드 밸런서의 DNS 이름으로 해석합니다.

먼저 인증된 도메인 등록 대행자를 이용해 도메인 이름을 등록합니다. 다음으로 CNAME 레코드를 생성하여 쿼리를 로드 밸런서로 라우팅 요청을 하려면 도메인 등록 대행자와 같은 DNS 서비스를 사용하면 됩니다. 자세한 내용은 DNS 서비스에 대한 설명서를 참조하십시오. 예를 들면, Amazon Route 53을 DNS 서비스로 사용할 수 있습니다. 자세한 내용은 Amazon Route 53 개발자 안내서ELB 로드 밸런서로 트래픽 라우팅을 참조하십시오.

로드 밸런서는 활성화된 각 가용 영역에 대하여 하나의 IP 주소를 가집니다. 이는 로드 밸런서 노드의 주소입니다. 로드 밸런서의 DNS 이름은 이러한 주소로 확인됩니다. 예를 들어, 로드 밸런서의 사용자 지정 도메인 이름이 example.networkloadbalancer.com이라고 가정해 보겠습니다. 다음 dig 또는 nslookup 명령을 사용하여 로드 밸런서 노드의 IP 주소를 확인합니다.

Linux 또는 Mac

$ dig +short example.networkloadbalancer.com

Windows

C:\> nslookup example.networkloadbalancer.com

로드 밸런서는 로드 밸런서 노드를 위한 DNS 레코드를 가집니다. az.name-id.elb.region.amazonaws.com을 포함하는 이름의 DNS 이름을 사용하여 로드 밸런서 노드의 IP 주소를 확인할 수 있습니다.

Linux 또는 Mac

$ dig +short us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com

Windows

C:\> nslookup us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com