부하 분산의 네트워크 엔드포인트 그룹 개념

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

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

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

개요

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

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

엔드포인트 관계

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

선택한 네트워크가 자동 모드 네트워크이면 서브넷 지정 단계는 생략해도 됩니다. 단, 서브넷 1개는 아직 NEG와 연결된 상태입니다. NEG를 만들 때 자동 모드 네트워크를 지정했지만 서브넷을 지정하지 않으면 NEG에 대해 선택한 영역이 포함된 리전에 자동으로 생성된 서브넷을 사용하게 됩니다.

네트워크 엔드포인트 그룹은 현재 GCE_VM_IP_PORT 유형만 지원합니다. 따라서 개별 엔드포인트에는 GCP 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에 추가할 때마다 각 엔드포인트에 대해 포트를 지정해야 합니다.

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

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

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

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

NEG를 사용하면 전체 VM 대신 소프트웨어 서비스를 나타내는 IP 주소 및 포트의 논리적 그룹을 만들 수 있기 때문에 유용합니다. Apache Mesos 또는 Cloud Foundry 같은 다른 조정 서비스에서 관리하는 마이크로서비스(GCP 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에는 최대 10,000개의 엔드포인트를 포함할 수 있습니다.
  • 프로젝트당 포함할 수 있는 최대 NEG 수는 100개 이상입니다. 이 한도를 늘려야 할 경우 GCP 영업팀에 문의하세요.
  • NEG를 백엔드로 사용하는 백엔드 서비스는 인스턴스 그룹도 백엔드로 사용할 수 없습니다.
  • 각 백엔드 서비스에는 최대 50개의 NEG를 포함할 수 있습니다. NEG는 동일한 영역 또는 다른 영역에 있을 수 있습니다.
  • 현재 내부(RFC 1918) IP 주소만 NEG에 추가할 수 있습니다.

문제해결

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

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

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

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

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...