영역 네트워크 엔드포인트 그룹 개요

네트워크 엔드포인트 그룹(NEG)은 백엔드 엔드포인트 또는 서비스 그룹을 지정하는 구성 객체입니다. 영역 NEG는 IP 주소 컬렉션 및 단일 서브넷 내 Google Cloud 리소스의 IP 주소/포트 조합을 나타내는 영역 리소스입니다.

NEG를 사용하면 전체 VM 대신 소프트웨어 서비스를 나타내는 IP 주소 및 포트의 논리적 그룹을 만들 수 있기 때문에 유용합니다. Apache Mesos 또는 Cloud Foundry 같은 다른 조정 서비스에서 관리하는 마이크로서비스(Google Cloud VM에서 실행)의 IP 주소는 엔드포인트일 수 있습니다.

다른 NEG 유형에 대한 자세한 내용은 다음을 참조하세요.

NEG를 구성하는 네트워크 엔드포인트 유형에 따라 2가지 유형의 영역 NEG가 있습니다. 두 가지 유형의 영역 NEG는 각각 다른 사용 사례와 부하 분산기 유형을 지원합니다.

네트워크 부하 분산에는 영역 NEG를 백엔드로 사용할 수 없습니다.

GCE_VM_IP NEG

이러한 영역 NEG에는 Compute Engine VM의 기본 IP 주소로 확인되는 내부 네트워크 엔드포인트가 하나 이상 포함됩니다. 이 유형의 영역 NEG가 있는 포트는 지정할 수 없습니다.

이 엔드포인트는 내부 TCP/UDP 부하 분산기의 백엔드 서비스에서 백엔드로만 사용할 수 있습니다.

GCE_VM_IP NEG를 사용하면 NEG의 VPC 네트워크에 있는 VM의 기본 내부 IP 주소에 속하는 엔드포인트만 연결할 수 있습니다. NEG가 NIC와 동일한 VPC 네트워크를 사용하면 다중 NIC VM의 모든 NIC의 기본 내부 IP 주소를 NEG에 추가할 수 있습니다.

GCE_VM_IP_PORT NEG

이러한 영역 NEG에는 VM의 기본 내부 IP 주소 또는 별칭 IP 범위 중 하나의 IP 주소로 확인되는 내부 네트워크 엔드포인트가 하나 이상 포함됩니다. 예를 들어 GKE는 엔드포인트가 노드의 별칭 IP 범위의 IP 주소와 포트(Pod IP 주소 및 컨테이너 포트)인 이 유형의 NEG를 사용합니다. 각 네트워크 엔드포인트는 IP 주소와 포트 조합을 사용하여 지정됩니다.

이러한 NEG는 외부 HTTP(S), 내부 HTTP(S) 부하 분산, TCP 프록시, SSL 프록시 부하 분산기의 백엔드 서비스에서 백엔드로 사용할 수 있습니다. 내부 TCP/UDP 부하 분산기 또는 네트워크 부하 분산기에서는 GCE_VM_IP_PORT 엔드포인트를 사용할 수 없습니다. 이러한 영역 NEG 백엔드를 사용하면 IP 주소 및 포트를 지정할 수 있으므로 VM 인스턴스 내에서 실행되는 애플리케이션 또는 컨테이너 간에 세분화 방식으로 트래픽을 배포할 수 있습니다.

VM에서 실행되는 컨테이너나 애플리케이션에 고유한 GCE_VM_IP_PORT 네트워크 엔드포인트를 만들려면 VM의 기존 IP 주소를 사용하거나 별칭 IP 주소 기능을 사용하여 VM에 할당된 보조 IP를 사용해야 합니다. VM에서 실행되는 컨테이너 또는 애플리케이션에서 실행 중인 소프트웨어는 네트워크 엔드포인트에서 사용된 IP 주소에 바인딩되도록 구성해야 합니다.

GCE_VM_IP_PORT NEG는 특히 GKE에 유용합니다. 영역 NEG를 GKE와 함께 사용하는 방법은 컨테이너 기반 부하 분산 사용을 참조하세요.

엔드포인트 관계

NEG를 만들 때 영역, 네트워크, 서브넷을 선택합니다. 모든 엔드포인트 IP 주소는 영역 NEG와 동일한 서브넷에 있어야 합니다.

선택한 네트워크가 자동 모드 네트워크이면 서브넷 지정 단계는 생략해도 됩니다. 하지만 서브넷은 여전히 영역별 NEG와 연결되어 있습니다. 자동 모드 네트워크를 지정했지만 영역 NEG를 만들 때 서브넷을 지정하지 않으면 영역 NEG에 대해 선택한 영역이 포함된 리전에 자동으로 생성된 서브넷을 사용하게 됩니다.

만드는 영역 NEG 유형은 NEG를 만들 때 지정됩니다(GCE_VM_IP 또는 GCE_VM_IP_PORT). 이렇게 하면 NEG가 지원하는 엔드포인트 유형이 결정됩니다.

GCE_VM_IPGCE_VM_IP_PORT 영역 NEG의 경우:

  • 각 VM 엔드포인트의 이름을 지정해야 합니다.

  • 각 엔드포인트 VM은 NEG와 동일한 영역에 있어야 합니다.

  • NEG의 모든 엔드포인트는 IP 주소와 포트의 고유한 조합이어야 합니다. 2개 이상의 NEG에서 엔드포인트 IP 주소와 포트의 고유한 조합을 참조할 수 있습니다.

  • 각 엔드포인트 VM은 NEG와 동일한 VPC 네트워크에 네트워크 인터페이스(NIC)가 있어야 합니다. 엔드포인트 IP 주소는 NEG에 지정된 것과 동일한 서브넷과 연결되어야 합니다.

  • 각 NEG는 NEG당 최대 엔드포인트 수를 지원합니다. 엔드포인트는 여러 고유한 VM 간에 분산되거나 하나의 VM에 위치할 수 있습니다.

GCE_VM_IP_PORT NEG의 경우 엔드포인트를 추가할 때 IP 주소와 포트를 지정하거나, IP 주소만 지정할지, 둘 다 지정하지 않을 있습니다.

  • IP 주소와 포트를 지정하는 경우 IP 주소는 VM NIC의 기본 내부 IP 주소이거나 NIC의 별칭 IP일 수 있습니다. 포트는 선택 항목입니다.

  • IP 주소만 지정하는 경우 IP 주소는 VM NIC의 기본 내부 IP 주소이거나 NIC의 별칭 IP일 수 있습니다. 사용되는 포트는 NEG의 기본 포트입니다.

  • 둘 다 생략하는 경우 Google Cloud가 NIC의 기본 내부 IP 주소를 선택하고 NEG의 기본 포트를 사용합니다.

영역 NEG를 사용한 부하 분산

영역 NEG는 부하 분산기에서 백엔드 서비스의 백엔드로 사용할 수 있습니다. 영역 NEG를 백엔드 서비스의 백엔드로 사용하면 해당 백엔드 서비스의 다른 모든 백엔드도 동일한 유형의 영역 NEG여야 합니다(모든 GCE_VM_IP 또는 GCE_VM_IP_PORT). 인스턴스 그룹과 영역 NEG를 동일한 백엔드 서비스에서 백엔드로 사용할 수 없습니다.

동일한 네트워크 엔드포인트를 둘 이상의 영역 NEG에 추가할 수 있습니다. 둘 이상의 백엔드 서비스의 백엔드로 동일한 영역 NEG를 사용해도 됩니다.

GCE_VM_IP_PORT영역 NEG는 백엔드 서비스의 프로토콜에 따라 RATE 분산 모드 또는 CONNECTION 분산 모드를 사용할 수 있습니다. 지원되는 부하 분산기에는 대상 용량이 정의되어 있어야 합니다.

GCE_VM_IP 영역 NEG는 CONNECTION 분산 모드를 사용해야 하며 내부 TCP/UDP 부하 분산기는 대상 용량 설정을 지원하지 않으므로 대상 용량을 정의할 수 없습니다.

영역 NEG 백엔드에 UTILIZATION 분산 모드를 사용할 수 없습니다.

내부 TCP/UDP 부하 분산

GCE_VM_IP 엔드포인트가 있는 영역 NEG는 내부 TCP/UDP 부하 분산기에서 백엔드 서비스의 백엔드로만 사용할 수 있습니다.

GCE_VM_IP 엔드포인트가 있는 NEG의 기본 사용 사례는 다음과 같습니다.

내부 TCP/UDP 부하 분산기의 간소화된 VM 관리

인스턴스 그룹과 마찬가지로 여러 내부 TCP/UDP 부하 분산기의 백엔드와 동일한 NEG를 사용할 수 있습니다. 인스턴스 그룹과 달리 VM 엔드포인트는 여러 NEG의 구성원일 수 있으며, 이러한 NEG는 각각 하나 이상의 내부 TCP/UDP 부하 분산기의 백엔드로 사용할 수 있습니다.

겹치는 `GCE_VM_IP` 영역 NEG가 있는 내부 TCP/UDP 부하 분산기
겹치는 영역 NEG가 있는 내부 TCP/UDP 부하 분산기

GKE 하위 설정

GKE는 GCP_VM_IP 영역 NEG 및 하위 설정을 사용하여 다음과 같은 방법으로 내부 TCP/UDP 부하 분산기의 확장성을 개선합니다.

하위 설정을 사용하지 않으면 GKE는 영역당 하나의 비관리형 인스턴스 그룹을 만듭니다. 이는 해당 영역에 있는 모든 노드 풀의 클러스터 노드로 구성됩니다. 이러한 영역 인스턴스 그룹은 하나 이상의 내부 LoadBalancer 서비스(및 NEG를 사용하지 않는 외부 인그레스)의 백엔드로 사용됩니다.

하위 설정을 사용하면 GKE는 각 내부 LoadBalancer 서비스에 대해 GCE_VM_IP 영역 NEG를 만듭니다. 동일한 엔드포인트가 둘 이상의 영역 NEG의 구성원이 될 수 있습니다. 인스턴스 그룹과 달리 Google Cloud는 동일한 엔드포인트가 포함된 여러 영역 NEG에 부하를 분산할 수 있습니다.

하위 설정은 노드가 250개가 넘는 클러스터에서 내부 LoadBalancer 서비스에 트래픽을 보다 효율적으로 분산합니다. 예를 들어 300노드 GKE 클러스터에는 NEG에 25개 노드가 있는 한 개의 내부 LoadBalancer 서비스가 있을 수 있습니다. 해당 서비스에는 25개의 제공 Pod가 있기 때문입니다. 이 서비스의 인스턴스 그룹 백엔드에 300개 노드를 모두 추가할 필요는 없습니다.

NEG, 전달 규칙, 백엔드 서비스, 기타 Google Cloud 네트워킹 리소스의 할당량은 계속 적용됩니다.

외부 HTTP(S), 내부 HTTP(S), TCP 프록시, SSL 프록시 부하 분산

GCE_VM_IP_PORT 엔드포인트가 있는 영역 NEG는 외부 HTTP(S), 내부 HTTP(S), TCP 프록시, SSL 프록시 부하 분산 유형의 부하 분산기에서 백엔드 서비스의 백엔드로 사용할 수 있습니다.

GCE_VM_IP_PORT NEG 영역 NEG의 기본 사용 사례는 컨테이너 기반 부하 분산이므로 VM에서 실행되는 컨테이너(예: GKE 클러스터의 Pod IP 주소)에 직접 트래픽을 분산시킬 수 있습니다.

다음 예시는 VM의 컨테이너에서 실행되는 마이크로서비스 간에 부하 분산기가 트래픽을 분산시키는 방법을 보여줍니다. VM은 서브넷에서 별칭 IP 범위를 사용하도록 구성되며, 이러한 범위는 컨테이너에서 주소로 사용합니다.

컨테이너를 사용한 부하 분산의 영역 네트워크 엔드포인트 그룹(확대하려면 클릭)
컨테이너를 사용한 부하 분산의 영역 네트워크 엔드포인트 그룹(확대하려면 클릭)

다음 그림은 백엔드로 영역 NEG를 사용하는 HTTP(S) 부하 분산기, TCP/SSL 프록시 부하 분산기, 내부 HTTP(S) 부하 분산기의 구성요소를 보여줍니다.

  • 각 프리미엄 등급: HTTP(S), SSL 프록시, TCP 프록시 부하 분산기에는 트래픽을 적절한 대상 프록시 객체로 전달하는 자체 전역 외부 전달 규칙이 있습니다.

  • 각 표준 등급: HTTP(S), SSL 프록시, TCP 프록시 부하 분산기에는 트래픽을 적절한 대상 프록시 객체로 전달하는 자체 리전별 외부 전달 규칙이 있습니다.

  • 각 내부 HTTP(S) 부하 분산기에는 트래픽을 적절한 대상 프록시 객체로 전달하는 자체 리전별 내부 관리형 전달 규칙이 있습니다.

  • 대상 HTTP(S) 프록시의 경우 사용되는 백엔드 서비스는 URL 맵에서 요청 호스트 이름과 경로를 확인하여 결정됩니다. 외부 HTTP(S) 및 내부 HTTP(S) 부하 분산기에는 URL 맵에서 참조되는 여러 백엔드 서비스가 포함될 수 있습니다.

  • 대상 TCP 또는 대상 SSL 프록시의 경우 1개의 백엔드 서비스만 정의할 수 있습니다.

  • 백엔드 서비스는 백엔드 영역별 NEG로 트래픽을 전달합니다. 각 요청에 대해 부하 분산기는 영역 NEG 중 한 곳에서 네트워크 엔드포인트를 선택하여 그곳에 트래픽을 보냅니다.

부하 분산의 영역 네트워크 엔드포인트 그룹(확대하려면 클릭)
부하 분산의 영역 네트워크 엔드포인트 그룹(확대하려면 클릭)

사용 사례: 컨테이너 기반 부하 분산

컨테이너 기반 부하 분산은 부하 분산기가 Pod를 직접 대상으로 지정하고, VM 수준 대신 Pod 수준으로 부하 분산 결정을 내릴 수 있게 해줍니다. GKE 인그레스에서 관리되는 NEG 또는 독립형 NEG를 사용하는 두 가지 방법으로 컨테이너 기반 부하 분산을 구성할 수 있습니다.

NEG가 있는 Kubernetes 인그레스(권장)

NEG가 인그레스와 함께 사용되면 인그레스 컨트롤러는 L7 부하 분산기 생성의 모든 측면을 용이하게 해줍니다. 여기에는 가상 IP 주소, 전달 규칙, 상태 확인, 방화벽 규칙 등이 포함됩니다. 이를 구성하는 방법은 인그레스를 통한 컨테이너 기반 부하 분산을 참조하세요.

인그레스는 NEG 관리를 간소화하는 기능이 많기 때문에 컨테이너 기반 부하 분산을 위해 NEG를 사용할 때 권장되는 방법입니다. 인그레스로 관리되는 NEG가 사용 사례에 해당되지 않는 경우 독립형 NEG를 사용할 수 있습니다.

인그레스를 통해 부하 분산기를 설정하는 방법에 대한 자세한 내용은 인그레스를 통한 컨테이너 기반 부하 분산을 참조하세요.

독립형 NEG

영역별 NEG가 GKE 인그레스 이외의 다른 방법으로 프로비저닝된 부하 분산기로 배포되는 경우 독립형 NEG로 간주됩니다. 독립형 영역 NEG는 NEG 컨트롤러를 통해 배포 및 관리되지만 전달 규칙, 상태 확인, 기타 부하 분산 구성요소는 수동으로 배포됩니다.

GKE에서 독립형 영역 NEG를 사용하는 예시는 다음을 참조하세요.

제한사항

  • 기존 네트워크에서는 영역 NEG를 사용할 수 없습니다.
  • NEG를 백엔드로 사용하는 백엔드 서비스는 인스턴스 그룹도 백엔드로 사용할 수 없습니다.

GCE_VM_IP 영역 NEG에 대한 제한사항:

  • GCE_VM_IP 엔드포인트가 있는 영역별 NEG는 내부 TCP/UDP 부하 분산기에서만 지원됩니다.
  • default-port 속성GCE_VM_IP 영역 NEG에 지원되지 않습니다.
  • Cloud Console을 사용하여 GCE_VM_IP NEG를 만들거나 관리할 수 없습니다. gcloud 또는 REST API를 사용합니다.

할당량

  • 프로젝트당 NEG, 백엔드 서비스당 NEG, NEG당 엔드포인트 같은 NEG 할당량에 대한 자세한 내용은 부하 분산 할당량 페이지를 참조하세요.

문제해결

트래픽이 엔드포인트에 도달하지 않음

구성을 마친 새 엔드포인트는 일반적으로 영역별 NEG에 먼저 연결된 후에야 도달 가능해집니다. 이때 엔드포인트는 상태 확인에 응답해야 합니다.

트래픽이 엔드포인트에 도달할 수 없어서 HTTP(s)에 502 오류 코드가 발생하거나 TCP/SSL 부하 분산기에 대한 연결이 거부되면 다음을 확인하세요.

  • 방화벽 규칙130.211.0.0/2235.191.0.0/16의 범위에서 엔드포인트로 들어오는 TCP 트래픽을 허용하는지 확인합니다.
  • 아래에 나온 gcloud를 사용하거나 백엔드 서비스 리소스에서 getHealth API를 호출하거나 showHealth 매개변수가 SHOW로 설정된 영역별 NEG에서 listEndpoints API를 호출하여 엔드포인트가 정상인지 확인합니다. 다음 gcloud 명령어는 네트워크 엔드포인트별 상태 정보를 보여줍니다.
gcloud compute network-endpoint-groups list-network-endpoints NAME \
    --zone=ZONE

다음 단계