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

영역별 네트워크 엔드포인트 그룹(NEG)을 백엔드 서비스의 백엔드로 사용할 수 있습니다. 이 구성의 기본 사용 사례는 컨테이너에서 서비스를 실행할 수 있도록 VM에 컨테이너를 배포하는 것입니다. VM에서 실행되는 애플리케이션에 세분화 방식으로 트래픽을 배포할 수도 있습니다.

이 문서에서는 다음 부하 분산기 유형에서 영역별 네트워크 엔드포인트 그룹을 사용하는 방법을 설명합니다.

다음 부하 분산기 유형에서는 영역별 NEG를 백엔드로 사용할 수 없습니다.

인터넷 NEG에 대한 자세한 내용은 인터넷 네트워크 엔드포인트 그룹 개요를 참조하세요.

서버리스 NEG에 대한 자세한 내용은 서버리스 네트워크 엔드포인트 그룹 개요를 참조하세요.

개요

영역별 네트워크 엔드포인트 그룹(NEG)은 IP 주소 컬렉션 및 단일 서브넷 내 Google Cloud 리소스의 조합을 나타내는 영역별 리소스입니다. 각 IP 주소 및 포트 조합을 네트워크 엔드포인트라고 합니다.

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

엔드포인트 관계

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

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

네트워크 엔드포인트 그룹은 현재 GCE_VM_IP_PORT 유형만 지원합니다. 따라서 개별 엔드포인트에는 Google Cloud VM과 연결된 IP 주소가 있어야 합니다. 영역별 NEG에 엔드포인트를 추가하는 경우:

  • VM 인스턴스의 이름을 지정해야 합니다. VM 인스턴스는 영역별 NEG와 동일한 영역에 있어야 하며 VPC 네트워크의 네트워크 인터페이스는 해당 영역을 포함하는 동일한 리전의 서브넷에 있어야 합니다.

  • 영역별 NEG에는 최대 10,000개의 엔드포인트를 포함할 수 있으며, 10,000개의 모든 엔드포인트는 동일한 VM에 있어도 됩니다. 각 엔드포인트는 엔드포인트를 기존 영역별 NEG에 추가할 때 VM을 참조하여 생성됩니다. 서로 다른 영역별 NEG에 생성된 엔드포인트도 동일한 VM을 지정할 수 있습니다.

    • VM 인스턴스를 지정하는 것 외에 IP 주소 또는 IP 주소와 포트의 조합을 지정할 수 있습니다. 지정한 IP 주소는 VM의 기본 내부 IP 주소이거나 영역별 NEG와 동일한 서브넷에 있는 VM의 별칭 IP여야 합니다.

    • 엔드포인트를 추가할 때 IP 주소를 지정하지 않으면 VPC 네트워크에서 VM의 기본 내부 IP 주소가 사용됩니다.

    • 엔드포인트를 추가할 때 포트를 지정하지 않으면 영역별 NEG에 기본 포트가 정의되어 있어야 합니다. 엔드포인트는 자체 포트를 지정하지 않으면 기본 포트를 사용합니다. 즉, 영역별 NEG를 만들 때에는 기본 포트를 지정하거나 추가한 각 엔드포인트마다 포트를 지정해야 합니다.

    • 영역별 NEG의 모든 엔드포인트는 IP 주소와 포트의 고유한 조합이어야 합니다. IP 주소에 포트가 지정되지 않은 경우 IP와 기본 포트가 조합됩니다.

엔드포인트, 컨테이너, 서비스

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

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

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

부하 분산

백엔드 서비스

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

동일한 네트워크 엔드포인트(IP 주소 및 포트 조합)를 2개 이상의 영역별 NEG에 추가할 수 있습니다. 2개 이상의 백엔드 서비스의 백엔드로 동일한 영역별 NEG를 사용해도 됩니다.

백엔드에 영역별 NEG를 사용하는 백엔드 서비스는 분산 모드(RATE 또는 CONNECTION)만 사용할 수 있습니다. 단, 백엔드로 영역별 NEG를 사용하는 백엔드 서비스에 분산 모드인 UTILIZATION은 사용할 없습니다.

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

스탠더드 또는 프리미엄 네트워크 서비스 등급을 사용하는 부하 분산기에서 영역별 네트워크 엔드포인트 그룹을 사용할 수 있습니다.

다음 그림은 백엔드로 영역별 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 중 한 곳에서 네트워크 엔드포인트를 선택하여 그곳에 트래픽을 보냅니다.

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

컨테이너로 부하 분산

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

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

이 예시는 다음과 같이 설정할 수 있습니다.

  1. VM에서 컨테이너 또는 서비스를 구성합니다. 각 VM에 여러 개의 컨테이너를 실행해야 하거나 컨테이너의 IP 주소가 필요하면 VM의 별칭 IP 주소를 구성합니다. 서비스를 구성 중이면 최소한 포트 번호는 다른 동일한 VM에서 실행되는 2개 이상의 서비스가 필요합니다.
  2. 영역별 네트워크 엔드포인트 그룹을 만듭니다. Kubernetes 또는 Google Kubernetes Engine을 사용하는 경우 인그레스 컨트롤러에서 영역별 NEG를 만들기 때문에 이 단계가 필요하지 않습니다.
  3. 영역별 네트워크 엔드포인트 그룹에 네트워크 엔드포인트를 추가합니다.
  4. 상태 확인을 만듭니다.
  5. 백엔드 서비스를 만듭니다.
  6. HTTP(S) 부하 분산의 경우 URL 맵을 만들고 백엔드 서비스를 연결합니다.
  7. 대상 HTTP 프록시, 대상 HTTPS 프록시, 대상 SSL 프록시, 대상 TCP 프록시 같이 적절한 대상 프록시 유형을 만듭니다. HTTP(S) 부하 분산의 경우 대상 프록시를 URL 맵에, TCP 프록시 및 SSL 프록시 부하 분산의 경우 백엔드 서비스에 연결합니다.
  8. 전달 규칙을 만들고 대상 프록시에 연결합니다.

gcloud 명령줄 도구를 사용하여 구성한 예시는 부하 분산 영역별 네트워크 엔드포인트 그룹의 예를 참조하세요.

제한사항

  • 기존 네트워크에서는 영역별 NEG를 사용할 수 없습니다.
  • 네트워크 엔드포인트의 IP 주소는 지정된 VM 인스턴스에 속한 기존 IP 또는 별칭 IP여야 합니다.

한도

  • 영역별 NEG는 부하 분산기의 백엔드로만 사용할 수 있습니다. HTTP(S), 내부 HTTP(S), TCP 프록시, SSL 프록시 부하 분산기에서는 영역별 NEG만 지원합니다.
  • HTTP(S) 부하 분산의 경우 영역별 NEG는 RATE 분산 모드만 지원하고 TCP/SSL 부하 분산에는 CONNECTION 모드만 지원됩니다. 사용률 기반 부하 분산은 지원되지 않습니다.
  • NEG를 백엔드로 사용하는 백엔드 서비스는 인스턴스 그룹도 백엔드로 사용할 수 없습니다.
  • 현재 내부(RFC 1918) IP 주소만 영역별 NEG에 추가할 수 있습니다.
  • 프로젝트당 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

다음 단계