인터넷 네트워크 엔드포인트 그룹 개요

Cloud Load Balancing은 Google Cloud 외부에 있는 외부 백엔드로 트래픽을 프록시할 수 있습니다. 부하 분산기의 외부 백엔드를 정의하려면 인터넷 네트워크 엔드포인트 그룹(NEG)이라는 리소스를 사용합니다.

외부 백엔드에서 콘텐츠를 제공하려고 하지만 Google Cloud 부하 분산기를 프런트엔드로 지정하려는 경우 이 유형의 배포를 사용할 수 있습니다. 이를 통해 다음을 수행할 수 있습니다.

  • Google Edge 인프라를 사용하여 사용자 연결을 종료합니다.
  • 연결을 외부 백엔드에 전달합니다.
  • Google의 비공개 백본에서 공개 엔드포인트로 트래픽을 전달하여 안정성을 개선하고 클라이언트와 서버 간 대기 시간을 줄일 수 있습니다.
  • 전역 부하 분산기를 사용하면 Cloud CDN을 사용해서 외부 백엔드의 콘텐츠를 캐시할 수 있습니다.

그림 1은 여러 백엔드 유형이 있는 외부 애플리케이션 부하 분산기를 보여줍니다. 그 중 하나는 인터넷 NEG로 구성된 외부 백엔드입니다.

부하 분산 중인 인터넷 네트워크 엔드포인트 그룹
그림 1. 부하 분산의 인터넷 네트워크 엔드포인트 그룹(확대하려면 클릭)

인터넷 NEG 백엔드는 여러 전역 및 리전 부하 분산기에서 지원됩니다. 인터넷 NEG 지원은 부하 분산기(전역 또는 리전)에 따라 다릅니다. 여기에는 DNS, 상태 점검, 사용 가능한 엔드포인트 수, 트래픽 라우팅 동작의 차이가 포함됩니다.

다음 섹션에서는 Cloud Load Balancing에서 외부 백엔드를 사용하는 방법을 설명합니다. Cloud Service Mesh에 외부 백엔드를 사용하려면 인터넷 네트워크 엔드포인트 그룹과 Cloud Service Mesh를 참조하세요.

용어

다음 용어는 의미가 동일하거나 유사하기 때문에 구분 없이 사용되는 경우가 많습니다.

  • 외부 백엔드: Google Cloud 외부에 위치하며 인터넷을 통해 연결할 수 있는 백엔드입니다. 인터넷 NEG의 엔드포인트입니다.
  • 커스텀 원본: 외부 백엔드와 동일합니다. CDN에서 원본은 웹 콘텐츠를 제공하는 백엔드 인스턴스의 업계 표준 용어입니다.
  • 인터넷 네트워크 엔드포인트 그룹(NEG): 외부 백엔드를 지정하는 데 사용하는 Google Cloud API 리소스입니다.
  • 외부 엔드포인트: 외부 백엔드와 동일합니다.

이 문서에서는 인터넷 NEG API 리소스를 참조하는 경우 외에는 외부 백엔드라는 용어를 사용합니다.

부하 분산기 구성요소

이 섹션에서는 외부 백엔드를 사용하는 부하 분산기를 구성하는 데 필요한 부하 분산 아키텍처와 리소스를 설명합니다. 부하 분산기에는 백엔드 서비스만을 위한 특수 구성이 필요합니다. 프런트엔드 구성은 다른 부하 분산기와 동일합니다.

다음 그림은 외부 백엔드를 사용하는 부하 분산기를 설정하는 데 필요한 Google Cloud 리소스를 보여줍니다.

전역 외부

이 그림은 외부 백엔드를 사용하는 전역 외부 애플리케이션 부하 분산기를 설정하는 데 필요한 Google Cloud 리소스를 보여줍니다.

외부 백엔드를 사용하는 전역 외부 애플리케이션 부하 분산기
외부 백엔드가 있는 전역 외부 애플리케이션 부하 분산기(확대하려면 클릭)

리전 외부

이 그림은 외부 백엔드를 사용하는 리전 외부 애플리케이션 부하 분산기를 설정하는 데 필요한 Google Cloud 리소스를 보여줍니다.

외부 백엔드를 사용하는 리전 외부 애플리케이션 부하 분산기
외부 백엔드를 사용하는 리전 외부 애플리케이션 부하 분산기(확대하려면 클릭)

리전 내부

이 그림은 외부 백엔드를 사용하는 리전 내부 애플리케이션 부하 분산기를 설정하는 데 필요한 Google Cloud 리소스를 보여줍니다.

외부 백엔드를 사용하는 리전 내부 애플리케이션 부하 분산기
외부 백엔드를 사용하는 리전 내부 애플리케이션 부하 분산기(확대하려면 클릭)

이 그림은 외부 백엔드를 사용하는 리전 내부 프록시 네트워크 부하 분산기를 설정하는 데 필요한 Google Cloud 리소스를 보여줍니다.

외부 백엔드를 사용하는 리전 내부 프록시 네트워크 부하 분산기
외부 백엔드를 사용하는 리전 내부 프록시 네트워크 부하 분산기(확대하려면 클릭)

프리미엄 네트워크 서비스 등급에서만 인터넷 NEG를 사용할 수 있습니다.

프런트엔드 구성

인터넷 NEG 백엔드를 사용하는 부하 분산기를 만들기 위해 특별한 프런트엔드 구성이 필요하지 않습니다. 전달 규칙은 IP 주소, 포트, 프로토콜별로 트래픽을 대상 프록시로 라우팅하는 데 사용됩니다. 그런 다음 대상 프록시는 클라이언트의 연결을 종료합니다. 또한 Envoy 기반 부하 분산기에 프록시 전용 서브넷이 필요합니다.

또한 애플리케이션 부하 분산기는 URL 맵을 사용해서 URL 기반 요청을 적절한 백엔드 서비스로 라우팅하도록 설정합니다.

이러한 각 구성요소에 대한 자세한 내용은 해당 부하 분산기의 아키텍처 섹션을 참조하세요.

인터넷 NEG

인터넷 NEG는 부하 분산기의 외부 백엔드를 정의하는 데 사용되는 리소스입니다. 인터넷 NEG에는 전역 인터넷 NEG와 지역 인터넷 NEG라는 두 가지 유형이 있습니다. 범위 (전역 및 지역)와 동작이 다릅니다. 글로벌 인터넷 NEG에서 참조하는 외부 백엔드는 인터넷을 통해서만 연결할 수 있어야 합니다. Cloud VPN 또는 Cloud Interconnect를 통해서는 연결할 수 없습니다. 외부 백엔드가 Google API 또는 서비스를 참조하는 경우 80 또는 443 TCP 포트를 통하거나 HTTP, HTTPS 또는 HTTP/2 프로토콜을 사용하여 서비스에 연결할 수 있어야 합니다.

NEG에서 참조하는 외부 엔드포인트를 구성하는 데에는 INTERNET_FQDN_PORT 또는 INTERNET_IP_PORT의 두 가지 방법이 있습니다. INTERNET_IP_PORT 형식을 선택하면 라우팅 가능한 공개 인터넷 IP 주소만 사용할 수 있습니다. INTERNET_FQDN_PORT 형식을 선택하면 엔드포인트의 범위(지역 또는 전역)에 따라 FQDN이 라우팅 가능한 공개 인터넷 IP 주소 또는 비공개 IP 주소로 확인될 수 있습니다.

전역 인터넷 NEG는 Google 프런트엔드(GFE) 기술을 기반으로 합니다. 모든 클라이언트의 이그레스 트래픽에 고정된 IP 주소 집합을 사용합니다. NEG당 엔드포인트 1개와 백엔드 서비스당 인터넷 NEG 1개만 지원합니다.

다음 표에서는 다양한 부하 분산기가 글로벌 인터넷 NEG를 지원하는 방식을 설명합니다.

부하 분산기 엔드포인트 유형 엔드포인트 정의 범위 상태 확인
  • 전역 외부 애플리케이션 부하 분산기
  • 기본 애플리케이션 부하 분산기

INTERNET_FQDN_PORT

공개적으로 변환할 수 있는 정규화된 도메인 이름과 선택적인 포트입니다. 예를 들면 backend.example.com:443입니다.

도메인 이름은 Google 공개 DNS 인프라로 변환할 수 있어야 합니다.

엔드포인트는 NEG당 하나만 허용됩니다.

전역 지원되지 않음

INTERNET_IP_PORT

공개적으로 라우팅할 수 있는 IP 주소와 선택적인 포트입니다. 예를 들면 8.8.8.8:443입니다1.

IP 주소는 RFC 1918 주소일 수 없습니다.

엔드포인트는 NEG당 하나만 허용됩니다.

엔드포인트를 추가할 때 포트를 지정하지 않으면 NEG의 기본 포트가 사용됩니다. NEG의 기본 포트를 지정하지 않으면 백엔드 프로토콜에 대해 잘 알려진 포트가 사용됩니다(HTTP의 경우 80, HTTPS 및 HTTP/2의 경우 443).

리전별 인터넷 NEG는 관리형 Envoy 프록시와 Cloud NAT 게이트웨이를 기반으로 합니다. NEG당 여러 엔드포인트와 백엔드 서비스당 여러 인터넷 NEG를 지원합니다. 클라이언트로의 이그레스 트래픽에 사용되는 IP 주소는 Cloud NAT 게이트웨이를 사용하여 구성할 수 있습니다.

다음 표에서는 여러 부하 분산기가 지역 인터넷 NEG를 지원하는 방식을 설명합니다.

부하 분산기 엔드포인트 유형 엔드포인트 정의 범위 상태 확인
  • 리전 외부 애플리케이션 부하 분산기
  • 리전 내부 애플리케이션 부하 분산기
  • 리전 외부 프록시 네트워크 부하 분산기
  • 리전 내부 프록시 네트워크 부하 분산기

INTERNET_FQDN_PORT

공개적으로 또는 비공개로 확인할 수 있는 정규화된 도메인 이름과 선택적 포트입니다. 예를 들면 backend.example.com:443*입니다.

도메인 이름 확인 프로세스는 Cloud DNS 이름 확인 순서 프로세스를 따릅니다.

NEG당 최대 256개 엔드포인트가 허용됩니다.

리전 Envoy 분산 상태 점검

INTERNET_IP_PORT

공개적으로 라우팅할 수 있는 IP 주소와 선택적인 포트만 있습니다. 예를 들면 8.8.8.8:443입니다2.

IP 주소는 RFC 1918 주소일 수 없습니다.

NEG당 최대 256개 엔드포인트가 허용됩니다.

* 리전 인터넷 NEG의 경우 포트를 지정해야 합니다. NEG를 만드는 동안 기본 포트를 지정하거나 NEG에 엔드포인트를 추가할 때마다 포트를 지정하거나 둘 다 수행할 수 있습니다. 1 엔드포인트를 추가할 때 포트를 지정하지 않으면 NEG의 기본 포트가 사용됩니다.

리전 INTERNET_FQDN_PORT 엔드포인트의 DNS 변환

인터넷을 통해 도메인을 변환할 수 있는 경우 DNS를 설정하는 데 다른 구성이 필요하지 않습니다. 그러나 비공개 FQDN을 변환하는 경우 DNS 변환을 사용하도록 Cloud DNS를 구성해야 합니다. 이름은 Cloud DNS에 호스팅되거나 Cloud DNS에서 온프레미스 DNS로 DNS 전달을 사용해서 변환할 수 있어야 합니다(다른 VPC 네트워크의 비공개 DNS 영역을 참조하는 경우 DNS 피어링).

먼저 프로젝트에서 DNS 레코드를 호스팅하기 위해 Cloud DNS 영역을 생성하여 시작합니다. 그런 다음 여기에 DNS 레코드를 추가합니다. 구체적인 구성 단계는 Cloud DNS 문서를 참조하세요. Cloud DNS 확인 순서는 이름 확인 순서에 자세히 설명되어 있습니다.

공유 VPC를 사용하는 경우 특정 네트워크 요구사항을 참조하세요. 전달 영역과 같은 Cloud DNS의 다른 기능을 사용하여 온프레미스 DNS 서버에서 레코드를 가져올 수도 있습니다.

전역 INTERNET_FQDN_PORT 엔드포인트의 IP 주소 변환

INTERNET_FQDN_PORT 엔드포인트가 여러 IP 주소를 반환하는 DNS 레코드를 가리키는 경우 다음과 같은 방법으로 IP 주소가 변환됩니다.

  • 부하 분산기는 인터넷에서 클라이언트에 가장 가까운 Google Cloud 리전의 DNS 리졸버를 사용합니다. INTERNET_FQDN_PORT 엔드포인트의 DNS 레코드가 클라이언트의 위치에 따라 다른 IP 주소를 반환하는 경우 각 IP 주소에 부하 분산기가 도달할 수 있는지 확인합니다.

  • 부하 분산기가 DNS 응답의 첫 번째 IP 주소에 연결을 시도합니다. 해당 IP 주소에 연결할 수 없는 경우 부하 분산기는 HTTP 502 (Bad Gateway) 응답을 반환합니다. DNS 응답의 다른 IP 주소를 사용할 수 있는 경우에도 마찬가지입니다.

Google DNS 리졸버 인프라에서 사용되는 IP 범위 및 위치에 대한 자세한 내용은 Google Public DNS 문서를 참조하세요. 공개 DNS 시스템에서 변환할 수 없는 이름은 외부 백엔드로 사용할 수 없습니다.

리전 INTERNET_FQDN_PORT 엔드포인트의 IP 주소 변환

리전 인터넷 NEG는 Cloud DNS 및 Google 공개 DNS를 사용해서 도메인 이름 변환을 지원합니다.

  • 공개 DNS 확인의 경우 Cloud DNS는 트래픽을 Google의 공개 DNS 서버로 전달합니다.
  • Cloud DNS의 경우 도메인 이름이 다음 중 하나여야 합니다.
    • Cloud DNS에서 호스팅됨
    • Cloud DNS에서 온프레미스 DNS 서버로 DNS 전달을 사용하여 확인할 수 있어야 합니다.
    • 다른 VPC 네트워크의 비공개 DNS 영역을 참조하는 경우 DNS 피어링을 사용하여 확인할 수 있어야 합니다.

DNS 서버가 여러 IP 주소를 반환하면 Envoy가 구성된 부하 분산 알고리즘(라운드 로빈, 최소 요청 등)에 따라 반환된 IP 주소 간에 트래픽을 부하 분산합니다. 엔드포인트 목록은 DNS TTL을 기반으로 주기적으로 새로고침됩니다. Envoy가 IP 주소 연결에 실패하면 다른 IP 주소를 시도하도록 재시도 정책을 구성할 수 있습니다.

백엔드 서비스

백엔드 서비스는 부하 분산기에 구성 정보를 제공합니다. 부하 분산기는 백엔드 서비스의 정보를 사용하여 수신 트래픽을 하나 이상의 연결된 백엔드로 보냅니다.

외부 백엔드를 사용하는 부하 분산기를 설정하려면 인터넷 NEG 백엔드로 백엔드 서비스를 구성합니다. 백엔드 서비스에 인터넷 NEG를 추가하면 NEG 범위에 따라 다음 고려 사항이 적용됩니다.

  • 백엔드 서비스는 다른 백엔드 유형(예: 영역별 NEG 또는 인스턴스 그룹)도 백엔드로 사용할 수 없습니다.

  • 백엔드 서비스당 NEG 수

    • 전역 NEG. 백엔드 서비스에 인터넷 NEG 백엔드를 하나만 추가할 수 있습니다.
  • NEG당 엔드포인트 수

    • 전역 NEG. 인터넷 NEG에는 엔드포인트를 하나만 추가할 수 있습니다.

      각 전역 인터넷 NEG에는 하나의 엔드포인트만 허용되므로 부하 분산은 실제로 수행되지 않습니다. 프런트엔드 역할만 하는 부하 분산기는 지정된 외부 백엔드로 트래픽을 프록시합니다. 즉, 속도, 연결, 사용률과 같은 부하 분산 모드는 사용할 수 없습니다.

    리전 NEG는 속도, 연결, 사용률과 같은 부하 분산 모드를 지원하지 않습니다. 백엔드 서비스에 연결되는 모든 NEG의 모든 엔드포인트가 단일 그룹에 풀링됩니다. 이러한 엔드포인트 풀 간의 트래픽 부하 분산은 Envoy 부하 분산 알고리즘을 사용해서 처리됩니다. 지원되는 부하 분산 정책 알고리즘은 리전 백엔드 서비스 API 참고 리소스에서 localityLbPolicy를 참조하세요.

  • 상태 확인

    • 전역 NEG. 백엔드 서비스는 상태 점검을 참조할 수 없습니다.
  • 백엔드 서비스의 부하 분산 스킴은 배포 중인 부하 분산기에 필요한 스킴과 일치해야 합니다. 전체 목록은 백엔드 서비스를 참조하세요.

  • 백엔드 서비스 프로토콜은 HTTP, HTTPS, HTTP2 중 하나여야 합니다.

    공개 HTTP를 전송할 때 부하 분산기와 백엔드 간의 통신이 암호화 및 인증되도록 인터넷 NEG로 백엔드 서비스를 구성할 때 HTTPS 또는 HTTP/2를 프로토콜로 사용하는 것이 좋습니다.

    또한 HTTPS 또는 HTTP/2를 백엔드 프로토콜로 사용하는 경우 INTERNET_FQDN_PORT 엔드포인트를 사용하여 외부 백엔드를 만들어야 합니다. 이렇게 하면 다음과 같은 두 가지 이점이 있습니다.

    • 부하 분산기가 외부 백엔드에서 제공하는 SSL 서버 인증서의 유효성을 검사하고 다음 정보가 올바른지 확인합니다.

      • 인증서가 잘 알려진 인증 기관(CA)에서 서명하는지 여부
      • 인증서가 만료되지 않았는지 여부.
      • 인증서 서명이 유효한지 여부
      • 구성된 FQDN이 인증서의 주체 대체 이름(SAN) 중 하나와 일치하는지 여부

      INTERNET_IP_PORT 엔드포인트를 사용하여 외부 백엔드를 만드는 경우 SSL 서버 인증서 검증이 수행되지 않습니다.

    • SSL 서버 이름 표시(SNI) 확장 프로그램은 INTERNET_FQDN_PORT 엔드포인트에서만 지원됩니다. 부하 분산기와 외부 엔드포인트 간 SSL 핸드셰이크 중에 클라이언트 hello에 구성된 FQDN이 SNI를 전송합니다. SNI 페이로드의 HostName 필드에는 IP 주소 리터럴이 허용되지 않기 때문에 INTERNET_IP_PORT 엔드포인트를 사용할 대 SNI가 전송되지 않습니다.

상태 확인

상태 점검 구성은 부하 분산기 유형에 따라 다릅니다.

  • 전역 외부 애플리케이션 부하 분산기 및 기본 애플리케이션 부하 분산기. 전역 인터넷 NEG를 사용하는 백엔드 서비스는 상태 점검을 지원하지 않습니다.

    외부 백엔드에 연결할 수 없거나 구성된 호스트 이름(FQDN)을 변환할 수 없으면 부하 분산기가 해당 클라이언트에 HTTP 502 (Bad Gateway) 응답을 반환합니다.

  • 리전 외부 애플리케이션 부하 분산기, 리전 내부 애플리케이션 부하 분산기, 리전 외부 프록시 네트워크 부하 분산기, 리전 내부 프록시 네트워크 부하 분산기. 상태 점검은 선택사항입니다. 이러한 부하 분산기의 상태 점검 프로브는 프록시 전용 서브넷에서 시작되고 사전 예약된 IP 주소 또는 자동 할당된 NAT IP 주소로 NAT 변환됩니다(Cloud NAT 사용). 자세한 내용은 리전 NEG: Cloud NAT 게이트웨이 사용을 참조하세요.

    분산된 Envoy 상태 점검은 동일한 Google Cloud 콘솔, gcloud CLI, API 프로세스를 중앙화된 상태 점검으로 사용하여 생성됩니다. 다른 구성은 필요하지 않습니다.

    참고사항:

    • gRPC 상태 점검은 지원되지 않습니다.
    • PROXY 프로토콜 v1을 사용 설정한 상태 점검은 지원되지 않습니다.
    • Envoy 데이터 영역은 상태 점검을 처리하므로 Google Cloud 콘솔, API 또는 gcloud CLI를 사용하여 이러한 외부 엔드포인트의 상태 점검을 확인할 수 없습니다. Envoy 기반 부하 분산기가 있는 하이브리드 NEG의 경우 Google Cloud 콘솔에 상태 점검 상태가 N/A로 표시됩니다. 이는 정상적인 동작입니다.

    • VPC 네트워크의 리전에 있는 프록시 전용 서브넷에 할당된 모든 Envoy 프록시는 독립적으로 상태 점검을 시작합니다. 따라서 상태 점검으로 인해 네트워크 트래픽이 증가할 수 있습니다. 증가는 리전의 VPC 네트워크에 할당된 Envoy 프록시 수, 이러한 프록시에서 수신한 트래픽 양, 각 Envoy 프록시가 상태 점검을 하는 데 필요한 엔드포인트 수에 따라 달라집니다. 최악의 경우 상태 점검으로 인한 네트워크 트래픽은 2차율(O(n^2))로 증가합니다.

    • 분산형 Envoy 상태 점검의 상태 점검 로그에는 자세한 상태가 포함되지 않습니다. 로깅되는 항목에 대한 자세한 내용은 상태 점검 로깅을 참조하세요. 또한 Envoy 프록시에서 NEG 엔드포인트로 연결 문제를 해결하려면 해당 부하 분산기 로그를 확인해야 합니다.

요청을 수신할 외부 백엔드 사용 설정

Google Cloud의 트래픽을 허용하도록 외부 백엔드를 구성합니다.

이 절차는 NEG의 범위(전역 또는 리전)에 따라 다릅니다.

전역 NEG: 기본 Google 이그레스 IP 주소 허용 목록 추가

전역 인터넷 NEG를 사용하는 경우 Google이 외부 백엔드로 요청을 전송하기 위해 사용하는 IP 주소 범위를 허용 목록에 추가해야 합니다. 허용 목록에 추가할 IP 주소를 조회하려면 dig 또는 nslookup과 같은 도구를 사용하여 _cloud-eoips.googleusercontent.com DNS TXT 레코드를 쿼리합니다.

예시를 보려면 외부 백엔드가 Google Cloud에서 트래픽을 수신하도록 허용을 참조하세요.

리전 NEG: Cloud NAT 게이트웨이 사용

리전 인터넷 NEG를 사용하는 경우 먼저 Cloud NAT 게이트웨이를 설정해서 Google Cloud 트래픽이 시작되는 IP 주소 범위를 할당합니다.

게이트웨이 엔드포인트는 ENDPOINT_TYPE_MANAGED_PROXY_LB 유형이어야 합니다.

Cloud NAT 게이트웨이는 수요에 따라 외부 IP 주소를 자동으로 할당하거나 수동으로 미리 예약된 외부 IP 주소 집합을 사용하도록 구성할 수 있습니다.

  • 자동으로 할당된 IP 주소

    외부 백엔드 환경에서 트래픽을 외부 백엔드로 전송할 수 있는 특정 Google Cloud IP 주소를 허용 목록에 추가할 필요가 없는 경우 자동으로 할당된 IP 주소를 사용합니다.

  • 수동으로 할당된 IP 주소

    외부 백엔드 환경에서 사용자가 특정 Google Cloud IP 주소를 허용 목록에 추가해야 하는 경우에만 수동으로 할당된 IP 주소를 사용합니다. 프록시 서브넷에 할당된 각 Envoy가 전체 IP 주소를 소비하기 때문에 예약된 IP 주소 풀이 모든 Envoy를 수용하도록 충분히 큰지 확인합니다.

    대규모 연결 문제가 발생할 경우 Cloud NAT 한도에 도달했는지 확인합니다. 기본적으로 게이트웨이당 수동으로 할당된 NAT IP 주소 50개로 제한됩니다.

이 Cloud NAT 구성은 전체 프록시 전용 서브넷에 적용됩니다. 리전에서 모든 리전 Envoy 기반 부하 분산기와 연결된 인터넷 트래픽은 동일한 NAT 게이트웨이를 공유합니다.

Cloud NAT를 사용하면 사용자 트래픽 및 상태 점검 트래픽 모두에 대해 비용이 발생합니다. 리전 인터넷 NEG 가격 책정 방식에 대한 자세한 내용은 리전 인터넷 NEG 가격 책정을 참조하세요.

프록시 전용 서브넷에 구성된 NAT 게이트웨이에는 다음과 같은 특정 제한이 있습니다.

  • 일대일 NAT 변환만 수행됩니다. IP 주소 공유가 지원되지 않습니다.
  • 로깅 및 모니터링이 지원되지 않습니다. 즉, --enable-logging--log-filter 플래그가 지원되지 않습니다.
  • 정적 및 동적 포트 할당, VM당 최대/최소 포트 설정, 엔드포인트에 독립적인 매핑과 같은 포트 관련 기능이 지원되지 않습니다. 각 프록시에 모든 65536개의 포트가 할당됩니다.

외부 백엔드에 대한 요청 인증

이 섹션은 애플리케이션 부하 분산기에만 적용됩니다.

외부 백엔드로 전송되는 요청을 인증하려면 다음 중 하나를 사용할 수 있습니다.

  • 요청이 커스텀 요청 헤더를 사용하여 Google Cloud 부하 분산기에서 전송되었음을 나타내도록 커스텀 헤더를 설정합니다. 예를 들어 16개 이상의 암호화된 임의의 바이트를 공유 키로 사용할 수 있습니다.

    커스텀 헤더 변환 구현은 사용 중인 부하 분산기 유형에 따라 달라집니다.

    • 전역 외부 애플리케이션 부하 분산기 및 기본 애플리케이션 부하 분산기. 백엔드 서비스 또는 URL 맵에 커스텀 헤더 변환을 구성할 수 있습니다.

      예를 들어 HTTP 요청의 Host 헤더에 대한 특정 값을 예상하도록 외부 백엔드를 구성하고 예상되는 값으로 Host 헤더를 설정하도록 부하 분산기를 구성할 수 있습니다. 커스텀 요청 헤더를 구성하지 않으면 클라이언트에서 부하 분산기 연결에 사용된 헤더가 부하 분산기에 보조되므로 해당 응답에 동일한 헤더가 포함됩니다. 그러나 Host 헤더를 수정하는 것은 URL 맵에서 지원되지 않습니다.

      Host 헤더 구성과 관련해서 추가 제한사항이 있습니다. 자세한 내용은 백엔드 서비스에서 커스텀 헤더 만들기를 참조하세요. 자세한 예시는 외부 백엔드를 사용하는 전역 외부 애플리케이션 부하 분산기 설정을 참조하세요.

    • 리전별 외부 애플리케이션 부하 분산기 및 리전별 내부 애플리케이션 부하 분산기. 커스텀 헤더 변환은 URL 맵에서만 구성할 수 있습니다.

      이러한 Envoy 기반 부하 분산기에서 Hostauthority는 Google Cloud에 예약된 특수 키워드입니다. 이러한 부하 분산기에 대해서는 헤더를 수정할 수 없습니다. 대신 예약된 헤더 이름을 방해하지 않도록 다른 커스텀 헤더(예: MyHost)를 만드는 것이 좋습니다.

  • IAP를 사용 설정하고 요청 헤더에서 서명된 JWT를 Google에서 서명했는지 그리고 aud(대상) 클레임에 부하 분산기가 정의된 프로젝트 번호가 포함되어 있는지 확인할 수 있습니다.

    다음에 유의하세요.

    • IAP는 Cloud CDN과 호환되지 않습니다.
    • IAP는 프록시 네트워크 부하 분산기(내부 및 외부)에서 지원되지 않습니다.
  • 비공개 출처 인증을 사용 설정하면 외부 애플리케이션 부하 분산기에 비공개 Amazon Simple Storage Service(Amazon S3) 버킷 또는 기타 호환 가능한 객체 저장소에 대한 장기 액세스 권한이 부여됩니다. Cloud CDN(및 비공개 원본 인증)은 리전 외부 애플리케이션 부하 분산기와 리전 내부 애플리케이션 부하 분산기에 지원되지 않습니다.

로그

외부 백엔드로 프록시된 요청은 다른 백엔드에 대한 요청이 로깅되는 것과 같은 방식으로 Cloud Logging에 로깅됩니다.

자세한 내용은 다음을 참조하세요.

외부 백엔드를 사용하는 외부 애플리케이션 부하 분산기에 대해 Cloud CDN을 사용 설정하면 캐시 적중도 로깅됩니다.

외부 백엔드를 사용하여 헤더 처리

부하 분산기마다 요청을 외부 백엔드에 프록시할 때 서로 다른 방식으로 헤더 처리를 수행해야 할 수 있습니다. 부하 분산기 유형이 HTTP 헤더를 처리하는 방법을 이해하려면 다음 정보를 검토하세요.

전역 외부 애플리케이션 부하 분산기와 기본 애플리케이션 부하 분산기

전역 외부 애플리케이션 부하 분산기 또는 기본 애플리케이션 부하 분산기가 요청을 외부 백엔드에 프록시할 때는 다음 방식으로 HTTP 헤더를 조정합니다.

  • 일부 헤더는 병합됩니다. 동일한 헤더 키의 인스턴스가 여러 개인 경우(예: Via) 부하 분산기는 단일 헤더 키의 단일 쉼표로 구분된 목록에 해당 값을 결합합니다. 값이 쉼표로 구분된 목록으로 표시될 수 있는 헤더만 병합됩니다. 다른 헤더(예: Set-Cookie)는 병합되지 않습니다.

  • 헤더는 백엔드 서비스 프로토콜이 HTTP 또는 HTTPS일 때 대문자로 시작됩니다.

    • 헤더의 키의 첫 번째 문자와 하이픈(-) 뒤에 오는 모든 문자는 HTTP/1.1 클라이언트와의 호환성을 유지하기 위해 대문자로 표기됩니다. 예를 들어 user-agentUser-Agent로, content-encodingContent-Encoding로 변경됩니다.

    • Accept-CH(클라이언트 힌트)와 같은 특정 헤더는 표준 혼합 문자 표현과 일치하도록 변환됩니다.

  • 일부 헤더가 추가되거나 헤더에 값이 추가됩니다. 외부 애플리케이션 부하 분산기는 항상 ViaX-Forwarded-For와 같은 특정 헤더를 추가하거나 수정합니다.

리전 외부 애플리케이션 부하 분산기 및 리전 내부 애플리케이션 부하 분산기

인터넷 NEG를 사용하는 Envoy 기반 부하 분산기에는 이를 처리하는 특별 처리 헤더가 없습니다. Envoy가 일반적으로 헤더를 처리하는 방법을 알아보려면 HTTP 헤더 조작을 참조하세요.

제한사항

  • 인터넷 NEG를 백엔드로 구성할 때와 관련된 제한사항은 백엔드 서비스 섹션을 검토하세요.
  • 부하 분산기를 수정하여 백엔드를 인터넷 NEG에서 다른 백엔드 유형으로 변경하거나 다른 백엔드 유형에서 인터넷 NEG로 변경하면 애플리케이션에 일시적 다운타임이 약 30~90초 동안 발생합니다. 예를 들어 이러한 다운타임 중에 전역 외부 애플리케이션 부하 분산기로 요청을 전송하는 클라이언트의 경우 failed_to_connect_to_backend 오류 코드와 함께 502 오류를 참조하세요. 이는 정상적인 동작입니다.
  • 전역 인터넷 NEG 백엔드에는 다음과 같은 고급 트래픽 관리 기능이 지원되지 않습니다.
    • 요청 미러링
    • 재시도 정책
    • 트래픽 정책(부하 분산 지역 정책, 세션 어피니티, 이상점 감지 포함)
  • 프록시 전용 서브넷에 구성된 NAT 게이트웨이와 연관된 제한사항은 Cloud NAT 게이트웨이 섹션을 참조하세요.

할당량 및 한도

할당량 및 한도에 대한 자세한 내용은 NEG 백엔드 할당량 표NEG 할당량당 엔드포인트 표를 참고하세요.

가격 책정

외부 인터넷 NEG 엔드포인트에 대한 이그레스 트래픽은 프리미엄 등급 네트워킹의 인터넷 이그레스 비율로 청구됩니다. 소스는 클라이언트 위치를 기반으로 하며 대상은 공개 엔드포인트의 위치를 기반으로 합니다.

리전 Envoy 기반 부하 분산기의 프록시 전용 서브넷을 매핑하도록 Cloud NAT 게이트웨이를 구성한 경우 Cloud NAT 비용이 청구됩니다. 부하 분산기에 할당된 Cloud NAT 게이트웨이는 VM 인스턴스가 32개를 초과하는 네트워크와 동일한 시간당 비용이 발생합니다. 자세한 내용은 Cloud NAT 가격 책정을 참조하세요.

자세한 내용은 Cloud Load Balancing 가격 책정을 참조하세요.

다음 단계