부하 분산기 관리

이 개요 페이지에서는 영역 및 전역 네트워크 구성 모두에 대해 Google Distributed Cloud (GDC) 오프라인에서 내부 및 외부 부하 분산기를 구성하는 방법을 설명합니다.

GDC의 부하 분산은 백엔드 워크로드 전반에서 효율적인 트래픽 분산을 보장하여 애플리케이션 가용성과 성능을 향상시킵니다.

이 페이지는 플랫폼 관리자 그룹의 네트워크 관리자 또는 애플리케이션 운영자 그룹의 개발자를 대상으로 합니다. 이들은 조직의 네트워크 트래픽을 관리합니다. 자세한 내용은 GDC 오프라인 환경 문서 대상을 참고하세요.

부하 분산 아키텍처

GDC는 애플리케이션이 서로에게 서비스를 노출할 수 있도록 지원하는 부하 분산기를 제공합니다. 부하 분산기는 백엔드 워크로드 집합에서 트래픽을 분산하는 안정적인 가상 IP (VIP) 주소를 할당합니다. GDC의 부하 분산기는 레이어 4 (L4) 부하 분산을 실행합니다. 즉, 구성된 프런트엔드 TCP 또는 UDP 포트 집합을 해당 백엔드 포트에 매핑합니다. 부하 분산기는 프로젝트 수준에서 구성됩니다.

부하 분산기는 다음 워크로드 유형에 대해 구성됩니다.

  • VM에서 실행되는 워크로드
  • Kubernetes 클러스터 내의 컨테이너화된 워크로드

GDC에서 부하 분산기를 구성하는 방법에는 세 가지가 있습니다.

  • 네트워킹 Kubernetes 리소스 모델 (KRM) API를 사용합니다. 이 API를 사용하여 전역 또는 영역 부하 분산기를 만들 수 있습니다.
  • gdcloud CLI를 사용합니다. 이 API를 사용하여 전역 또는 영역 부하 분산기를 만들 수 있습니다.
  • Kubernetes 클러스터에서 Kubernetes 서비스를 직접 사용합니다. 이 메서드는 영역 부하 분산기만 만듭니다.

부하 분산기 구성요소

KRM API 또는 gdcloud CLI를 사용하여 부하 분산기를 구성할 때는 L4 패스스루 부하 분산기를 사용합니다.

  • L4는 프로토콜이 TCP 또는 UDP임을 의미합니다.
  • 패스스루는 워크로드와 클라이언트 사이에 프록시가 없음을 의미합니다.

부하 분산기는 다음과 같은 구성 가능한 구성요소로 구성됩니다.

  • 전달 규칙: 전달되는 트래픽과 전달되는 백엔드 서비스를 지정합니다. 전달 규칙의 사양은 다음과 같습니다.

    • 클라이언트가 액세스할 수 있는 CIDR, 포트, 프로토콜의 세 가지 튜플로 구성됩니다.
    • TCP 및 UDP 프로토콜을 지원합니다.
    • 내부 및 외부 전달 규칙을 제공합니다. 클라이언트는 Virtual Private Cloud (VPC) 내에서 내부 전달 규칙에 액세스할 수 있습니다. 클라이언트는 GDC 플랫폼 외부에서 또는 EgressNAT 값이 정의된 워크로드를 통해 내부에서 외부 전달 규칙에 액세스할 수 있습니다.
    • 전달 규칙은 백엔드 서비스에 연결됩니다. 여러 전달 규칙이 동일한 백엔드 서비스를 가리키도록 할 수 있습니다.
  • 백엔드 서비스: 전달 규칙, 상태 점검, 백엔드를 함께 연결하는 부하 분산 허브입니다. 백엔드 서비스는 부하 분산기가 트래픽을 전달하는 워크로드를 식별하는 백엔드 객체를 참조합니다. 단일 백엔드 서비스가 참조할 수 있는 백엔드에는 제한사항이 있습니다.

    • 영역당 하나의 영역 백엔드 리소스
    • 클러스터당 하나의 클러스터 백엔드 리소스입니다. 프로젝트 백엔드와 혼합할 수 없습니다.
  • 백엔드: 생성된 백엔드 서비스의 백엔드 역할을 하는 엔드포인트를 지정하는 영역 객체입니다. 백엔드 리소스는 영역으로 범위가 지정되어야 합니다. 라벨을 사용하여 엔드포인트를 선택합니다. 선택기의 범위를 프로젝트 또는 클러스터로 지정합니다.

    • 프로젝트 백엔드는 ClusterName 필드가 지정되지 않은 백엔드입니다. 이 경우 지정된 라벨은 영역의 특정 VPC에 있는 특정 프로젝트의 모든 워크로드에 적용됩니다. 라벨은 여러 클러스터의 VM 및 포드 워크로드에 적용됩니다. 백엔드 서비스가 프로젝트 백엔드를 사용하는 경우 해당 백엔드 서비스에서 해당 영역의 다른 백엔드를 참조할 수 없습니다.

    • 클러스터 백엔드는 ClusterName 필드가 지정된 백엔드입니다. 이 경우 지정된 라벨은 지정된 프로젝트의 명명된 클러스터에 있는 모든 워크로드에 적용됩니다. 단일 백엔드 서비스에서 클러스터당 영역당 백엔드를 최대 하나까지 지정할 수 있습니다.

  • 상태 점검: 백엔드의 특정 워크로드 엔드포인트가 정상인지 여부를 확인하는 프로브를 지정합니다. 비정상 엔드포인트는 다시 정상 상태가 될 때까지 부하 분산기에서 제외됩니다. 상태 확인은 VM 워크로드에만 적용됩니다. 포드 워크로드는 기본 제공 Kubernetes 프로브 메커니즘을 사용하여 특정 엔드포인트가 정상인지 확인할 수 있습니다.

Kubernetes 사용자 클러스터에서 Kubernetes 서비스를 직접 사용하는 경우 앞에서 나열된 구성요소 대신 Service 객체를 사용합니다. Service 객체가 생성된 클러스터의 워크로드만 타겟팅할 수 있습니다.

외부 및 내부 부하 분산

GDC 애플리케이션은 다음 네트워킹 서비스 유형에 액세스할 수 있습니다.

  • 내부 부하 분산기 (ILB): 조직 내 다른 클러스터에 서비스를 노출할 수 있습니다.
  • 외부 부하 분산기 (ELB): 외부 워크로드에서 라우팅할 수 있는 범위에서 VIP 주소를 할당하고 GDC 조직 내부 또는 외부의 다른 조직과 같은 GDC 인스턴스 외부의 서비스를 노출합니다. ELB에 세션 어피니티를 사용하여 클라이언트의 요청이 항상 동일한 백엔드로 라우팅되도록 합니다.

전역 및 영역 부하 분산기

전역 또는 영역 부하 분산기를 만들 수 있습니다. 전역 부하 분산기의 범위는 GDC 유니버스에 걸쳐 있습니다. 각 GDC 유니버스는 상호 연결되고 컨트롤 플레인을 공유하는 리전으로 구성된 여러 GDC 영역으로 구성될 수 있습니다. 예를 들어 각 영역이 3개인 두 영역으로 구성된 유니버스는 us-virginia1-a, us-virginia1-b, us-virginia1-ceu-ams1-a, eu-ams1-b, eu-ams1-c와 같이 표시될 수 있습니다.

영역 부하 분산기의 범위는 생성 시 지정된 영역으로 제한됩니다. 각 영역은 독립적인 재해 도메인입니다. 영역은 로컬 컨트롤 플레인을 사용하는 인프라, 서비스, API, 도구를 관리합니다.

GDC 유니버스의 전역 및 영역 리소스에 대한 자세한 내용은 다중 영역 개요를 참고하세요.

다음 방법을 사용하여 전역 부하 분산기를 만들 수 있습니다.

다음 방법을 사용하여 영역 부하 분산기를 만들 수 있습니다.

  • 네트워킹 Kubernetes 리소스 모델 (KRM) API를 사용합니다. API 버전 networking.gdc.goog를 사용하여 영역 리소스를 만듭니다.
  • gdcloud CLI를 사용합니다. gdcloud CLI 명령어를 사용하여 부하 분산기를 만들 영역을 지정할 때는 --zone 플래그를 사용합니다.
  • Kubernetes 클러스터에서 Kubernetes 서비스를 직접 사용합니다.

서비스 가상 IP 주소

ILB는 조직 내부 전용 VIP 주소를 할당합니다. 이러한 VIP 주소는 조직 외부에서 연결할 수 없으므로 조직 내의 다른 애플리케이션에 서비스를 노출하는 데만 사용할 수 있습니다. 이러한 IP 주소는 동일한 인스턴스의 조직 간에 겹칠 수 있습니다.

반면 ELB는 조직 외부에서 외부적으로 연결할 수 있는 VIP 주소를 할당합니다. 따라서 ELB VIP 주소는 모든 조직에서 고유해야 합니다. 일반적으로 조직에서 사용할 수 있는 ELB VIP 주소가 더 적습니다.

제한사항

  • BackendService 리소스는 포드 워크로드의 HealthCheck 리소스로 구성하면 안 됩니다. BackendService 사양의 HealthCheckName은 선택사항이며 포드로 부하 분산기를 구성할 때는 생략해야 합니다.

  • 부하 분산기 구성은 포드와 VM이 포함된 혼합 워크로드를 타겟팅할 수 없습니다. 따라서 하나의 BackendService 리소스에 포드와 VM이 포함된 혼합 백엔드는 허용되지 않습니다.

  • 전역 부하 분산기 커스텀 리소스 (ForwardingRuleExternal, ForwardingRuleInternal, BackendService 또는 HealthCheck)의 이름은 이러한 영역 부하 분산기 커스텀 리소스와 동일하면 안 됩니다.

    다음 단계

  • 내부 부하 분산기 구성

  • 외부 부하 분산기 구성