백엔드 서비스 기반 외부 TCP/UDP 네트워크 부하 분산 개요

Google Cloud 외부 TCP/UDP 네트워크 부하 분산(이후 네트워크 부하 분산이라고 칭함)은 패스스루 리전 부하 분산기입니다. 네트워크 부하 분산기는 동일한 리전의 가상 머신(VM) 인스턴스 간에 외부 트래픽을 분산합니다.

TCP, UDP, ESP, ICMP 트래픽에 대한 네트워크 부하 분산기를 구성할 수 있습니다. ESP 및 ICMP 지원은 미리보기에서 제공됩니다.

네트워크 부하 분산기는 다음으로부터 트래픽을 수신할 수 있습니다.

  • 인터넷의 모든 클라이언트
  • 외부 IP가 있는 Google Cloud VM
  • Cloud NAT 또는 인스턴스 기반 NAT를 통해 인터넷에 액세스할 수 있는 Google Cloud VM

네트워크 부하 분산에는 다음과 같은 특성이 있습니다.

  • 네트워크 부하 분산은 관리형 서비스입니다.
  • 네트워크 부하 분산은 Andromeda 가상 네트워킹Google Maglev를 통해 구현됩니다.
  • 네트워크 부하 분산기는 프록시가 아닙니다.
    • 부하 분산된 패킷은 소스 IP가 변경되지 않은 백엔드 VM에서 수신됩니다.
    • 부하 분산된 연결은 백엔드 VM에 의해 종료됩니다.
    • 백엔드 VM의 응답은 부하 분산기를 통하지 않고 클라이언트에 직접 전달됩니다. 업계에서는 이를 직접 서버 반환이라 합니다.

백엔드 서비스 기반 네트워크 부하 분산기의 특징은 다음과 같습니다.

  • 관리형 인스턴스 그룹 백엔드. 백엔드 서비스 기반 네트워크 부하 분산기는 관리형 인스턴스 그룹을 백엔드로 사용할 수 있습니다. 관리형 인스턴스 그룹은 백엔드 관리의 특정 측면을 자동화하며 비관리형 인스턴스 그룹보다 우수한 확장성과 안정성을 제공합니다.
  • 세분화된 트래픽 분산 제어. 백엔드 서비스 구성에는 상태 확인, 세션 어피니티, 연결 드레이닝 제한 시간, 장애 조치 정책과 같은 값 집합이 포함됩니다. 대부분의 설정에는 간편하게 구성할 수 있도록 기본값이 있어 빠르게 시작할 수 있습니다.
  • 상태 확인. 백엔드 서비스 기반 네트워크 부하 분산기에서는 분산 중인 트래픽 유형(TCP, SSL, HTTP, HTTPS 또는 HTTP/2)과 일치하는 상태 확인을 사용합니다.

아키텍처

다음 다이어그램에서는 네트워크 부하 분산기의 구성요소를 보여줍니다.

리전 백엔드 서비스를 사용하는 외부 TCP/UDP 네트워크 부하 분산기
리전 백엔드 서비스를 사용하는 네트워크 부하 분산

부하 분산기는 여러 가지 구성요소로 이루어집니다. 부하 분산기 하나에는 다음이 포함될 수 있습니다.

  • 리전 외부 IP 주소 한 개 이상
  • 리전 외부 전달 규칙 한 개 이상
  • 리전 외부 백엔드 서비스 한 개
  • 백엔드 인스턴스 그룹 한 개 이상
  • 백엔드 서비스와 연결된 상태 확인

또한 방화벽 규칙을 만들어 백엔드 VM에 대한 상태 확인 프로브를 허용해야 합니다.

IP 주소

네트워크 부하 분산기에는 전달 규칙이 최소 한 개 이상 필요합니다. 전달 규칙은 단일 리전 외부 IP 주소를 참조합니다. 전역 외부 IP 주소는 인터넷 어디서나 액세스 가능하지만 각 Google Cloud 리전에 고유한 풀에서 가져옵니다.

전달 규칙을 만들 때 기존 예약된 리전 외부 IP 주소의 이름이나 IP 주소를 지정할 수 있습니다. IP 주소를 지정하지 않으면 전달 규칙이 임시 리전 외부 IP 주소를 참조합니다. 전달 규칙을 삭제한 후 다시 사용할 프로젝트와 연결된 주소를 유지해야 하거나 동일한 IP 주소를 참조하는 전달 규칙 여러 개가 필요하면 예약된 IP 주소를 사용합니다.

네트워크 부하 분산은 표준 등급과 프리미엄 등급의 리전 외부 IP 주소를 모두 지원합니다. IP 주소와 전달 규칙 모두 동일한 네트워크 등급을 사용해야 합니다.

IP 주소를 예약하는 단계는 외부 IP 주소를 참조하세요.

전달 규칙

리전 외부 전달 규칙은 부하 분산기가 트래픽을 허용하는 프로토콜과 포트를 지정합니다. 네트워크 부하 분산기는 프록시가 아니기 때문에 패킷이 포트 정보를 전달하는 경우 동일한 프로토콜 및 포트의 백엔드로 트래픽을 전달합니다. IP 주소와 결합된 전달 규칙이 부하 분산기의 프런트엔드를 형성합니다.

부하 분산기는 수신 패킷의 소스 IP 주소를 유지합니다. 수신 패킷의 대상 IP 주소는 부하 분산기의 전달 규칙과 연결된 IP 주소입니다.

수신 트래픽은 특정 IP 주소 및 프로토콜과 프로토콜이 포트 기반인 경우 1개 포트, 포트 범위 또는 모든 포트의 조합인 전달 규칙과 일치합니다. 그런 다음 전달 규칙은 트래픽을 부하 분산기의 백엔드 서비스로 전달합니다.

네트워크 부하 분산기에는 전달 규칙이 최소 한 개 이상 필요합니다. 여러 전달 규칙에 설명된 대로 동일한 부하 분산기에 전달 규칙을 여러 개 정의할 수 있습니다.

전달 규칙 프로토콜

네트워크 부하 분산은 각 전달 규칙에 프로토콜 옵션 TCP, UDP, L3_DEFAULT(미리보기)를 지원합니다.

TCPUDP 옵션을 사용하여 TCP 또는 UDP 부하 분산을 구성합니다. L3_DEFAULT 프로토콜 옵션을 사용하면 네트워크 부하 분산기가 TCP, UDP, ESP, ICMP 트래픽의 부하를 분산할 수 있습니다.

TCP와 UDP 이외의 프로토콜을 지원하는 것 외에도 L3_DEFAULT에서는 단일 전달 규칙으로 여러 프로토콜을 제공할 수 있습니다. 예를 들어 IPSec 서비스는 일반적으로 ESP와 UDP 기반 IKE 및 NAT-T 트래픽 조합을 처리합니다. L3_DEFAULT 옵션을 사용하면 이러한 프로토콜을 모두 처리하도록 단일 전달 규칙을 구성할 수 있습니다.

TCP 또는 UDP 프로토콜을 사용하는 전달 규칙은 전달 규칙과 동일한 프로토콜을 사용하거나 프로토콜이 UNSPECIFIED(미리보기)인 백엔드 서비스를 사용하여 백엔드 서비스를 참조할 수 있습니다. L3_DEFAULT 전달 규칙은 프로토콜이 UNSPECIFIED인 백엔드 서비스만 참조할 수 있습니다.

다음 표에는 다양한 프로토콜에 이러한 설정을 사용하는 방법이 요약되어 있습니다.

부하 분산할 트래픽 전달 규칙 프로토콜 백엔드 서비스 프로토콜
TCP TCP TCP 또는 UNSPECIFIED
L3_DEFAULT UNSPECIFIED
UDP UDP UDP 또는 UNSPECIFIED
L3_DEFAULT UNSPECIFIED
ESP L3_DEFAULT UNSPECIFIED
ICMP(에코 요청만 해당) L3_DEFAULT UNSPECIFIED

여러 전달 규칙

동일한 네트워크 부하 분산기에 여러 리전 외부 전달 규칙을 구성할 수 있습니다. 선택에 따라 각 전달 규칙마다 각기 다른 리전 외부 IP 주소가 있을 수 있으며 여러 전달 규칙이 동일한 리전 외부 IP 주소를 가질 수 있습니다.

여러 리전 외부 전달 규칙을 구성하면 다음과 같은 경우에 유용합니다.

  • 동일한 백엔드 서비스에 외부 IP 주소를 두 개 이상 구성해야 합니다.
  • 동일한 외부 IP 주소에 대해 다른 프로토콜과 겹치지 않는 포트 또는 포트 범위를 구성해야 합니다.

지정된 IP 주소의 경우 L3_DEFAULT 전달 규칙은 다른 프로토콜(TCP 또는 UDP)을 사용하는 전달 규칙과 공존할 수 있지만 다른 L3_DEFAULT 전달 규칙과는 공존할 수 없습니다.

부하 분산기의 IP 주소에 도달하는 패킷은 보다 구체적인 전달 규칙을 사용할 수 없는 경우에만(예: TCP 또는 UDP 트래픽) L3_DEFAULT 전달 규칙과 일치합니다. 구체적으로 설명하면, IP 주소, 프로토콜 및 포트에 도달하는 패킷은 해당 패킷의 프로토콜 및 대상 포트와 일치하는 IP 주소에 대한 다른 전달 규칙이 없는 경우에만 L3_DEFAULT 전달 규칙과 일치합니다.

전달 규칙 여러 개를 사용할 경우 백엔드 VM에서 실행 중인 소프트웨어가 부하 분산기 전달 규칙의 모든 외부 IP 주소에 바인딩되도록 구성해야 합니다.

지역별 백엔드 서비스

각 네트워크 부하 분산기에는 부하 분산기 동작과 트래픽이 백엔드에 배포되는 방식을 정의하는 리전 백엔드 서비스 하나가 포함됩니다. 백엔드 서비스 이름은 Google Cloud Console에 표시된 네트워크 부하 분산기의 이름입니다.

각 백엔드 서비스는 다음과 같은 백엔드 매개변수를 정의합니다.

  • 프로토콜. 백엔드 서비스는 리전 외부 전달 규칙 한 개 이상에서 지정된 IP 주소 및 포트(구성된 경우)의 트래픽을 허용합니다. 백엔드 서비스는 대상 IP 주소, 패킷의 프로토콜, 포트 정보가 패킷에 포함된 경우 대상 포트 정보를 보존하면서 패킷을 백엔드 VM에 전달합니다.

    네트워크 부하 분산기에 사용되는 백엔드 서비스는 TCP, UDP, UNSPECIFIED(미리보기) 프로토콜 옵션을 지원합니다.

    UNSPECIFIED 프로토콜이 있는 백엔드 서비스는 전달 규칙 프로토콜에 관계없이 모든 전달 규칙과 함께 사용할 수 있습니다. 특정 프로토콜이 있는 백엔드 서비스(TCP 또는 UDP)는 동일한 프로토콜 (TCP 또는 UDP)을 사용하는 전달 규칙으로만 참조할 수 있습니다. L3_DEFAULT 프로토콜을 사용하는 전달 규칙은 UNSPECIFIED 프로토콜이 있는 백엔드 서비스만 참조할 수 있습니다.

    전달 규칙과 백엔드 서비스 프로토콜의 가능한 조합이 나와 있는 표는 전달 규칙 프로토콜 사양을 참조하세요.

  • 트래픽 분산. 백엔드 서비스는 구성 가능한 세션 어피니티에 따라 트래픽이 분산되게 합니다. 또한 백엔드 서비스에서 연결 드레이닝을 사용 설정하고 부하 분산기에 장애 조치 백엔드를 지정하도록 구성할 수 있습니다.

  • 상태 확인. 백엔드 서비스에는 연결된 리전 상태 확인이 있어야 합니다.

각 백엔드 서비스는 단일 리전에서 작동하며 트래픽을 백엔드 VM의 첫 번째 네트워크 인터페이스(nic0)에 분산합니다. 백엔드는 백엔드 서비스(및 전달 규칙)와 동일한 리전에 있는 인스턴스 그룹이어야 합니다. 백엔드는 영역 비관리형 인스턴스 그룹, 영역 관리형 인스턴스 그룹 또는 리전 관리형 인스턴스 그룹일 수 있습니다.

백엔드 서비스 기반 네트워크 부하 분산기는 VPC 네트워크가 백엔드 서비스와 같이 동일한 프로젝트에 있는 한 구성원 인스턴스가 동일한 리전에서 모든 VPC 네트워크를 사용하는 인스턴스 그룹을 지원합니다. (특정 인스턴스 그룹 내 모든 VM은 동일한 VPC 네트워크를 사용해야 합니다.)

백엔드 인스턴스 그룹

네트워크 부하 분산기는 관리형 인스턴스 그룹이나 비관리형 인스턴스 그룹 내에 포함된 백엔드 VM 간에 연결을 배포합니다.

인스턴스 그룹은 범위 내 리전이나 영역일 수 있습니다. 네트워크 부하 분산기는 기본적으로 가용성이 높습니다. 단일 기기 또는 VM 인스턴스에 의존하는 메커니즘이 아니므로 부하 분산기의 가용성을 높이는 데 필요한 특별한 단계는 없습니다. 부하 분산기가 특정 영역에서 잠재적인 문제를 해결할 수 있도록 백엔드 VM 인스턴스가 여러 영역에 배포되었는지만 확인하면 됩니다.

  • 리전 관리형 인스턴스 그룹 인스턴스 템플릿을 사용하여 소프트웨어를 배포할 수 있으면 리전 관리형 인스턴스 그룹을 사용합니다. 리전 관리형 인스턴스 그룹은 여러 영역 간에 트래픽을 자동으로 분산하므로 특정 영역에서 발생할 수 있는 문제를 방지하는 최고의 방법입니다.

    리전 관리형 인스턴스 그룹을 사용한 배포 예시는 다음과 같습니다. 인스턴스 그룹에는 인스턴스를 프로비저닝하는 방법을 정의하는 인스턴스 템플릿이 있으며 각 그룹은 us-central1 리전의 영역 세 개 내에 인스턴스를 배포합니다.

    리전 관리형 인스턴스 그룹이 있는 네트워크 부하 분산기
    리전 관리형 인스턴스 그룹을 사용하는 네트워크 부하 분산
  • 영역 관리형 또는 비관리형 인스턴스 그룹. 같은 리전 내 다른 영역에 있는 영역 인스턴스 그룹을 사용하여 특정 영역에서 문제가 발생하지 않도록 보호할 수 있습니다.

    영역 인스턴스 그룹을 사용한 배포 예시는 다음과 같습니다. 이 부하 분산기는 두 영역 간에 가용성을 제공합니다.

    영역 인스턴스 그룹이 있는 네트워크 부하 분산기
    영역 인스턴스 그룹을 사용하는 네트워크 부하 분산

상태 확인

네트워크 부하 분산에서는 리전 상태 확인을 사용하여 새 연결을 수신할 수 있는 인스턴스를 결정합니다. 각 네트워크 부하 분산기의 백엔드 서비스는 리전 상태 확인과 연결되어야 합니다. 부하 분산기는 상태 확인 상태를 사용하여 백엔드 인스턴스에 새 연결을 라우팅하는 방법을 결정합니다.

Google Cloud 상태 확인 작동 방식에 대한 자세한 내용은 상태 확인 작동 방식을 참조하세요.

네트워크 부하 분산에서는 다음 유형의 상태 확인을 지원합니다.

  • HTTP, HTTPS, HTTP/2. 백엔드 VM에서 HTTP, HTTPS 또는 HTTP/2를 사용하여 트래픽을 처리하는 경우에는 이러한 프로토콜과 일치하는 상태 확인을 사용하는 것이 가장 좋습니다. 자세한 내용은 HTTP, HTTPS, HTTP/2 상태 확인의 성공 기준을 참조하세요.
  • SSL 또는 TCP. 백엔드 VM에서 HTTP 유형 트래픽을 처리하지 않는 경우에는 SSL 또는 TCP 상태 확인을 사용해야 합니다. 자세한 내용은 SSL 및 TCP 상태 확인의 성공 기준을 참조하세요.

다른 프로토콜 트래픽 상태 확인

Google Cloud는 여기에 나열된 상태 외에는 프로토콜별 상태 확인을 제공하지 않습니다. 네트워크 부하 분산을 사용하여 TCP 이외의 프로토콜을 부하 분산하는 경우 필요한 상태 확인 정보를 제공하려면 백엔드 VM에서 TCP 기반 서비스를 계속 실행해야 합니다.

예를 들어 UDP 트래픽 부하를 분산하는 경우 클라이언트 요청은 UDP 프로토콜을 사용하여 부하 분산되며, Google Cloud 상태 확인 프로버에 정보를 제공하기 위해 TCP 서비스를 실행해야 합니다. 이를 위해 상태 확인 프로버에 HTTP 200 응답을 반환하는 각 백엔드 VM에서 간단한 HTTP 서버를 실행할 수 있습니다. UDP 서비스가 올바르게 구성되었고 실행될 경우에만 HTTP 서버가 200을 반환하는지 확인하기 위해 백엔드 VM에서 실행되는 고유 논리를 사용해야 합니다.

방화벽 규칙

네트워크 부하 분산은 패스스루 부하 분산기이므로 Google Cloud 방화벽 규칙을 사용하여 부하 분산기의 백엔드에 대한 액세스를 제어합니다. 인그레스 허용 방화벽 규칙 또는 인그레스 허용 계층적 방화벽 정책을 만들어 상태 확인과 부하 분산하는 트래픽을 허용해야 합니다.

  • 네트워크 부하 분산에서는 Google Cloud 상태 확인을 사용합니다. 따라서 항상 상태 확인 IP 주소 범위의 트래픽을 허용해야 합니다. 이러한 인그레스 허용 방화벽 규칙을 부하 분산기 상태 확인의 프로토콜과 포트에 따라 만들 수 있습니다.

  • 인터넷의 모든 IP 주소의 트래픽을 허용하려면 0.0.0.0/0 소스 범위로 관련 프로토콜(프로토콜이 포트를 사용하는 경우에는 포트)에 대해 인그레스 허용 방화벽 규칙을 만들어야 합니다. 특정 IP 주소 범위의 트래픽만 허용하려면 더 제한적인 소스 범위를 사용합니다.

  • 전달 규칙에 L3_DEFAULT 프로토콜을 사용하는 경우 인그레스 허용 방화벽 규칙 또는 계층식 방화벽 정책을 필요한 IP 프로토콜 및 포트로 제한하는 것을 고려해 보세요.

    예시를 보려면 여러 IP 프로토콜에 대한 네트워크 부하 분산기 설정을 참조하세요.

반환 경로

네트워크 부하 분산에서는 VPC 네트워크 외부의 특수 경로를 사용하여 들어오는 요청과 상태 확인 프로브를 각 백엔드 VM에 전달합니다.

부하 분산기는 패킷의 소스 IP 주소를 유지합니다. 백엔드 VM의 응답은 부하 분산기를 통하지 않고 클라이언트에 직접 전달됩니다. 업계에서는 이를 직접 서버 반환이라 합니다.

공유 VPC 아키텍처

IP 주소를 제외한 네트워크 부하 분산기의 모든 구성요소는 동일한 프로젝트에 있어야 합니다. 다음 표에는 네트워크 부하 분산의 공유 VPC 구성요소가 요약되어 있습니다.

IP 주소 전달 규칙 백엔드 구성요소
리전 외부 IP 주소는 부하 분산기 또는 공유 VPC 호스트 프로젝트와 동일한 프로젝트에 정의되어야 합니다. 리전 외부 전달 규칙은 백엔드 서비스의 인스턴스와 동일한 프로젝트에 정의되어 있어야 합니다.

리전 백엔드 서비스는 백엔드 인스턴스 그룹의 인스턴스가 있는 동일한 프로젝트와 동일한 리전에서 정의되어야 합니다.

백엔드 서비스와 연결된 상태 확인은 백엔드 서비스와 동일한 프로젝트 및 동일한 리전에 정의되어야 합니다.

트래픽 분산

네트워크 부하 분산기가 새 연결을 분산하는 방식은 장애 조치 구성 여부에 따라 다릅니다.

  • 장애 조치를 구성하지 않은 경우 백엔드 VM이 최소 한 개 이상 정상이면 네트워크 부하 분산기가 정상 백엔드 VM에 새 연결을 분산합니다. 모든 백엔드 VM이 비정상인 경우에는 부하 분산기가 최후의 수단으로 새 연결을 모든 백엔드 간에 분산시킵니다. 이 경우 부하 분산기는 각 새 연결을 비정상 백엔드 VM으로 라우팅합니다.

  • 장애 조치를 구성한 경우 네트워크 부하 분산기는 구성한 장애 조치 정책에 따라 활성 풀의 VM 간에 새 연결을 분산합니다. 모든 백엔드 VM이 비정상인 경우에는 다음 동작 중 하나를 선택할 수 있습니다.

    • (기본값) 부하 분산기는 기본 VM에만 트래픽을 분산합니다. 이 작업은 최후의 수단으로 진행됩니다. 백업 VM은 이 최후의 연결 분산에서 제외됩니다.
    • 부하 분산기는 트래픽을 삭제합니다.

연결 추적 및 일관된 해싱

네트워크 부하 분산에서는 연결 추적 테이블과 구성 가능한 일관된 해싱 알고리즘을 사용하여 트래픽이 백엔드 VM에 분산되는 방식을 결정합니다.

이전에 설정한 연결에 속하는 수신 패킷의 연결 추적 테이블 항목이 부하 분산기에 있으면 패킷은 이전에 부하 분산기에서 결정한 백엔드 VM으로 전송됩니다. 이전에 결정된 백엔드가 부하 분산기 연결 추적 테이블에 기록되었습니다.

부하 분산기가 연결 추적 항목이 없는 패킷을 수신하면 부하 분산기는 다음을 수행합니다.

  • 패킷이 TCP 패킷 또는 조각화되지 않은 UDP 패킷이고 세션 어피니티가 구성되지 않은 경우 부하 분산기는 패킷의 소스 IP 주소, 소스 포트, 대상 IP 주소, 대상 포트, 프로토콜의 5튜플 해시를 만듭니다. 이 해시를 사용하여 현재 정상인 백엔드를 선택합니다. 조각화된 UDP 패킷을 포함한 다른 모든 프로토콜 트래픽의 경우 부하 분산기는 패킷의 소스 IP 주소, 대상 IP 주소, 프로토콜의 3튜플 해시를 만들고 이 해시를 사용하여 정상 백엔드를 선택합니다.
  • 세션 어피니티 옵션을 구성한 경우 부하 분산기는 해시를 계속 만들지만 세션 어피니티에 설명된 대로 더 적은 정보를 사용합니다.
  • 패킷이 TCP 패킷이거나, 세션 어피니티가 NONE이 아닌 다른 항목에 설정된 경우 패킷이 UDP 또는 ESP 패킷이면 부하 분산기는 연결 추적 테이블에 선택된 백엔드를 기록합니다. 연결 추적 테이블 항목은 사용되지 않으면 60초 후에 만료됩니다. 다른 프로토콜은 연결을 추적할 수 없습니다. 전체 목록은 다음 섹션의 표를 참조하세요.

영구 연결 동작

  • TCP 트래픽. TCP 패킷의 경우 백엔드 VM의 상태 확인 상태는 연결의 패킷 배포만 제어합니다. 백엔드 VM이 인스턴스의 구성원이고 인스턴스 그룹이 부하 분산기의 백엔드로 구성되어 있는 동안 동일한 연결에 속하는 패킷은 VM 상태 확인 상태가 비정상으로 변경되더라도 이전에 선택한 백엔드 VM으로 전송됩니다. 비정상 백엔드가 패킷에 응답하면 연결이 중단되지 않습니다. 비정상 백엔드가 패킷을 거부하거나 패킷에 응답하지 않으면 클라이언트는 새 연결을 사용하여 재시도하며 재시도된 연결에 다른 정상 백엔드를 선택할 수 있습니다.

    인스턴스 그룹에서 백엔드 VM을 삭제하거나 백엔드 서비스에서 인스턴스 그룹을 삭제하면 연결 드레이닝의 설명처럼 설정된 연결만 지속됩니다.

  • UDP 트래픽. UDP 트래픽에는 세션이 없으므로 기본적으로 모든 UDP 패킷이 연결 추적 테이블을 사용하지 않고 처리됩니다. UDP 연결은 비정상적인 백엔드에서 유지되지 않습니다. 그러나 세션 어피니티NONE 이외의 값으로 설정되면 UDP 연결이 추적되지만(예시: TCP 연결) UDP 연결은 비정상 백엔드에서 유지되지 않습니다(TCP 연결과 다름).

  • ESP 및 ICMP 트래픽. ESP 및 ICMP 트래픽의 경우 비정상 백엔드에서 연결이 유지되지 않습니다.

다음 표에는 부하 분산기가 연결 추적과 각 프로토콜에 대한 영구 연결 동작을 사용하는 시기가 요약되어 있습니다.

부하 분산할 트래픽 연결 추적 비정상 백엔드에서 연결 유지
TCP 상시 사용 설정
UDP 세션 어피니티
NONE 이외의 값으로 설정되면 연결 추적이 사용 설정됩니다.
그렇지 않으면 연결 추적이 중지됩니다.
아니요
ESP 세션 어피니티
NONE 이외의 값으로 설정되면 연결 추적이 사용 설정됩니다.
그렇지 않으면 연결 추적이 중지됩니다.
아니요
ICMP 연결을 추적할 수 없음 아니요

세션 어피니티 옵션

세션 어피니티는 클라이언트에서 부하 분산기의 백엔드 VM으로의 새 연결 배포를 제어합니다. 예를 들어 새 연결을 동일한 클라이언트에서 동일한 백엔드 VM으로 전달할 수 있습니다. 이는 연결 추적 및 일관된 해싱 섹션에서 설명한 개념을 따릅니다.

네트워크 부하 분산은 백엔드 인스턴스 그룹별 기준이 아닌 전체 리전 외부 백엔드 서비스에 지정하는 다음 세션 어피니티 옵션을 지원합니다.

세션 어피니티 일관된 해싱 방법 연결 추적 참고
없음
(NONE)
TCP 및 조각화되지 않은 UDP의 경우 5튜플 해시
다른 프로토콜의 경우 3튜플 해시
TCP의 5튜플 추적 TCP의 경우 이 방법은 사실상 클라이언트 IP, 클라이언트 포트, 대상 IP, 대상 포트, 프로토콜(5튜플 해시)과 동일합니다.
그 밖의 모든 프로토콜의 경우 NONE의 세션 어피니티를 사용하는 경우 연결 추적이 사용 중지됩니다.
클라이언트 IP, 대상 IP
(CLIENT_IP)
2튜플 해시:
• 패킷의 소스 IP 주소
• 패킷의 대상 IP 주소
TCP 및 조각화되지 않은 UDP의 경우 5튜플 추적
ESP 및 조각화된 UDP의 경우 3튜플 추적
다른 프로토콜의 경우 추적 없음
동일한 백엔드 VM에서 동일한 소스 IP 주소의 모든 연결이 제공되는 경우에 이 옵션을 사용합니다.
클라이언트 IP, 대상 IP, 프로토콜
(CLIENT_IP_PROTO)
3튜플 해시:
• 패킷의 소스 IP 주소
• 패킷의 대상 IP 주소
• 프로토콜
TCP 및 조각화되지 않은 UDP의 경우 5튜플 추적
ESP 및 조각화된 UDP의 경우 3튜플 추적
다른 프로토콜의 경우 추적 없음
클라이언트 IP, 클라이언트 포트, 대상 IP, 대상 포트, 프로토콜(5튜플)
(CLIENT_IP_PORT_PROTO)
TCP 및 조각화되지 않은 UDP의 경우 5튜플 해시
다른 프로토콜의 경우 3튜플 해시
TCP 및 조각화되지 않은 UDP의 경우 5튜플 추적
ESP 및 조각화된 UDP의 경우 3튜플 추적
다른 프로토콜의 경우 추적 없음
TCP의 경우 NONE과 동일합니다.

연결 드레이닝

연결 드레이닝은 다음과 같은 경우 설정된 세션에 적용되는 프로세스입니다.

  • 백엔드 VM이 인스턴스 그룹에서 삭제된 경우
  • 관리형 인스턴스 그룹에서 교체, 중단, 롤링 업그레이드 또는 축소로 백엔드 VM을 삭제하는 경우
  • 인스턴스 그룹이 백엔드 서비스에서 삭제되는 경우

연결 드레이닝은 기본적으로 비활성화되어 있습니다. 사용 중지하면 설정된 연결이 최대한 빨리 종료됩니다. 연결 드레이닝을 사용 설정하면 설정된 연결이 VM이 더 이상 존재하지 않을 때까지 지속될 수 있습니다.

연결 드레이닝이 트리거되는 방법과 연결 드레이닝을 사용 설정하는 방법에 대한 자세한 내용은 연결 드레이닝 사용 설정을 참조하세요.

장애 조치

네트워크 부하 분산기를 구성하여 기본 백엔드 인스턴스 그룹의 가상 머신(VM) 인스턴스 간에 연결을 배포한 다음 필요한 경우 장애 조치 백엔드 인스턴스 그룹을 사용하도록 전환할 수 있습니다. 장애 조치는 가용성을 높이는 또 다른 방법을 제공하는 동시에 기본 백엔드 VM이 비정상인 경우 워크로드 관리 방법에 대한 더 많은 통제권을 제공합니다.

기본적으로 백엔드를 네트워크 부하 분산기의 백엔드 서비스에 추가하면 이 백엔드가 기본 백엔드가 됩니다. 백엔드를 부하 분산기의 백엔드 서비스에 추가하거나 나중에 백엔드 서비스를 편집하여 백엔드를 장애 조치 백엔드로 지정할 수 있습니다.

장애 조치 작동 방식에 대한 자세한 내용은 네트워크 부하 분산의 장애 조치 개요를 참조하세요.

UDP 조각화

UDP 패킷을 부하 분산하는 경우 다음 사항에 유의하세요.

  • 조각화되지 않은 패킷은 모든 구성에서 정상적으로 처리됩니다.
  • UDP 패킷은 Google Cloud에 도달하기 전에 조각화될 수 있습니다. 비Google Cloud 네트워크는 모든 조각이 도착할 때까지 기다리거나 조각된 패킷을 완전히 삭제하므로 조각화된 UDP 패킷을 지연시킬 수 있습니다. Google Cloud 네트워크는 UDP 조각이 도착하면 전달합니다.

조각화된 UDP 패킷이 수신될 것으로 예상되면 다음을 수행합니다.

  • 부하 분산된 IP 주소당 UDP 전달 규칙 하나만 사용하고 전달 규칙이 모든 포트의 트래픽을 수락하도록 구성합니다. 이렇게 하면 대상 포트가 동일하지 않은 경우에도 모든 프래그먼트가 동일한 전달 규칙으로 이동합니다. 모든 포트를 구성하려면 gcloud를 사용하여 --ports=ALL을 설정하거나 API를 사용하여 allPortsTrue 설정합니다.
  • 세션 어피니티를 없음(NONE)으로 설정합니다. 즉, 어피니티 유지보수가 필요 없으므로 부하 분산기는 5튜플 해시를 사용하여 조각화되지 않은 패킷에 백엔드를 선택합니다. 하지만 조각화된 패킷에는 3튜플 해시를 사용합니다.

이러한 설정을 사용하면 동일한 패킷의 UDP 조각이 같은 인스턴스에 전달되어 리어셈블리됩니다.

대상 인스턴스를 백엔드로 사용

네트워크 부하 분산기의 백엔드로 대상 인스턴스를 사용 중이며 조각화된 UDP 패킷이 필요한 경우 부하 분산된 IP 주소당 UDP 전달 규칙을 하나만 사용하고 모든 포트에서 트래픽을 허용하도록 전달 규칙을 구성합니다. 이렇게 하면 대상 포트가 동일하지 않은 경우에도 모든 프래그먼트가 동일한 전달 규칙으로 이동합니다. 모든 포트를 구성하려면 gcloud를 사용하여 --ports=ALL을 설정하거나 API를 사용하여 allPortsTrue 설정합니다.

제한사항

  • 네트워크 엔드포인트 그룹(NEG)은 네트워크 부하 분산기의 백엔드로 지원되지 않습니다.
  • 백엔드 서비스 기반 네트워크 부하 분산기는 Google Kubernetes Engine에서 지원되지 않습니다.
  • Google Cloud Console을 사용하여 다음을 수행할 수 없습니다.
    • 전달 규칙이 L3_DEFAULT 프로토콜을 사용하는 네트워크 부하 분산기를 만들거나 수정합니다.
    • 백엔드 서비스 프로토콜이 UNSPECIFIED로 설정된 네트워크 부하 분산기를 만들거나 수정합니다. 대신 gcloud 명령줄 도구 또는 REST API를 사용하세요.

다음 단계