애플리케이션 부하 분산기 개요

애플리케이션 부하 분산기는 서비스를 실행하고 확장할 수 있는 프록시 기반 레이어 7 부하 분산기입니다. 애플리케이션 부하 분산기는 Compute Engine, Google Kubernetes Engine(GKE), Cloud Storage, Cloud Run과 같은 다양한 Google Cloud 플랫폼은 물론 인터넷을 통해 또는 하이브리드 연결을 사용해서 연결된 외부 백엔드에서 호스팅되는 백엔드에 HTTP 및 HTTPS 트래픽을 배포합니다.

애플리케이션 부하 분산기는 다음과 같은 배포 모드로 사용할 수 있습니다.

  • 외부 애플리케이션 부하 분산기: 인터넷의 클라이언트에서 들어오는 트래픽의 부하를 분산합니다. 아키텍처 세부정보는 외부 애플리케이션 부하 분산기 아키텍처를 참조하세요.

    배포 모드 네트워크 서비스 등급 부하 분산 스키마 IP 주소 프런트엔드 포트
    전역 외부 프리미엄 등급 EXTERNAL_MANAGED IPv4
    IPv6

    1~65535 중 정확히 하나의 포트를 참조할 수 있습니다.

    리전 외부 프리미엄 또는 표준 등급 EXTERNAL_MANAGED IPv4
    기본

    프리미엄 등급의 경우 전역

    표준 등급의 경우 리전

    외부 IPv4
    IPv6(프리미엄 등급 필요)
  • 내부 애플리케이션 부하 분산기: VPC 네트워크 또는 VPC 네트워크에 연결된 네트워크 내에서 트래픽을 부하 분산합니다. 아키텍처 세부정보는 내부 애플리케이션 부하 분산기 아키텍처를 참조하세요.

    배포 모드 네트워크 서비스 등급 부하 분산 스키마 IP 주소 프런트엔드 포트
    리전 내부 프리미엄 등급 INTERNAL_MANAGED IPv4

    1~65535 중 정확히 하나의 포트를 참조할 수 있습니다.

    리전 간 내부*

    프리미엄 등급 INTERNAL_MANAGED IPv4

부하 분산 스키마는 부하 분산기의 전달 규칙백엔드 서비스의 속성이며 내부 또는 외부 트래픽에 부하 분산기를 사용할 수 있는지 여부를 나타냅니다. 부하 분산 스키마에서 *_MANAGED는 부하 분산기가 Google Front End(GFE)에서 또는 오픈소스 Envoy 프록시에서 관리형 서비스로 구현되었음을 나타냅니다. *_MANAGED인 부하 분산 스키마에서 요청이 GFE 또는 Envoy 프록시로 라우팅됩니다.

* 부하 분산기는 전역 리소스를 사용하며 선택한 한 개 이상의 Google Cloud 리전에 배포될 수 있습니다.

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

외부 애플리케이션 부하 분산기는 Google Front End(GFE) 또는 관리형 프록시를 사용하여 구현됩니다. 전역 외부 애플리케이션 부하 분산기 및 기본 애플리케이션 부하 분산기에는 Google 전역 네트워크 및 컨트롤 플레인을 사용해서 함께 작동하는, 전역적으로 배포된 GFE가 사용됩니다. GFE는 프리미엄 등급의 멀티 리전 부하 분산을 제공하며, 용량이 있는 가장 가까운 정상 백엔드로 트래픽을 전달하고 사용자에게 가장 가까운 위치에서 HTTP(S) 트래픽을 종료합니다. 전역 외부 애플리케이션 부하 분산기 및 리전 외부 애플리케이션 부하 분산기는 오픈소스 Envoy 프록시 소프트웨어를 사용해서 고급 트래픽 관리 기능을 사용 설정합니다.

이러한 부하 분산기는 전역, 리전 또는 기본 모드 중 하나로 배포할 수 있습니다.

외부 애플리케이션 부하 분산기는 다음 기능을 지원합니다.

다음 다이어그램은 샘플 외부 애플리케이션 부하 분산기 아키텍처를 보여줍니다.

외부 애플리케이션 부하 분산기 아키텍처.
외부 애플리케이션 부하 분산기 아키텍처.

전체 개요는 외부 애플리케이션 부하 분산기의 아키텍처 개요를 참조하세요.

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

내부 애플리케이션 부하 분산기는 내부 IP 주소 뒤에서 HTTP 애플리케이션 트래픽을 실행 및 확장할 수 있게 해주는 Envoy 프록시 기반의 리전별 레이어 7 부하 분산기입니다. 내부 애플리케이션 부하 분산기는 하나의 리전에 있는 백엔드를 지원하지만 모든 Google Cloud 리전의 클라이언트가 전역으로 액세스하도록 구성할 수 있습니다.

부하 분산기는 트래픽을 Google Cloud, 온프레미스 또는 기타 클라우드 환경에 호스팅되는 백엔드에 배포합니다. 내부 애플리케이션 부하 분산기는 또한 다음 기능을 지원합니다.

  • 지역 정책. 백엔드 인스턴스 그룹 또는 네트워크 엔드포인트 그룹 내에서 요청이 구성원 인스턴스 또는 엔드포인트에 배포되는 방식을 구성할 수 있습니다. 자세한 내용은 트래픽 관리를 참조하세요.
  • 전역 액세스. 전역 액세스가 사용 설정되면 모든 리전의 클라이언트가 부하 분산기에 액세스할 수 있습니다. 자세한 내용은 전역 액세스 사용 설정을 참조하세요.
  • 연결된 네트워크에서 액세스. 클라이언트가 자체 Google Cloud Virtual Private Cloud(VPC) 네트워크 이외의 네트워크에서 부하 분산기에 액세스할 수 있습니다. 다른 네트워크는 VPC 네트워크 피어링, Cloud VPN 또는 Cloud Interconnect를 사용하여 부하 분산기의 VPC 네트워크에 연결되어야 합니다. 자세한 내용은 연결된 네트워크 액세스를 참조하세요.
  • 인그레스를 사용하여 GKE와 호환성 확인(완전 조정). 자세한 내용은 내부 애플리케이션 부하 분산기에 대한 인그레스 구성을 참조하세요.
  • 리전 내부 애플리케이션 부하 분산기는 미리보기 버전인 App Hub에서 지원됩니다.
내부 애플리케이션 부하 분산기 아키텍처.
내부 애플리케이션 부하 분산기 아키텍처.

전체 개요는 내부 애플리케이션 부하 분산기의 아키텍처 개요를 참조하세요.

사용 사례

다음 섹션에서는 애플리케이션 부하 분산기에 일반적인 몇 가지 사용 사례를 보여줍니다.

3계층 웹 서비스

기존 3계층 웹 서비스를 지원하기 위해 애플리케이션 부하 분산기 및 네트워크 부하 분산기의 조합을 배포할 수 있습니다. 다음 예시에서는 트래픽 유형에 따라 각 계층을 배포하는 방법을 보여줍니다.

  • 웹 계층. 애플리케이션의 프런트엔드는 인스턴스 그룹 백엔드가 있는 외부 애플리케이션 부하 분산기로 지원됩니다. 인터넷에서 수신되는 트래픽이 부하 분산기를 통해 라우팅되고 여러 리전에 있는 인스턴스 그룹 백엔드 모음에 프록시됩니다. 이러한 백엔드는 내부 애플리케이션 부하 분산기 집합으로 HTTP(S) 트래픽을 전송합니다.
  • 애플리케이션 계층. 애플리케이션 미들웨어는 내부 애플리케이션 부하 분산기 및 인스턴스 그룹 백엔드를 사용하여 배포 및 확장됩니다. 부하 분산기는 미들웨어 인스턴스 그룹으로 트래픽을 분산합니다. 그런 다음 이러한 미들웨어 인스턴스 그룹이 트래픽을 내부 패스 스루 네트워크 부하 분산기로 전송합니다.
  • 데이터베이스 계층. 네트워크 부하 분산기는 데이터베이스 계층의 프런트엔드로 작동합니다. 네트워크 부하 분산기는 여러 리전의 데이터 스토리지 백엔드로 트래픽을 분산합니다.
3계층 웹 애플리케이션의 레이어 7 기반 라우팅.
3계층 웹 애플리케이션의 레이어 7 기반 라우팅.

리전 내부 애플리케이션 부하 분산기에 대한 전역 액세스

리전 내부 애플리케이션 부하 분산기에 전역 액세스를 사용 설정하면 웹 계층 클라이언트 VM이 다른 리전에 있을 수 있습니다.

이 다계층 애플리케이션 예시는 다음을 보여줍니다.

  • 외부 애플리케이션 부하 분산기를 사용하여 트래픽을 부하 분산하는 전역적으로 사용 가능한 인터넷 연결 웹 계층
  • 전역 웹 계층으로 액세스되는 us-east1 리전에 있는 내부 백엔드의 부하 분산된 데이터베이스
  • us-east1에 있는 내부 부하 분산된 데이터베이스 계층에 액세스하는 europe-west1 리전의 웹 계층에 속하는 클라이언트 VM
외부 애플리케이션 부하 분산기, 전역 액세스, 내부 애플리케이션 부하 분산기를 사용하는 3계층 웹 앱
외부 애플리케이션 부하 분산기, 전역 액세스, 내부 애플리케이션 부하 분산기를 사용하는 3계층 웹 앱(확대하려면 클릭)

관할권 규정 준수 워크로드

규제 또는 규정 준수 요구사항이 있는 일부 워크로드는 네트워크 구성 및 트래픽 종료가 특정 리전에 속해 있어야 합니다. 이러한 워크로드에서는 워크로드에 요구되는 관할권 제어를 제공하기 위해 리전 외부 애플리케이션 부하 분산기를 선호하는 경우가 많습니다.

고급 트래픽 관리

애플리케이션 부하 분산기는 트래픽 처리 방법을 세부적으로 제어할 수 있게 해주는 고급 트래픽 관리 기능을 지원합니다. 이러한 기능은 다음과 같습니다.

  • 애플리케이션 코드를 수정할 필요 없이 트래픽 관리 방법을 업데이트할 수 있습니다.
  • 호스트, 경로, 헤더, 기타 요청 매개변수와 같은 HTTP(S) 매개변수를 기반으로 지능적으로 트래픽을 라우팅할 수 있습니다. 예를 들어 Cloud Storage 버킷을 사용해서 정적 동영상 콘텐츠를 처리할 수 있고 인스턴스 그룹 또는 NEG를 사용해서 다른 모든 요청을 처리할 수 있습니다.
  • 웹 기반 트래픽 분할을 사용해서 애플리케이션의 새 버전을 배포할 때 위험을 줄일 수 있습니다. 예를 들어 트래픽의 95%를 이전 버전의 서비스로, 5%를 새 버전의 서비스로 전송할 수 있습니다. 새 버전이 예상 대로 작동하는지 검증한 후에는 트래픽의 100%가 새 서비스 버전에 도달할 때까지 백분율을 점진적으로 조정할 수 있습니다. 트래픽 분할은 일반적으로 새 버전 배포, A/B 테스팅, 서비스 마이그레이션, 레거시 서비스 현대화 및 기타 유사한 프로세스에 사용됩니다.

다음은 내부 애플리케이션 부하 분산기를 사용하여 구현된 경로 기반 라우팅의 예시입니다. 각 경로는 서로 다른 백엔드에 의해 처리됩니다.

내부 애플리케이션 부하 분산기로 경로 기반 라우팅.
내부 애플리케이션 부하 분산기로 경로 기반 라우팅.

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

서비스 확장 프로그램을 통한 확장성

서비스 확장 콜아웃을 사용하면 부하 분산 데이터 경로에 커스텀 로직을 삽입할 수 있습니다. 이러한 확장 프로그램을 사용하면 데이터 처리 중에 사용자 관리 애플리케이션 또는 서비스를 gRPC로 호출하도록 지원되는 애플리케이션 부하 분산기를 지정할 수 있습니다.

자세한 내용은 서비스 확장 프로그램 개요를 참조하세요.

Google Cloud로 기존 서비스 마이그레이션

기존 서비스를 Google Cloud로 마이그레이션하면 온프레미스 용량을 확보하고 온프레미스 인프라 유지에 따르는 비용과 부담을 줄일 수 있습니다. 현재 온프레미스 서비스와 해당 Google Cloud 서비스 엔드포인트 모두에 트래픽을 라우팅할 수 있는 하이브리드 배포를 임시로 설정할 수 있습니다.

다음 다이어그램은 내부 애플리케이션 부하 분산기를 사용한 설정을 보여줍니다. 내부 부하 분산기를 사용하는 경우 가중치 기반 트래픽 분할을 사용해서 두 서비스 간에 트래픽을 분할하도록 Google Cloud 부하 분산기를 구성할 수 있습니다. 트래픽 분할을 사용하면 트래픽 0%를 Google Cloud 서비스로, 100%를 온프레미스 서비스로 전송하여 시작할 수 있습니다. 그런 다음 Google Cloud 서비스로 전송되는 트래픽의 비율을 점차 높일 수 있습니다. 결국 트래픽 100%가 Google Cloud 서비스로 전송되고, 온프레미스 서비스를 사용 중지할 수 있습니다.

기존 서비스를 Google Cloud로 마이그레이션.
기존 서비스를 Google Cloud로 마이그레이션.

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

GKE 클러스터에 대해 애플리케이션 부하 분산기를 배포하는 데에는 세 가지 방법이 있습니다.

Cloud Run, Cloud Run Functions, App Engine 애플리케이션을 위한 부하 분산

애플리케이션 부하 분산기를 Google Cloud 서버리스 애플리케이션의 프런트엔드로 사용할 수 있습니다. 이렇게 하면 다른 서비스와 공유되지 않는 전용 IP 주소로부터 요청을 처리하도록 서버리스 애플리케이션을 구성할 수 있습니다.

이를 설정하려면 부하 분산기의 백엔드로 서버리스 NEG를 사용합니다. 다음 다이어그램은 서버리스 애플리케이션이 애플리케이션 부하 분산기와 통합되는 방법을 보여줍니다.

전역 외부

이 다이어그램은 서버리스 NEG가 전역 외부 애플리케이션 부하 분산기 아키텍처에 어떻게 부합하는지 보여줍니다.

서버리스 앱에 대한 전역 외부 애플리케이션 부하 분산기 아키텍처.
서버리스 앱에 대한 전역 외부 애플리케이션 부하 분산기 아키텍처.

리전 외부

이 다이어그램은 서버리스 NEG가 리전 외부 애플리케이션 부하 분산기 아키텍처에 어떻게 부합하는지 보여줍니다. 이 부하 분산기는 Cloud Run 백엔드만 지원합니다.

서버리스 앱에 대한 리전 외부 애플리케이션 부하 분산기 아키텍처.
서버리스 앱에 대한 리전 외부 애플리케이션 부하 분산기 아키텍처.

리전 내부

이 다이어그램은 서버리스 NEG가 리전 내부 애플리케이션 부하 분산기 모델에 어떻게 부합하는지 보여줍니다. 이 부하 분산기는 Cloud Run 백엔드만 지원합니다.

서버리스 앱에 대한 리전 내부 애플리케이션 부하 분산기 아키텍처.
서버리스 앱에 대한 리전 내부 애플리케이션 부하 분산기 아키텍처.

리전 간 내부

이 다이어그램은 서버리스 NEG가 리전 간 내부 애플리케이션 부하 분산기 모델에 어떻게 부합하는지 보여줍니다. 이 부하 분산기는 Cloud Run 백엔드만 지원합니다.

서버리스 앱에 대한 리전 간 내부 애플리케이션 부하 분산기 아키텍처
서버리스 앱의 리전 간 내부 애플리케이션 부하 분산기 아키텍처(확대하려면 클릭)

관련 문서:

Google Cloud 외부의 백엔드로 부하 분산

애플리케이션 부하 분산기는 온프레미스 데이터 센터 및 기타 클라우드 환경과 같이 Google Cloud 외부로 확장되는 엔드포인트에 대한 트래픽 부하 분산을 지원합니다. 외부 백엔드는 일반적으로 다음 방법 중 하나로 액세스할 수 있습니다.

  • 공개 인터넷을 통해 액세스 가능. 이러한 엔드포인트의 경우 인터넷 NEG를 부하 분산기 백엔드로 사용합니다. 인터넷 NEG는 외부 백엔드에서 단일 FQDN:포트 또는 IP:포트 엔드포인트를 가리키도록 구성됩니다. 인터넷 NEG는 전역 또는 리전일 수 있습니다.

    다음 다이어그램은 전역 인터넷 NEG를 사용하여 공개 인터넷을 통해 액세스할 수 있는 외부 백엔드에 연결하는 방법을 보여줍니다.

    외부 백엔드가 있는 전역 외부 애플리케이션 부하 분산기.
    외부 백엔드가 있는 전역 외부 애플리케이션 부하 분산기.

    자세한 내용은 인터넷 NEG 개요를 참조하세요.

  • 하이브리드 연결(Cloud Interconnect 또는 Cloud VPN)을 사용하여 액세스 가능. 이러한 엔드포인트의 경우 하이브리드 NEG를 부하 분산기 백엔드로 사용합니다. 하이브리드 NEG는 외부 백엔드에서 IP:포트 엔드포인트를 가리키도록 구성됩니다.

    다음 다이어그램은 Cloud Interconnect 또는 Cloud VPN을 사용해서 액세스할 수 있는 외부 백엔드에 연결하는 방법을 보여줍니다.

    외부

    외부 애플리케이션 부하 분산기와의 하이브리드 연결.
    외부 애플리케이션 부하 분산기와의 하이브리드 연결.

    내부

    내부 애플리케이션 부하 분산기와의 하이브리드 연결.
    내부 애플리케이션 부하 분산기와의 하이브리드 연결.

    자세한 내용은 하이브리드 NEG 개요를 참조하세요.

Private Service Connect와 통합

Private Service Connect를 사용하면 다른 그룹, 팀, 프로젝트, 조직에 속하는 VPC 네트워크 간에 서비스의 비공개 소비가 가능합니다. Private Service Connect를 사용하여 Google API 및 서비스 또는 다른 VPC 네트워크의 관리형 서비스에 액세스할 수 있습니다.

전역 외부 애플리케이션 부하 분산기를 사용하면 Private Service Connect를 사용하여 게시된 서비스에 액세스할 수 있습니다. 자세한 내용은 Private Service Connect 백엔드 정보를 참조하세요.

내부 애플리케이션 부하 분산기를 사용하여 지원되는 리전 Google API 및 서비스에 요청을 전송할 수 있습니다. 자세한 내용은 백엔드를 통해 Google API에 액세스를 참조하세요.

고가용성 및 리전 간 장애 조치

리전 간 장애 조치는 전역 외부 애플리케이션 부하 분산기, 기존 애플리케이션 부하 분산기, 리전 간 내부 애플리케이션 부하 분산기에서만 사용할 수 있습니다. 이러한 부하 분산기를 사용하면 여러 리전에 백엔드가 있는 전역 백엔드 서비스를 만들 때 서비스 가용성을 높일 수 있습니다. 특정 리전의 백엔드가 다운되면 트래픽이 다른 리전으로 원활하게 장애 조치됩니다.

장애 조치의 작동 방식에 대한 자세한 내용은 다음 항목을 참조하세요.