내부 리전 TCP 프록시 부하 분산 개요

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Google Cloud 내부 리전 TCP 프록시 부하 분산기는 오픈소스 Envoy 프록시 소프트웨어Andromeda 네트워크 가상화 스택으로 구동되는 프록시 기반 리전 부하 분산기입니다.

이 부하 분산기는 TCP 서비스를 호스팅하기 위한 단일 리전 내부 IPv4 주소를 제공합니다. 내부 리전 TCP 프록시 부하 분산기는 먼저 Envoy 프록시에서 클라이언트와 부하 분산기 간의 TCP 연결을 종료합니다. 프록시는 Google Cloud, 온프레미스 또는 기타 클라우드 환경에서 호스팅되는 백엔드에 대한 두 번째 TCP 연결을 엽니다.

내부 리전 TCP 프록시 부하 분산기는 프리미엄 네트워크 서비스 등급을 사용합니다.

이점

내부 리전 TCP 프록시 부하 분산기에서는 다음을 지원합니다.

  • Google Cloud, 온프레미스 또는 기타 클라우드 환경에서 백엔드 부하 분산. 이는 Private Service Connect와 함께 사용하여 워크로드 온프레미스에서 Google Cloud의 소비자에게 제작자 서비스를 노출할 때 유용합니다.
  • 지능형 라우팅. 부하 분산기는 구성 가능한 대상 용량을 기준으로 리전 내 백엔드로 요청을 라우팅합니다.
  • 포트 다시 매핑. 부하 분산기의 전달 규칙에서 사용하는 포트는 백엔드에 연결할 때 사용되는 포트와 일치하지 않아도 됩니다. 예를 들어 전달 규칙에서는 TCP 포트 80을 사용하는 반면 백엔드에 대한 연결에서는 TCP 포트 8080을 사용할 수 있습니다.
  • 모든 포트에서 리슨. 선택한 모든 포트에서 리슨하도록 부하 분산기의 전달 규칙을 구성할 수 있습니다.
  • 지역 정책. 백엔드 인스턴스 그룹 또는 네트워크 엔드포인트 그룹 내에서 요청이 구성원 인스턴스 또는 엔드포인트에 배포되는 방식을 구성할 수 있습니다.
  • 전역 액세스. 전역 액세스가 사용 설정되면 모든 리전의 클라이언트가 부하 분산기와 백엔드에 액세스할 수 있습니다.

아키텍처

다음 다이어그램은 내부 리전 TCP 프록시 부하 분산기에 필요한 Google Cloud 리소스를 보여줍니다.

내부 리전 TCP 프록시 부하 분산기 구성요소(확대하려면 클릭)
내부 리전 TCP 프록시 부하 분산기 구성요소(확대하려면 클릭)

프록시 전용 서브넷

위의 다이어그램에서 프록시 전용 서브넷은 Google이 사용자를 대신하여 Envoy 프록시를 실행하는 데 사용하는 IP 주소 집합을 제공합니다. Envoy 기반 부하 분산기(예: 내부 리전 TCP 프록시 부하 분산기, 내부 HTTP(S) 부하 분산기 등)를 사용하는 VPC 네트워크의 각 리전에 프록시 전용 서브넷을 만들어야 합니다. 리전 및 VPC 네트워크의 모든 Envoy 기반 부하 분산기는 동일한 프록시 전용 서브넷을 공유합니다. 프록시 전용 서브넷의 용도는 REGIONAL_MANAGED_PROXY로 설정되어야 합니다. 그 밖에도 다음과 같습니다.

  • 프록시 전용 서브넷은 백엔드가 아닌 오로지 Envoy 프록시에만 사용됩니다.
  • 리전 및 VPC 네트워크에서 모든 Envoy 기반 부하 분산기의 백엔드 VM 또는 엔드포인트는 동일한 프록시 전용 서브넷에서 연결을 수신합니다.
  • 부하 분산기의 IP 주소는 프록시 전용 서브넷에 있지 않습니다. 부하 분산기의 IP 주소는 아래에 설명된 내부 관리형 전달 규칙으로 정의됩니다.

전달 규칙 및 IP 주소

리전 전달 규칙은 IP 주소, 포트, 프로토콜별로 트래픽을 대상 프록시와 백엔드 서비스로 구성된 부하 분산 구성으로 라우팅합니다.

리전 내부 관리형 전달 규칙은 내부 IP 주소, 포트, 리전 대상 TCP 프록시를 지정합니다. 클라이언트는 IP 주소와 포트를 사용하여 부하 분산기의 Envoy 프록시에 연결합니다. 전달 규칙의 IP 주소는 부하 분산기의 IP 주소입니다(가상 IP 주소 또는 VIP라고도 함).

전달 규칙에 연결된 내부 IP 주소는 동일한 네트워크 및 리전의 모든 서브넷에서 가져올 수 있습니다. 다음 사항을 참고하세요.

  • IP 주소는 백엔드 인스턴스 그룹과 동일한 서브넷에서 가져올 수 있지만 반드시 그럴 필요는 없습니다.
  • IP 주소는 --purpose 플래그가 REGIONAL_MANAGED_PROXY로 설정된 예약된 프록시 전용 서브넷에서 가져오지 않아야 합니다.
  • 여러 전달 규칙과 내부 IP 주소를 공유하려면 --purpose 플래그를 SHARED_LOADBALANCER_VIP로 설정합니다.

내부 관리형 전달 규칙은 가능한 모든 포트를 지원하지만 각 전달 규칙은 정확히 하나의 포트를 참조할 수 있습니다.

전달 규칙 및 전역 액세스

내부 리전 TCP 프록시 부하 분산기의 전달 규칙은 전역 액세스가 사용 설정되어 있더라도 리전별로 적용됩니다. 전역 액세스를 사용 설정한 후에는 리전 내부 전달 규칙의 allowGlobalAccess 플래그가 true로 설정됩니다.

대상 프록시

내부 리전 TCP 프록시 부하 분산기는 클라이언트의 TCP 연결을 종료하고 백엔드에 새 연결을 만듭니다. 기본적으로 원래 클라이언트 IP 주소와 포트 정보는 유지되지 않습니다. 이 정보를 유지하려면 PROXY 프로토콜을 사용하면 됩니다. 대상 프록시는 들어오는 요청을 부하 분산기의 백엔드 서비스로 직접 라우팅합니다.

백엔드 서비스

백엔드 서비스는 들어오는 트래픽을 연결된 백엔드 1개 이상에 전달합니다. 백엔드는 인스턴스 그룹 또는 네트워크 엔드포인트 그룹입니다. 백엔드에는 연결(또는 예를 들어 인스턴스 그룹 백엔드의 경우에는 사용률)을 기반으로 가득 찬 상태를 정의하는 분산 모드 정보가 포함됩니다.

각 내부 리전 TCP 프록시 부하 분산기에는 단일 백엔드 서비스 리소스가 포함됩니다.

지원되는 백엔드

백엔드 서비스는 다음 유형의 백엔드를 지원합니다.

  • 모든 인스턴스 그룹 백엔드: 인스턴스 그룹은 영역 비관리형, 영역 관리형 또는 리전 관리형일 수 있습니다.
  • 모든 네트워크 엔드포인트 그룹 백엔드: GCE_VM_IP_PORT 엔드포인트가 있는 영역별 NEG 및 NON_GCP_PRIVATE_IP_PORT 엔드포인트가 있는 하이브리드 연결 NEG가 지원됩니다.

모든 백엔드는 동일한 유형이어야 합니다(인스턴스 그룹 또는 NEG). 여러 유형의 인스턴스 그룹 백엔드를 동시에 사용하거나 다른 유형의 NEG 백엔드를 동시에 사용할 수 있지만 동일한 백엔드 서비스에서 인스턴스 그룹과 NEG 백엔드를 함께 사용할 수는 없습니다.

동일한 백엔드 서비스 내에서 영역별 NEG와 하이브리드 NEG를 혼합할 수 있습니다.

사용자에 대한 중단이 최소화되도록 백엔드 서비스에서 연결 드레이닝을 사용 설정할 수 있습니다. 이러한 중단은 백엔드가 종료되거나 수동으로 삭제되거나 자동 확장 처리 과정에서 삭제될 때 발생할 수 있습니다. 연결 드레이닝을 사용하여 서비스 중단을 최소화하기에 대해 자세히 알아보려면 연결 드레이닝 사용 설정을 참조하세요.

백엔드와의 통신에 사용되는 프로토콜

내부 리전 TCP 프록시 부하 분산기에 백엔드 서비스를 구성할 때 백엔드 서비스가 백엔드와 통신하는 데 사용할 프로토콜을 설정합니다. 부하 분산기는 사용자가 지정한 프로토콜만 사용하고 다른 프로토콜과의 연결 협상을 시도하지 않습니다. 내부 리전 TCP 프록시 부하 분산기는 백엔드와 통신하기 위한 TCP만 지원합니다.

상태 점검

각 백엔드 서비스는 부하 분산기에서 연결을 수신할 수 있도록 백엔드의 준비 상태를 주기적으로 모니터링하는 상태 점검을 지정합니다. 이러면 요청을 처리할 수 없는 백엔드로 요청이 전송될 위험이 줄어듭니다. 상태 점검은 애플리케이션 자체가 작동하는지 확인하지 않습니다.

방화벽 규칙

내부 리전 TCP 프록시 부하 분산기에는 다음 방화벽 규칙이 필요합니다.

  • Google 상태 점검 프로브의 트래픽을 허용하는 인그레스 허용 규칙
    • 35.191.0.0/16
    • 130.211.0.0/22
    현재 하이브리드 NEG의 상태 점검 프로브는 Google의 중앙 집중식 상태 점검 메커니즘에서 시작됩니다. Google 상태 점검 범위에서 시작된 트래픽이 하이브리드 엔드포인트에 도달하도록 허용할 수 없고 상태 점검 프로브를 비공개 IP 주소에서 시작하게 하려면 분산 Envoy 상태 점검의 허용 목록에 프로젝트가 들어가도록 Google 계정 담당자에게 요청하세요.
  • 프록시 전용 서브넷의 트래픽을 허용하는 인그레스 허용 규칙

이러한 방화벽 규칙의 포트를 다음과 같이 구성해야 합니다.

  • 각 백엔드 서비스 상태 점검의 대상 포트에 대한 트래픽을 허용합니다.

  • 인스턴스 그룹 백엔드: 백엔드 서비스의 이름이 지정된 포트와 각 인스턴스 그룹의 이름이 지정된 포트에 연결된 포트 번호 간의 매핑에 따라 구성할 포트를 결정합니다. 동일한 백엔드 서비스에 할당된 인스턴스 그룹에서도 이 포트 번호가 다를 수 있습니다.

  • GCE_VM_IP_PORT NEG 백엔드: 엔드포인트의 포트 번호에 대한 트래픽을 허용합니다.

클라이언트 액세스

기본적으로 클라이언트는 부하 분산기와 동일한 리전에 있어야 합니다. 클라이언트는 같은 네트워크 또는 VPC 네트워크 피어링을 사용하여 연결된 VPC 네트워크에 있을 수 있습니다. 모든 리전의 클라이언트가 부하 분산기에 액세스하도록 허용하려면 전역 액세스를 사용 설정하면 됩니다.

전역 액세스가 포함된 내부 리전 TCP 프록시 부하 분산기(확대하려면 클릭)
전역 액세스가 포함된 내부 리전 TCP 프록시 부하 분산기(확대하려면 클릭)

다음 표에는 클라이언트 액세스가 요약되어 있습니다.

중지된 전역 액세스 사용 설정된 전역 액세스
클라이언트는 부하 분산기와 동일한 리전에 있어야 합니다. 또한 부하 분산기와 동일한 VPC 네트워크에 있거나 VPC 네트워크 피어링을 사용하여 부하 분산기의 VPC 네트워크에 연결된 VPC 네트워크에 있어야 합니다. 클라이언트는 어느 리전에나 있을 수 있습니다. 부하 분산기와 동일한 VPC 네트워크에 있거나 VPC 네트워크 피어링을 사용하여 부하 분산기의 VPC 네트워크에 연결된 VPC 네트워크에 있어야 합니다.
온프레미스 클라이언트는 Cloud VPN 터널이나 VLAN 연결을 통해 부하 분산기에 액세스할 수 있습니다. 이러한 터널 또는 연결은 부하 분산기와 동일한 리전에 있어야 합니다. 온프레미스 클라이언트는 Cloud VPN 터널이나 VLAN 연결을 통해 부하 분산기에 액세스할 수 있습니다. 이러한 터널 또는 연결은 어느 리전에나 있을 수 있습니다.

공유 VPC 아키텍처

내부 리전 TCP 프록시 부하 분산기는 공유 VPC를 사용하는 네트워크를 지원합니다. 공유 VPC를 사용하면 네트워크 관리자와 서비스 개발자 간의 책임을 명확하게 구분할 수 있습니다. 개발팀은 서비스 프로젝트에 서비스를 빌드하는 데 집중할 수 있으며 네트워크 인프라팀은 부하 분산을 프로비저닝하고 관리할 수 있습니다. 공유 VPC에 대해 잘 모른다면 공유 VPC 개요 문서를 참조하세요.

IP 주소 전달 규칙 대상 프록시 백엔드 구성요소

내부 IP 주소는 백엔드와 동일한 프로젝트에 정의되어야 합니다.

공유 VPC 네트워크에서 부하 분산기를 사용하려면 내부 IP 주소가 반드시 백엔드 VM이 있는 서비스 프로젝트와 동일한 서비스 프로젝트에 정의되어야 하고 또한 호스트 프로젝트에 있는 원하는 공유 VPC 네트워크의 서브넷을 참조해야 합니다. 주소 자체는 참조된 서브넷의 기본 IP 범위에서 가져옵니다.

내부 전달 규칙은 백엔드와 동일한 프로젝트에서 정의되어야 합니다.

공유 VPC 네트워크에서 부하 분산기를 사용하려면 내부 전달 규칙이 반드시 백엔드 VM이 있는 서비스 프로젝트와 동일한 서비스 프로젝트에 정의되어야 하고 또한 연결된 내부 IP 주소가 참조하는 것과 동일한 서브넷(공유 VPC 네트워크의)을 참조해야 합니다.

대상 프록시는 백엔드와 동일한 프로젝트에서 정의되어야 합니다. 공유 VPC 시나리오에서 백엔드 VM은 일반적으로 서비스 프로젝트에 있습니다. 바로 이 서비스 프로젝트에 리전 내부 백엔드 서비스와 상태 점검이 정의되어야 합니다.

트래픽 분산

내부 리전 TCP 프록시 부하 분산기는 다음과 같이 백엔드에 트래픽을 분산합니다.

  1. 단일 클라이언트에서 시작되는 연결은 해당 영역 내 정상 백엔드(인스턴스 그룹 또는 NEG)를 사용할 수 있고 분산 모드에 의해 결정된 용량을 가지는 경우 같은 영역에 전송됩니다. 내부 리전 TCP 프록시 부하 분산기의 경우 분산 모드는 CONNECTION(인스턴스 그룹 또는 NEG 백엔드) 또는 UTILIZATION(인스턴스 그룹 백엔드만 해당)일 수 있습니다.
  2. 세션 어피니티를 구성하면 클라이언트의 연결이 동일한 백엔드로 전송됩니다.
  3. 백엔드가 선택되면 부하 분산 정책에 따라 인스턴스 그룹의 인스턴스 또는 NEG의 엔드포인트에서 트래픽이 분산됩니다. 지원되는 부하 분산 정책 알고리즘은 리전 백엔드 서비스 API 문서localityLbPolicy 설정을 참조하세요.

세션 어피니티

세션 어피니티를 사용하면 백엔드가 정상이고 용량이 있는 한 동일한 클라이언트의 모든 요청을 동일한 백엔드로 보내도록 부하 분산기의 백엔드 서비스를 구성할 수 있습니다.

내부 리전 TCP 프록시 부하 분산기는 백엔드가 정상이고 용량이 있는 한 동일한 클라이언트 IP 주소의 모든 요청을 동일한 백엔드로 전달하는 클라이언트 IP 어피니티를 제공합니다.

장애 조치

백엔드가 비정상이 되면 트래픽은 자동으로 동일한 리전에 있는 정상 백엔드로 리디렉션됩니다. 부하 분산기는 영역별로 부드러운 장애 조치 알고리즘을 구현합니다. 영역의 모든 백엔드가 비정상이 될 때까지 기다리는 대신 한 영역의 정상 백엔드와 비정상 백엔드의 비율이 특정 비율 임곗값(70%, 이 기준을 구성할 수 없음) 미만이 되면 부하 분산기는 트래픽을 다른 영역으로 리디렉션하기 시작합니다. 모든 영역의 모든 백엔드가 비정상이면 부하 분산기가 즉시 클라이언트 연결을 종료합니다.

GKE 애플리케이션을 위한 부하 분산

Google Kubernetes Engine에서 애플리케이션을 빌드하는 경우 독립형 영역별 NEG를 사용하여 트래픽을 컨테이너로 직접 부하 분산할 수 있습니다. 독립형 NEG에서는 사용자가 직접 영역별 NEG가 생성되는 서비스 객체를 만든 후 NEG를 백엔드 서비스와 연결하여 부하 분산기를 포드에 연결해야 합니다.

관련 GKE 문서:

할당량 및 한도

할당량 및 한도에 대한 자세한 내용은 리소스 할당량 부하 분산을 참조하세요.

제한사항

  • 내부 리전 TCP 프록시 부하 분산기는 IPv6 트래픽을 지원하지 않습니다.
  • 내부 리전별 TCP 프록시 부하 분산기는 부하 분산기의 프런트엔드가 하나의 호스트 또는 서비스 프로젝트에 있고 백엔드 서비스와 백엔드가 다른 서비스 프로젝트에 있는 공유 VPC 배포(프로젝트 간 서비스 참조라고도 함)를 지원하지 않습니다.

다음 단계