공유 VPC로 전역 외부 애플리케이션 부하 분산기 설정

이 문서에서는 공유 VPC 환경에서 VM 인스턴스 그룹 백엔드가 있는 전역 외부 애플리케이션 부하 분산기를 설정하는 두 가지 샘플 구성을 보여줍니다.

  • 첫 번째 예시에서는 부하 분산기의 프런트엔드 및 백엔드 구성요소를 단일 서비스 프로젝트에 만듭니다.
  • 두 번째 예시에서는 부하 분산기의 프런트엔드 구성요소와 URL 맵을 단일 서비스 프로젝트에 만들고 부하 분산기의 백엔드 서비스와 백엔드는 다른 서비스 프로젝트에 만듭니다. 이와 같이 단일 프로젝트의 URL 맵이 다른 프로젝트의 백엔드 서비스를 참조하는 배포 유형을 교차 프로젝트 서비스 참조라고 합니다.

두 예시 모두에서 부하 분산기를 만들기 전에 동일한 초기 구성을 통해 권한을 부여하고, 호스트 프로젝트에서 네트워크 및 서브넷을 구성하고, 공유 VPC를 설정해야 합니다.

이는 전역 외부 애플리케이션 부하 분산기에서 지원하는 유일한 공유 VPC 구성이 아닙니다. 다른 유효한 공유 VPC 아키텍처는 공유 VPC 아키텍처를 참조하세요.

공유 VPC 네트워크를 사용하지 않으려면 VM 인스턴스 그룹 백엔드가 있는 전역 외부 애플리케이션 부하 분산기 설정을 참조하세요.

시작하기 전에

권한 필요

공유 VPC 네트워크에서 부하 분산기를 설정하려면 관리자가 몇 가지 초기 설정과 프로비저닝을 수행해야 합니다. 초기 설정 후 서비스 프로젝트 소유자는 다음 중 하나를 수행할 수 있습니다.

  • 모든 부하 분산기의 모든 구성요소와 백엔드를 서비스 프로젝트에 배포합니다.
  • 부하 분산기의 백엔드 구성요소(백엔드 서비스와 백엔드)를 다른 서비스 또는 호스트 프로젝트의 URL 맵에서 참조할 수 있는 서비스 프로젝트에 배포합니다.

이 섹션에서는 이 가이드에 따라 공유 VPC 네트워크에 부하 분산기를 설정하는 데 필요한 권한을 요약합니다.

공유 VPC 설정

다음 태스크에는 다음 역할이 필요합니다.

  1. 공유 VPC 설정 및 호스트 프로젝트 사용 설정과 같은 일회성 관리 태스크를 수행합니다.
  2. 새 서비스 프로젝트를 온보딩할 때마다 반복해야 하는 관리 작업을 수행합니다. 여기에는 서비스 프로젝트 연결, 네트워킹 리소스 프로비저닝 및 구성, 서비스 프로젝트 관리자에게 액세스 권한 부여가 포함됩니다.

이러한 작업은 공유 VPC 호스트 프로젝트에서 수행해야 합니다. 공유 VPC 관리자를 공유 VPC 호스트 프로젝트의 소유자로 지정하는 것이 좋습니다. 이렇게 하면 네트워크 관리자 및 보안 관리자 역할이 자동으로 부여됩니다.

작업 필요한 역할
공유 VPC 설정, 호스트 프로젝트 사용 설정 및 서비스 프로젝트 관리자에게 액세스 권한 부여 공유 VPC 관리자
공유 VPC 호스트 프로젝트에서 서브넷을 만들기 및 서비스 프로젝트 관리자에게 액세스 권한 부여 네트워크 관리자
방화벽 규칙 추가 및 삭제 보안 관리자

서브넷이 프로비저닝되면 호스트 프로젝트 소유자는 호스트 프로젝트에서 이러한 리소스를 사용해야 하는 모든 사용자(일반적으로 서비스 프로젝트 관리자, 개발자 또는 서비스 계정)에게 네트워크 사용자 역할을 부여해야 합니다.

작업 필요한 역할
호스트 프로젝트에 속한 VPC 네트워크 및 서브넷 사용 네트워크 사용자

이 역할은 프로젝트 수준 또는 개별 서브넷에 부여할 수 있습니다. 개별 서브넷에 역할을 부여하는 것이 좋습니다. 프로젝트에 대한 역할을 부여하면 호스트 프로젝트의 VPC 네트워크에서 현재 및 향후의 모든 서브넷에 액세스할 수 있습니다.

부하 분산기 및 백엔드 배포

부하 분산 리소스 및 백엔드를 만들려면 서비스 프로젝트 관리자는 서비스 프로젝트에서 다음과 같은 역할이 필요합니다. 이러한 권한은 서비스 프로젝트 소유자나 편집자에게 자동으로 부여됩니다.

서비스 프로젝트에서 부여된 역할
작업 필요한 역할
부하 분산기 구성요소 만들기 네트워크 관리자
인스턴스 만들기 인스턴스 관리자
SSL 인증서 생성 및 수정 보안 관리자

프로젝트 간 백엔드 서비스 참조

부하 분산기가 다른 서비스 프로젝트의 백엔드 서비스를 참조해야 한다면, 즉 프로젝트 간 서비스 참조의 경우 부하 분산기 관리자에게 백엔드 서비스가 생성되는 서비스 프로젝트의 다음 역할이 필요합니다.

서비스 프로젝트에서 부여된 역할
작업 필요한 역할
다른 프로젝트의 서비스를 사용할 권한 부하 분산기 서비스 사용자

이 역할은 프로젝트 수준 또는 개별 백엔드 서비스에 부여할 수 있습니다. 이 역할을 부여하는 방법은 이 페이지의 교차 프로젝트 서비스 참조 예시를 참조하세요.

IAM에 대한 자세한 내용은 다음 가이드를 참조하세요.

기본 요건

이 섹션에서는 다음 단계를 수행해야 합니다.

  1. 호스트 프로젝트에서 네트워크 및 서브넷을 구성합니다.
  2. 호스트 프로젝트에서 공유 VPC를 설정합니다.

새 부하 분산기를 만들 때마다 이 섹션의 단계를 수행할 필요는 없습니다. 하지만 부하 분산기를 만들기 전에 여기에 설명된 리소스에 액세스할 수 있는지 확인해야 합니다.

호스트 프로젝트에서 네트워크 및 서브넷 구성

부하 분산기의 백엔드에 대한 서브넷이 있는 공유 VPC 네트워크가 필요합니다.

이 예시에서는 다음 VPC 네트워크, 리전, 서브넷을 사용합니다.

  • 네트워크: 네트워크 이름은 lb-network입니다.

  • 부하 분산기 백엔드용 서브넷. us-west1 리전에 있는 lb-backend-subnet이라는 이름의 서브넷은 기본 IP 범위로 10.1.2.0/24를 사용합니다.

부하 분산기 백엔드용 서브넷 구성

새 부하 분산기를 만들려고 할 때마다 이 단계를 수행할 필요가 없습니다. 서비스 프로젝트에 공유 VPC 네트워크의 서브넷에 대한 액세스 권한만 있으면 됩니다.

이 섹션의 모든 단계는 호스트 프로젝트에서 수행되어야 합니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. VPC 네트워크 만들기를 클릭합니다.
  3. 이름lb-network를 입력합니다.
  4. 서브넷 섹션에서 다음을 수행합니다.

    1. 서브넷 생성 모드커스텀으로 설정합니다.
    2. 새 서브넷 섹션에 다음 정보를 입력합니다.

      • 이름: lb-backend-subnet
      • 리전: us-west1

      • IP 주소 범위: 10.1.2.0/24

    3. 완료를 클릭합니다.

  5. 만들기를 클릭합니다.

gcloud

  1. gcloud compute networks create 명령어를 사용하여 VPC 네트워크를 만듭니다.

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. us-west1 리전의 lb-network 네트워크에 서브넷을 만듭니다.

    gcloud compute networks subnets create lb-frontend-and-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

서비스 프로젝트 관리자에게 백엔드 서브넷에 대한 액세스 권한 부여

서비스 프로젝트 관리자는 부하 분산기의 백엔드를 프로비저닝할 수 있도록 lb-backend-subnet 서브넷에 액세스할 수 있어야 합니다.

공유 VPC 관리자는 서비스 프로젝트 관리자(또는 서브넷을 사용하는 리소스 및 백엔드를 배포하는 개발자)에게 백엔드 서브넷에 대한 액세스 권한을 부여해야 합니다. 자세한 내용은 일부 서브넷의 서비스 프로젝트 관리자를 참조하세요.

호스트 프로젝트에서 방화벽 규칙 구성

이 예시에서는 다음과 같은 방화벽 규칙을 사용합니다.
  • fw-allow-health-check. 부하 분산된 인스턴스에 적용되는 인그레스 규칙으로 Google Cloud 상태 점검 시스템(130.211.0.0/2235.191.0.0/16)의 모든 TCP 트래픽을 허용합니다. 이 예시에서는 load-balanced-backend 대상 태그를 사용하여 인그레스 규칙을 적용해야 할 인스턴스를 식별합니다.
이 방화벽 규칙이 없으면 기본 거부 인그레스 규칙은 백엔드 인스턴스로 들어오는 트래픽을 차단합니다.

이 섹션의 모든 단계는 호스트 프로젝트에서 수행되어야 합니다.

콘솔

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 방화벽 규칙 만들기를 클릭하여 Google Cloud 상태 점검을 허용하는 규칙을 만듭니다.
    • 이름: fw-allow-health-check
    • 네트워크: lb-network
    • 트래픽 방향: 인그레스
    • 일치 시 작업: 허용
    • 대상: 지정된 대상 태그
    • 대상 태그: load-balanced-backend
    • 소스 필터: IPv4 범위
    • 소스 IPv4 범위: 130.211.0.0/2235.191.0.0/16
    • 프로토콜 및 포트:
      • 지정된 프로토콜 및 포트를 선택합니다.
      • TCP를 확인하고 포트 번호에 80을 입력합니다.
      • 권장사항에 따라서 상태 점검에 사용되는 것과 일치하는 프로토콜 및 포트로 이러한 규칙을 제한합니다. 프로토콜 및 포트에 tcp:80을 사용하면 Google Cloud가 포트 80에서 HTTP를 사용하여 VM에 연결할 수 있지만 포트 443에서 HTTPS를 사용하여 연결할 수는 없습니다.

  3. 만들기를 클릭합니다.

gcloud

  1. fw-allow-health-check 방화벽 규칙을 만들어 Google Cloud 상태 점검을 허용합니다. 이 예시에서는 상태 점검 프로버의 모든 TCP 트래픽을 허용합니다. 그러나 필요에 따라 더 좁은 포트 집합을 구성할 수 있습니다.

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=load-balanced-backend \
       --rules=tcp
    

호스트 프로젝트에서 공유 VPC 설정

이 단계에서는 공유 VPC 호스트 프로젝트를 사용 설정하고, 호스트 프로젝트의 서브넷을 공유하고, 서비스 프로젝트가 공유 VPC 네트워크를 사용할 수 있도록 호스트 프로젝트에 서비스 프로젝트를 연결합니다. 호스트 프로젝트에서 공유 VPC를 설정하려면 다음 페이지를 참조하세요.

이 안내의 나머지 부분에서는 이미 공유 VPC를 설정했다고 가정합니다. 여기에는 조직에 IAM 정책을 설정하고 호스트와 서비스 프로젝트를 지정하는 과정이 포함됩니다.

공유 VPC를 설정하고 호스트와 서비스 프로젝트를 사용 설정한 다음에 진행하세요.

이 기본 요건 섹션에 정의된 단계를 완료한 후 다음 설정 중 하나를 수행할 수 있습니다.

단일 서비스 프로젝트에서 부하 분산기 구성

호스트 프로젝트에서 VPC 네트워크를 구성하고 공유 VPC를 설정한 후에는 서비스 프로젝트에 집중하면서 여기에 모든 부하 분산 구성요소(백엔드 서비스, URL 맵, 대상 프록시, 전달 규칙) 및 백엔드를 만들 차례입니다.

이 섹션에서는 이전 섹션에서 설명한 기본 요건 단계를 호스트 프로젝트에서 이미 수행했다고 가정합니다. 이 섹션에서는 부하 분산기의 프런트엔드 및 백엔드 구성요소와 백엔드를 단일 서비스 프로젝트에 만듭니다.

다음 그림은 공유 VPC 네트워크의 호스트 프로젝트에 연결된 단일 서비스 프로젝트에 있는 전역 외부 애플리케이션 부하 분산기의 구성요소를 보여줍니다.

단일 서비스 프로젝트에 있는 부하 분산기의 프런트엔드 및 백엔드 구성요소
그림 1. 단일 서비스 프로젝트에 있는 부하 분산기의 프런트엔드 및 백엔드 구성요소

서비스 프로젝트 관리자(또는 서비스 프로젝트 내에서 작업하는 개발자)가 이 단계를 수행해야 하며 호스트 프로젝트 관리자는 이 단계에 관여할 필요가 없습니다. 이 섹션의 단계는 전역 외부 애플리케이션 부하 분산기를 설정하는 표준 단계와 비슷합니다.

이 페이지의 예시에서는 임시 IP 주소 할당을 허용하는 대신 전역 외부 애플리케이션 부하 분산기의 전달 규칙에 예약된 IP 주소를 명시적으로 설정합니다. 권장사항에 따라서 전달 규칙에 IP 주소를 예약하는 것이 좋습니다.

관리형 인스턴스 그룹 백엔드 만들기

관리형 인스턴스 그룹을 만들기 전에 가상 머신(VM) 인스턴스를 만드는 데 사용할 수 있는 인스턴스 템플릿을 만듭니다. 클라이언트에서 전송된 트래픽은 인스턴스 그룹의 VM으로 부하 분산됩니다. 관리형 인스턴스 그룹은 외부 애플리케이션 부하 분산기의 백엔드 서버를 실행하는 VM을 제공합니다. 이 예시에서는 백엔드가 자체 호스트 이름을 제공합니다.

콘솔

인스턴스 템플릿 만들기

  1. Google Cloud 콘솔에서 Compute Engine 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.

  3. 이름backend-template를 입력합니다.

  4. 부팅 디스크 섹션에서 부팅 디스크가 Debian GNU/Linux 10(buster)과 같은 Debian 이미지로 설정되었는지 확인합니다. 필요한 경우 변경을 클릭하여 이미지를 변경합니다.

  5. 고급 옵션 섹션을 펼칩니다.

  6. 네트워킹 섹션을 펼치고 네트워크 태그 필드에 load-balanced-backend를 입력합니다.

  7. 네트워크 인터페이스에서 나와 공유된 네트워크(호스트 프로젝트: HOST_PROJECT_ID)를 선택합니다.

  8. 공유 서브네트워크 목록에서 lb-network 네트워크의 lb-backend-subnet 서브넷을 선택합니다.

  9. 관리 섹션을 펼치고 자동화 필드에 다음 시작 스크립트를 지정합니다.

     #! /bin/bash
     apt-get update
     apt-get install apache2 -y
     a2ensite default-ssl
     a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://metadata.google.internal/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2
    
  10. 만들기를 클릭합니다.

관리형 인스턴스 그룹 만들기

  1. Google Cloud 콘솔에서 Compute Engine 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다.

  3. 옵션에서 새 관리형 인스턴스 그룹(스테이트리스(Stateless))을 선택합니다.

  4. 인스턴스 그룹의 이름으로 lb-backend을 입력합니다.

  5. 인스턴스 템플릿 목록에서 이전 단계에서 만든 backend-template 인스턴스 템플릿을 선택합니다.

  6. 위치 섹션에서 단일 영역을 선택하고 다음 값을 입력합니다.

    • 리전에서 us-west1을 선택합니다.

    • 영역에서 us-west1-a를 선택합니다.

  7. 자동 확장 섹션에서 다음 값을 입력합니다.

    • 자동 확장 모드에서 사용: 그룹에 인스턴스 추가 및 삭제를 선택합니다.

    • 최소 인스턴스 수2를 선택합니다.

    • 최대 인스턴스 수에서 3을 선택합니다.

  8. 포트 매핑 섹션에서 포트 추가를 클릭하고 다음 값을 입력합니다.

    • 포트 이름http을 입력합니다.

    • 포트 번호80을 입력합니다.

  9. 만들기를 클릭합니다.

gcloud

  1. 인스턴스 템플릿을 만듭니다.

    gcloud compute instance-templates create backend-template \
        --region=us-west1 \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-backend-subnet \
        --tags=load-balanced-backend \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        systemctl restart apache2' \
        --project=SERVICE_PROJECT_ID
    
  2. 관리형 인스턴스 그룹을 만들고 이전 단계에서 만든 인스턴스 템플릿을 선택합니다.

    gcloud compute instance-groups managed create lb-backend \
        --zone=us-west1-a \
        --size=2 \
        --template=backend-template \
        --project=SERVICE_PROJECT_ID
    
  3. 인스턴스 그룹에 이름이 지정된 포트 추가:

    gcloud compute instance-groups set-named-ports lb-backend \
        --named-ports=http:80 \
        --zone=us-west1-a \
        --project=SERVICE_PROJECT_ID
    

상태 점검 만들기

상태 점검은 백엔드의 가용성을 확인하는 테스트입니다. 포트 80에서 HTTP 프로토콜과 프로브를 사용하는 상태 점검을 만듭니다. 나중에 부하 분산기에서 참조하는 백엔드 서비스에 이 상태 점검을 연결합니다.

콘솔

  1. Google Cloud 콘솔에서 Compute Engine 상태 점검 페이지로 이동합니다.

    상태 점검으로 이동

  2. 상태 점검의 이름으로 lb-health-check를 입력합니다.

  3. 프로토콜을 HTTP로 설정합니다.

  4. 만들기를 클릭합니다.

gcloud

HTTP 상태 확인을 만듭니다.

gcloud compute health-checks create http lb-health-check \
  --use-serving-port \
  --project=SERVICE_PROJECT_ID

부하 분산기의 IP 주소 예약

부하 분산기의 전달 규칙에 할당할 수 있는 전역 고정 외부 IP 주소를 예약합니다.

콘솔

  1. Google Cloud 콘솔에서 VPC IP 주소 페이지로 이동합니다.

    IP 주소로 이동

  2. 외부 고정 IP 주소 예약을 클릭합니다.

  3. 이름lb-ipv4-1를 입력합니다.

  4. 네트워크 서비스 등급프리미엄으로 설정합니다.

  5. IP 버전IPv4로 설정합니다.

  6. 유형전역으로 설정합니다.

  7. 예약을 클릭합니다.

gcloud

전역 고정 외부 IP 주소를 만듭니다.

gcloud compute addresses create lb-ipv4-1 \
  --ip-version=IPV4 \
  --network-tier=PREMIUM \
  --global
  --project=SERVICE_PROJECT_ID

SSL 인증서 리소스 설정

HTTPS를 요청 및 응답 프로토콜로 사용하는 부하 분산기의 경우 다음 리소스의 설명에 따라 SSL 인증서 리소스를 만듭니다.

Google 관리형 인증서를 사용하는 것이 좋습니다.

이 예시에서는 이름이 lb-ssl-cert인 SSL 인증서를 만들었다고 가정합니다. SSL 인증서는 다음 단계 중 하나에서 만들 대상 프록시에 연결됩니다.

부하 분산기 구성

이 섹션에서는 전역 외부 애플리케이션 부하 분산기에 대해 다음 리소스를 만드는 방법을 보여줍니다.

  • 관리형 인스턴스 그룹이 백엔드인 백엔드 서비스
  • URL 맵
  • SSL 인증서(HTTPS 트래픽에만 필요)
  • 대상 프록시
  • 전달 규칙

이 예시에서는 클라이언트와 부하 분산기 간의 요청 및 응답 프로토콜로 HTTP 또는 HTTPS를 사용할 수 있습니다. HTTPS의 경우 프록시를 구성하려면 SSL 인증서 리소스가 필요합니다. Google 관리형 인증서를 사용하는 것이 좋습니다.

콘솔

구성 시작

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기 만들기를 클릭합니다.
  3. 부하 분산기 유형에서 애플리케이션 부하 분산기(HTTP/HTTPS)를 선택하고 다음을 클릭합니다.
  4. 공개 또는 내부에서 공개(외부)를 선택하고 다음을 클릭합니다.
  5. 전역 또는 단일 리전 배포에서 전역 워크로드에 적합을 선택하고 다음을 클릭합니다.
  6. 부하 분산기 생성에서 전역 외부 애플리케이션 부하 분산기를 선택하고 다음을 클릭합니다.
  7. 구성을 클릭합니다.

기본 구성

  1. 부하 분산기 이름으로 l7-xlb-shared-vpc를 입력합니다.

부하 분산기 프런트엔드 구성

HTTP 트래픽의 경우:

  1. 프런트엔드 구성을 클릭합니다.

  2. 부하 분산기 프런트엔드 이름에 http-fw-rule를 입력합니다.

  3. 프로토콜에서 HTTP를 선택합니다.

  4. IP 버전IPv4로 설정합니다.

  5. IP 주소에서 이전에 예약한 IP 주소인 lb-ipv4-1을 선택합니다.

  6. 포트80으로 설정하여 HTTP 트래픽을 허용합니다.

  7. 프런트엔드 구성을 완료하기 위해 완료를 클릭합니다.

  8. 계속하기 전에 프런트엔드 구성 옆에 파란색 체크표시가 있는지 확인합니다.

HTTPS 트래픽의 경우:

  1. 프런트엔드 구성을 클릭합니다.

  2. 부하 분산기 프런트엔드 이름에 https-fw-rule를 입력합니다.

  3. 프로토콜HTTPS를 선택합니다.

  4. IP 버전IPv4로 설정합니다.

  5. IP 주소에서 이전에 예약한 IP 주소인 lb-ipv4-1을 선택합니다.

  6. 포트443으로 설정하여 HTTPS 트래픽을 허용합니다.

  7. 인증서 목록에서 내가 만든 SSL 인증서를 선택합니다.

  8. 프런트엔드 구성을 완료하기 위해 완료를 클릭합니다.

  9. 계속하기 전에 프런트엔드 구성 옆에 파란색 체크표시가 있는지 확인합니다.

백엔드 구성

  1. 백엔드 구성을 클릭합니다.

  2. 백엔드 서비스 및 백엔드 버킷 메뉴에서 백엔드 서비스 만들기를 클릭합니다.

  3. 백엔드 서비스 이름으로 lb-backend-service를 입력합니다.

  4. 백엔드 유형에서 인스턴스 그룹을 선택합니다.

  5. 프로토콜HTTP로 설정합니다.

  6. 이름이 지정된 포트 필드에 http를 입력합니다. 이 이름은 관리형 인스턴스 그룹을 만들 때 입력한 포트 이름과 동일합니다.

  7. 백엔드 서비스에 백엔드를 추가하려면 다음을 수행합니다.

    1. 백엔드 섹션에서 인스턴스 그룹을 이전 단계에서 만든 관리형 인스턴스 그룹인 lb-backend로 설정합니다.

    2. 포트 번호80을 입력합니다.

    3. 백엔드를 추가하려면 완료를 클릭합니다.

  8. 상태 점검을 추가하려면 상태 점검 목록에서 앞에서 만든 상태 점검인 lb-health-check를 선택합니다.

  9. 백엔드 서비스를 만들려면 만들기를 클릭합니다.

  10. 계속하기 전에 백엔드 구성 옆에 파란색 체크표시가 있는지 확인합니다.

라우팅 규칙 구성

  • 라우팅 규칙을 클릭합니다. 일치하지 않는 모든 호스트 및 일치하지 않는 모든 경로의 기본 백엔드 서비스가 lb-backend-service인지 확인합니다.

트래픽 관리에 대한 자세한 내용은 트래픽 관리 설정을 참조하세요.

구성 검토 및 완료

  1. 검토 및 완료를 클릭합니다.

  2. 부하 분산기의 프런트엔드 및 백엔드 설정을 검토하여 원하는 대로 구성되었는지 확인합니다.

  3. 만들기를 클릭하고 부하 분산기가 생성될 때까지 기다립니다.

gcloud

  1. 백엔드 서비스를 만들어 백엔드 간에 트래픽을 분산합니다.

    gcloud compute backend-services create lb-backend-service \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=lb-health-check \
        --global \
        --project=SERVICE_PROJECT_ID
    
  2. 백엔드 서비스에 인스턴스 그룹을 백엔드로 추가합니다.

    gcloud compute backend-services add-backend lb-backend-service \
        --instance-group=lb-backend \
        --instance-group-zone=us-west1-a \
        --global \
        --project=SERVICE_PROJECT_ID
    
  3. 수신되는 요청을 백엔드 서비스로 라우팅하는 URL 맵을 만듭니다.

    gcloud compute url-maps create lb-map \
        --default-service=lb-backend-service \
        --global \
        --project=SERVICE_PROJECT_ID
    
  4. 대상 프록시를 만듭니다.

    HTTP 트래픽의 경우 대상 HTTP 프록시를 만들어 요청을 URL 맵으로 라우팅합니다.

    gcloud compute target-http-proxies create http-proxy \
        --url-map=lb-map \
        --global \
        --project=SERVICE_PROJECT_ID
    

    HTTPS 트래픽의 경우 대상 HTTPS 프록시를 만들어 요청을 URL 맵으로 라우팅합니다. 프록시는 HTTPS 부하 분산기의 SSL 인증서를 보유하는 부하 분산기의 일부분이므로 이 단계에서 SSL 인증서도 로드합니다.

    gcloud compute target-https-proxies create https-proxy \
        --url-map=lb-map \
        --ssl-certificates=lb-ssl-cert
        --global \
        --project=SERVICE_PROJECT_ID
    
  5. 전달 규칙을 만듭니다.

    HTTP 트래픽의 경우 전역 전달 규칙을 만들어 수신 요청을 대상 프록시로 라우팅합니다.

    gcloud compute forwarding-rules create http-fw-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --address=lb-ipv4-1 \
        --global \
        --target-http-proxy=http-proxy \
        --ports=80 \
        --project=SERVICE_PROJECT_ID
    

    HTTPS 트래픽의 경우 전역 전달 규칙을 만들어 수신 요청을 대상 프록시로 라우팅합니다.

    gcloud compute forwarding-rules create https-fw-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --address=lb-ipv4-1 \
        --global \
        --target-https-proxy=https-proxy \
        --ports=443 \
        --project=SERVICE_PROJECT_ID
    

부하 분산기 테스트

부하 분산 서비스가 실행 중이면 트래픽을 전달 규칙으로 전송하고 다른 인스턴스로 분산되는 트래픽을 살펴볼 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 앞에서 만든 부하 분산기를 클릭합니다.

  3. 부하 분산기의 IP 주소를 확인합니다. 다음 단계에서 이 IP 주소를 LB_IP_ADDRESS로 참조합니다.

  4. 백엔드 섹션에서 VM이 정상인지 확인합니다.

    정상 열에 VM이 정상으로 표시되어야 합니다. 예를 들어 인스턴스 두 개가 생성된 경우 메시지에서 2 of 2 옆에 녹색 체크표시가 있어야 합니다. 그렇지 않을 경우에는 우선 페이지를 새로고침해 보세요. Google Cloud 콘솔에서 VM이 정상인지 확인하는 데 몇 분 정도 걸릴 수 있습니다. 몇 분 후에도 백엔드가 정상으로 표시되지 않으면 방화벽 구성과 백엔드 VM에 할당된 네트워크 태그를 검토합니다.

  5. Google Cloud 콘솔에서 백엔드 인스턴스가 정상으로 표시된 후 웹브라우저에서 https://LB_IP_ADDRESS 또는 http://LB_IP_ADDRESS로 이동하여 부하 분산기를 테스트할 수 있습니다. LB_IP_ADDRESS부하 분산기의 IP 주소로 바꾸세요.

  6. 자체 서명 인증서를 HTTPS 테스트에 사용하면 브라우저에 경고가 표시됩니다. 브라우저가 자체 서명 인증서를 수락하도록 명시적으로 지시해야 합니다.

  7. 브라우저는 페이지를 제공한 인스턴스의 이름을 표시하는 콘텐츠로 페이지를 렌더링해야 합니다(예: Page served from: lb-backend-example-xxxx). 브라우저에서 이 페이지를 렌더링하지 않는 경우 이 가이드의 구성 설정을 검토하세요.

gcloud

예약된 IP 주소를 확인합니다.

gcloud compute addresses describe IP_ADDRESS_NAME \
    --format="get(address)" \
    --global

웹브라우저에서 https://LB_IP_ADDRESS 또는 http://LB_IP_ADDRESS로 이동하여 부하 분산기를 테스트할 수 있습니다. LB_IP_ADDRESS부하 분산기의 IP 주소로 바꾸세요.

자체 서명 인증서를 HTTPS 테스트에 사용하면 브라우저에 경고가 표시됩니다. 브라우저가 자체 서명 인증서를 수락하도록 명시적으로 지시해야 합니다.

브라우저에서 백엔드 인스턴스에 대한 최소한의 정보로 페이지를 렌더링해야 합니다. 브라우저에서 이 페이지를 렌더링하지 않는 경우 이 가이드의 구성 설정을 검토하세요.

프로젝트 간 백엔드 서비스로 부하 분산기 구성

이 페이지의 이전 예시에서는 모든 부하 분산기 구성 요소와 백엔드가 단일 서비스 프로젝트에 생성되는 공유 VPC 배포를 설정하는 방법을 보여줍니다.

전역 외부 애플리케이션 부하 분산기를 사용하면 단일 호스트 또는 서비스 프로젝트의 URL 맵에서 공유 VPC 환경의 여러 서비스 프로젝트에 위치한 백엔드 서비스(및 백엔드)를 참조할 수 있는 공유 VPC 배포도 구성할 수 있습니다. 이를 교차 프로젝트 서비스 참조라고 합니다.

이 섹션의 단계를 참조하면 여기에 나온 지원되는 조합을 구성할 수 있습니다.

  • 호스트 프로젝트의 전달 규칙, 대상 프록시 및 URL 맵, 서비스 프로젝트의 백엔드 서비스
  • 단일 서비스 프로젝트의 전달 규칙, 대상 프록시 및 URL 맵, 다른 서비스 프로젝트의 백엔드 서비스

설정 요구사항

아직 수행하지 않았으면 공유 VPC를 설정하고 이 예시에 필요한 네트워크, 서브넷, 방화벽 규칙을 구성하는 모든 기본 요건 단계를 완료해야 합니다. 자세한 내용은 이 페이지 시작 부분에 있는 다음 섹션을 참조하세요.

이 설정에서는 전달 규칙, 대상 프록시, URL 맵이 단일 서비스 프로젝트에 있으며 백엔드 서비스와 백엔드는 다른 서비스 프로젝트에 있습니다.

  1. 서비스 프로젝트 B에서 다음 백엔드 리소스를 구성합니다.
    • 관리형 인스턴스 그룹 백엔드
    • 상태 점검
    • 전역 백엔드 서비스
  2. 서비스 프로젝트 A에서 다음 프런트엔드 리소스를 구성합니다.
    • IP 주소
    • SSL 인증서
    • URL 맵
    • 대상 프록시
    • 전달 규칙

다음 그림에서는 단일 서비스 프로젝트의 부하 분산기 백엔드 서비스를 다른 서비스 프로젝트의 URL 맵에서 참조하는 전역 외부 애플리케이션 부하 분산기를 보여줍니다.

서로 다른 서비스 프로젝트에 있는 부하 분산기 프런트엔드 및 백엔드 구성요소
그림 2. 서로 다른 서비스 프로젝트에 있는 부하 분산기 프런트엔드 및 백엔드

전역 외부 애플리케이션 부하 분산기에서 백엔드 인스턴스가 동일한 VPC 네트워크 또는 공유 VPC 네트워크에 속하지 않아도 교차 프로젝트 서비스 참조를 사용할 수 있습니다.

이 예시에서는 서비스 프로젝트의 백엔드 VM이 호스트 프로젝트에 생성된 공유 VPC 네트워크에 속합니다. 하지만 서비스 프로젝트에서 필요한 방화벽 규칙과 함께 독립형 VPC 네트워크(비공유 VPC 네트워크)를 설정할 수도 있습니다. 그런 다음 이 독립형 VPC 네트워크에 속하는 백엔드 인스턴스(예: 인스턴스 그룹)를 만들 수 있습니다. 백엔드 인스턴스를 만든 후에는 이 예시에서 설명하는 나머지 단계에 따라 서비스 프로젝트에 백엔드 서비스를 만들고 교차 프로젝트 서비스 참조를 사용하여 다른 서비스 프로젝트의 URL 맵에 연결할 수 있습니다.

서비스 프로젝트 B에서 부하 분산기의 백엔드 구성요소 구성

이 섹션에서는 서비스 프로젝트 B에서 다음 백엔드 리소스를 구성해야 합니다.

  • 관리형 인스턴스 그룹
  • 상태 점검
  • 전역 백엔드 서비스

관리형 인스턴스 그룹 백엔드 만들기

관리형 인스턴스 그룹을 만들기 전에 가상 머신(VM) 인스턴스를 만드는 데 사용할 수 있는 인스턴스 템플릿을 만듭니다. 클라이언트에서 전송된 트래픽은 인스턴스 그룹의 VM으로 부하 분산됩니다. 관리형 인스턴스 그룹은 외부 애플리케이션 부하 분산기의 백엔드 서버를 실행하는 VM을 제공합니다. 이 예시에서는 백엔드가 자체 호스트 이름을 제공합니다.

콘솔

인스턴스 템플릿 만들기

  1. Google Cloud 콘솔에서 Compute Engine 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.

  3. 이름backend-template를 입력합니다.

  4. 부팅 디스크 섹션에서 부팅 디스크가 Debian GNU/Linux 10(buster)과 같은 Debian 이미지로 설정되었는지 확인합니다. 필요한 경우 변경을 클릭하여 이미지를 변경합니다.

  5. 고급 옵션 섹션을 펼칩니다.

  6. 네트워킹 섹션을 펼치고 네트워크 태그 필드에 load-balanced-backend를 입력합니다.

  7. 네트워크 인터페이스에서 나와 공유된 네트워크(호스트 프로젝트: HOST_PROJECT_ID)를 선택합니다.

  8. 공유 서브네트워크 목록에서 lb-network 네트워크의 lb-backend-subnet 서브넷을 선택합니다.

  9. 관리 섹션을 펼치고 자동화 필드에 다음 시작 스크립트를 지정합니다.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
    
  10. 만들기를 클릭합니다.

관리형 인스턴스 그룹 만들기

  1. Google Cloud 콘솔에서 Compute Engine 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다.

  3. 옵션에서 새 관리형 인스턴스 그룹(스테이트리스(Stateless))을 선택합니다.

  4. 인스턴스 그룹의 이름으로 lb-backend을 입력합니다.

  5. 인스턴스 템플릿 목록에서 이전 단계에서 만든 backend-template 인스턴스 템플릿을 선택합니다.

  6. 위치 섹션에서 단일 영역을 선택하고 다음 값을 입력합니다.

    • 리전에서 us-west1을 선택합니다.

    • 영역에서 us-west1-a를 선택합니다.

  7. 자동 확장 섹션에서 다음 값을 입력합니다.

    • 자동 확장 모드에서 사용: 그룹에 인스턴스 추가 및 삭제를 선택합니다.

    • 최소 인스턴스 수2를 선택합니다.

    • 최대 인스턴스 수에서 3을 선택합니다.

  8. 포트 매핑 섹션에서 포트 추가를 클릭하고 다음 값을 입력합니다.

    • 포트 이름http을 입력합니다.

    • 포트 번호80을 입력합니다.

  9. 만들기를 클릭합니다.

gcloud

  1. 인스턴스 템플릿을 만듭니다.

    gcloud compute instance-templates create backend-template \
        --region=us-west1 \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-backend-subnet \
        --tags=load-balanced-backend \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        systemctl restart apache2' \
        --project=SERVICE_PROJECT_B_ID
    
  2. 관리형 인스턴스 그룹을 만들고 이전 단계에서 만든 인스턴스 템플릿을 선택합니다.

    gcloud compute instance-groups managed create lb-backend \
        --zone=us-west1-a \
        --size=2 \
        --template=backend-template \
        --project=SERVICE_PROJECT_B_ID
    
  3. 인스턴스 그룹에 이름이 지정된 포트 추가:

    gcloud compute instance-groups set-named-ports lb-backend \
        --named-ports=http:80 \
        --zone=us-west1-a \
        --project=SERVICE_PROJECT_B_ID
    

상태 점검 만들기

상태 점검은 백엔드의 가용성을 확인하는 테스트입니다. 포트 80에서 HTTP 프로토콜과 프로브를 사용하는 상태 점검을 만듭니다. 나중에 부하 분산기에서 참조하는 백엔드 서비스에 이 상태 점검을 연결합니다.

콘솔

  1. Google Cloud 콘솔에서 Compute Engine 상태 점검 페이지로 이동합니다.

    상태 점검으로 이동

  2. 상태 점검의 이름으로 lb-health-check를 입력합니다.

  3. 프로토콜을 HTTP로 설정합니다.

  4. 만들기를 클릭합니다.

gcloud

HTTP 상태 확인을 만듭니다.

gcloud beta compute health-checks create http lb-health-check \
  --use-serving-port \
  --project=SERVICE_PROJECT_B_ID

전역 백엔드 서비스 만들기

백엔드 간에 트래픽을 분산하는 전역 백엔드 서비스 만들기 이 단계에서는 앞에서 만든 상태 점검을 백엔드 서비스에 할당하고 인스턴스 그룹을 백엔드 서비스에 백엔드로 추가해야 합니다.

콘솔

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 백엔드 섹션으로 이동합니다.

  3. 백엔드 서비스 만들기를 클릭합니다.

  4. 전역 백엔드 서비스 옆에 있는 만들기 버튼을 클릭합니다.

  5. 백엔드 서비스 이름으로 cross-ref-backend-service를 입력합니다.

  6. 백엔드 유형에서 인스턴스 그룹을 선택합니다.

  7. 프로토콜HTTP로 설정합니다.

  8. 이름이 지정된 포트 필드에 http를 입력합니다. 이 이름은 관리형 인스턴스 그룹을 만들 때 입력한 포트 이름과 동일합니다.

  9. 백엔드 서비스에 백엔드를 추가하려면 다음을 수행합니다.

    1. 백엔드 섹션에서 인스턴스 그룹을 이전 단계에서 만든 관리형 인스턴스 그룹인 lb-backend로 설정합니다.

    2. 포트 번호80을 입력합니다.

    3. 백엔드를 추가하려면 완료를 클릭합니다.

  10. 상태 점검을 추가하려면 상태 점검 목록에서 앞에서 만든 상태 점검인 lb-health-check를 선택합니다.

  11. 백엔드 서비스를 만들려면 만들기를 클릭합니다.

gcloud

  1. 전역 백엔드 서비스를 만들어 백엔드 간에 트래픽을 분산합니다.

    gcloud beta compute backend-services create cross-ref-backend-service \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=lb-health-check \
        --global \
        --project=SERVICE_PROJECT_B_ID
    
  2. 백엔드 서비스에 인스턴스 그룹을 백엔드로 추가합니다.

    gcloud beta compute backend-services add-backend cross-ref-backend-service \
        --instance-group=lb-backend \
        --instance-group-zone=us-west1-a \
        --global \
        --project=SERVICE_PROJECT_B_ID
    

부하 분산기 관리자에게 백엔드 서비스를 사용할 수 있는 권한 부여

부하 분산기가 다른 서비스 프로젝트의 백엔드 서비스를 참조하게 하려면 부하 분산기 관리자에게 compute.backendServices.use 권한이 있어야 합니다. 이 권한을 부여하려면 Compute 부하 분산기 서비스 사용자(roles/compute.loadBalancerServiceUser)라는 사전 정의된 IAM 역할을 사용하면 됩니다. 이 역할은 서비스 프로젝트 관리자가 부여해야 하며 프로젝트 수준 또는 개별 백엔드 서비스 수준에서 적용할 수 있습니다.

백엔드 서비스를 만드는 동안 백엔드 서비스 수준에서 이미 필요한 권한을 부여한 경우에는 이 단계가 필수가 아닙니다. 이 섹션을 건너뛰거나 읽기를 계속하여 이 프로젝트의 모든 백엔드 서비스에 대해 액세스 권한을 부여하는 방법을 알아볼 수 있습니다. 이렇게 하면 새 백엔드 서비스를 만들 때마다 액세스 권한을 부여할 필요가 없습니다.

이 예시에서는 서비스 프로젝트 B의 서비스 프로젝트 관리자가 다음 명령어 중 하나를 실행하여 서비스 프로젝트 A의 부하 분산기 관리자에게 compute.backendServices.use 권한을 부여해야 합니다. 프로젝트 수준(프로젝트의 모든 백엔드 서비스) 또는 백엔드 서비스별로 이 작업을 수행할 수 있습니다.

콘솔

프로젝트 수준 권한

다음 단계에 따라 프로젝트의 모든 백엔드 서비스에 대해 권한을 부여합니다.

이 단계를 완료하려면 compute.backendServices.setIamPolicyresourcemanager.projects.setIamPolicy 권한이 필요합니다.

  1. Google Cloud 콘솔에서 공유 부하 분산 서비스 페이지로 이동합니다.

    공유 부하 분산 서비스로 이동

  2. 모든 백엔드 서비스 권한(프로젝트 수준 권한) 섹션에서 프로젝트를 선택합니다.

  3. 권한 패널이 표시되지 않으면 권한 패널 표시를 클릭합니다. 프로젝트 수준 권한 패널이 오른쪽에 열립니다.

  4. 주 구성원 추가를 클릭합니다.

  5. 새 주 구성원에 대해 주 구성원의 이메일 주소 또는 기타 식별자를 입력합니다.

  6. 역할에 대해 드롭다운 목록에서 Compute 부하 분산기 서비스 사용자 역할을 선택합니다.

  7. 선택사항: 역할에 조건을 추가합니다.

  8. 저장을 클릭합니다.

개별 백엔드 서비스에 대한 리소스 수준 권한

다음 단계에 따라 프로젝트의 개별 백엔드 서비스에 대해 권한을 부여합니다.

gcloud

프로젝트 수준 권한

다음 단계에 따라 프로젝트의 모든 백엔드 서비스에 대해 권한을 부여합니다.

이 단계를 완료하려면 compute.backendServices.setIamPolicyresourcemanager.projects.setIamPolicy 권한이 필요합니다.

gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
    --member="user:LOAD_BALANCER_ADMIN" \
    --role="roles/compute.loadBalancerServiceUser"

개별 백엔드 서비스에 대한 리소스 수준 권한

백엔드 서비스 수준에서 서비스 프로젝트 관리자는 다음 명령어 중 하나를 사용하여 Compute 부하 분산기 서비스 사용자 역할(roles/compute.loadBalancerServiceUser)을 부여할 수 있습니다.

이 단계를 완료하려면 compute.backendServices.setIamPolicy 권한이 필요합니다.

gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
    --member="user:LOAD_BALANCER_ADMIN" \
    --role="roles/compute.loadBalancerServiceUser" \
    --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/us-west1/backend-services/BACKEND_SERVICE_NAME",title=Shared VPC condition'

또는

gcloud compute backend-services add-iam-policy-binding BACKEND_SERVICE_NAME \
    --member="user:LOAD_BALANCER_ADMIN" \
    --role="roles/compute.loadBalancerServiceUser" \
    --project=SERVICE_PROJECT_B_ID \
    --region=us-west1

이러한 명령어를 사용하려면 LOAD_BALANCER_ADMIN을 사용자의 주 구성원(예: test-user@gmail.com)으로 바꿉니다.

조건을 사용하고 조건 속성을 지정하면 리전 백엔드 서비스의 하위 집합에만 IAM이 적용되도록 구성할 수도 있습니다.

서비스 프로젝트 A에서 부하 분산기의 프런트엔드 구성요소 구성

이 섹션에서는 서비스 프로젝트 A에서 다음 프런트엔드 리소스를 구성해야 합니다.

  • IP 주소
  • SSL 인증서
  • URL 맵
  • 대상 프록시
  • 전달 규칙

부하 분산기의 IP 주소 예약

부하 분산기의 전달 규칙에 할당할 수 있는 전역 고정 외부 IP 주소를 예약합니다.

콘솔

  1. Google Cloud 콘솔에서 VPC IP 주소 페이지로 이동합니다.

    IP 주소로 이동

  2. 외부 고정 IP 주소 예약을 클릭합니다.

  3. 이름cross-ref-ip-address를 입력합니다.

  4. 네트워크 서비스 등급프리미엄으로 설정합니다.

  5. IP 버전IPv4로 설정합니다.

  6. 유형전역으로 설정합니다.

  7. 예약을 클릭합니다.

gcloud

전역 고정 외부 IP 주소를 만듭니다.

gcloud compute addresses create cross-ref-ip-address \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global \
    --project=SERVICE_PROJECT_A_ID

SSL 인증서 리소스 설정

HTTPS를 요청 및 응답 프로토콜로 사용하는 부하 분산기의 경우 다음 리소스의 설명에 따라 SSL 인증서 리소스를 만듭니다.

Google 관리형 인증서를 사용하는 것이 좋습니다.

이 예시에서는 이름이 lb-ssl-cert인 SSL 인증서를 만들었다고 가정합니다. SSL 인증서는 다음 단계 중 하나에서 만들 대상 프록시에 연결됩니다.

프런트엔드 구성요소 만들기

콘솔

Google Cloud 콘솔에서는 교차 프로젝트 백엔드 서비스 참조를 지원하지 않습니다. 하지만 Google Cloud CLI를 사용하면 서비스 프로젝트 A의 URL 맵에서 서비스 프로젝트 B의 백엔드 서비스를 참조할 수 있습니다.

gcloud

  1. 수신되는 요청을 백엔드 서비스로 라우팅하는 URL 맵을 만듭니다.

    gcloud beta compute url-maps create cross-ref-url-map \
        --default-service=projects/SERVICE_PROJECT_B_ID/global/backendServices/cross-ref-backend-service \
        --global \
        --project=SERVICE_PROJECT_A_ID
    
  2. 대상 프록시를 만듭니다.

    HTTP 트래픽의 경우 대상 HTTP 프록시를 만들어 요청을 URL 맵으로 라우팅합니다.

    gcloud beta compute target-http-proxies create cross-ref-http-proxy \
        --url-map=cross-ref-url-map \
        --global \
        --project=SERVICE_PROJECT_A_ID
    

    HTTPS 트래픽의 경우 대상 HTTPS 프록시를 만들어 요청을 URL 맵으로 라우팅합니다. 프록시는 HTTPS 부하 분산기의 SSL 인증서를 보유하는 부하 분산기의 일부분이므로 이 단계에서 SSL 인증서도 로드합니다.

    gcloud beta compute target-https-proxies create cross-ref-https-proxy \
        --url-map=cross-ref-url-map \
        --ssl-certificates=lb-ssl-cert
        --global \
        --project=SERVICE_PROJECT_A_ID
    
  3. 전달 규칙을 만듭니다.

    HTTP 트래픽의 경우 전역 전달 규칙을 만들어 수신 요청을 대상 프록시로 라우팅합니다.

    gcloud beta compute forwarding-rules create cross-ref-http-forwarding-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --address=cross-ref-ip-address \
        --global \
        --target-http-proxy=cross-ref-http-proxy \
        --ports=80 \
        --project=SERVICE_PROJECT_A_ID
    

    HTTPS 트래픽의 경우 전역 전달 규칙을 만들어 수신 요청을 대상 프록시로 라우팅합니다.

    gcloud beta compute forwarding-rules create cross-ref-https-forwarding-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --address=cross-ref-ip-address \
        --global \
        --target-https-proxy=cross-ref-https-proxy \
        --ports=443 \
        --project=SERVICE_PROJECT_A_ID
    

부하 분산기 테스트

부하 분산기가 구성될 때까지 몇 분 정도 걸릴 수 있습니다. 부하 분산 서비스가 실행 중이면 서비스 프로젝트 A의 전달 규칙으로 트래픽을 전송하고 서비스 프로젝트 B의 서로 다른 VM 인스턴스로 트래픽이 분산되는 모습을 확인할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 서비스 프로젝트 A부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 앞에서 만든 부하 분산기를 클릭합니다.

  3. 부하 분산기의 IP 주소를 확인합니다. 다음 단계에서 이 IP 주소를 LB_IP_ADDRESS로 참조합니다.

  4. 웹브라우저에서 https://LB_IP_ADDRESS 또는 http://LB_IP_ADDRESS로 이동하여 부하 분산기를 테스트할 수 있습니다. LB_IP_ADDRESS부하 분산기의 IP 주소로 바꾸세요.

  5. 자체 서명 인증서를 HTTPS 테스트에 사용하면 브라우저에 경고가 표시됩니다. 브라우저가 자체 서명 인증서를 수락하도록 명시적으로 지시해야 합니다.

  6. 브라우저는 페이지를 제공한 인스턴스의 이름을 표시하는 콘텐츠로 페이지를 렌더링해야 합니다(예: Page served from: lb-backend-example-xxxx). 브라우저에서 이 페이지를 렌더링하지 않는 경우 이 가이드의 구성 설정을 검토하세요.

gcloud

예약된 IP 주소를 확인합니다.

gcloud compute addresses describe IP_ADDRESS_NAME \
    --format="get(address)" \
    --global
    --project=SERVICE_PROJECT_A_ID

웹브라우저에서 https://LB_IP_ADDRESS 또는 http://LB_IP_ADDRESS로 이동하여 부하 분산기를 테스트할 수 있습니다. LB_IP_ADDRESS부하 분산기의 IP 주소로 바꾸세요.

자체 서명 인증서를 HTTPS 테스트에 사용하면 브라우저에 경고가 표시됩니다. 브라우저가 자체 서명 인증서를 수락하도록 명시적으로 지시해야 합니다.

브라우저에서 백엔드 인스턴스에 대한 최소한의 정보로 페이지를 렌더링해야 합니다. 브라우저에서 이 페이지를 렌더링하지 않는 경우 이 가이드의 구성 설정을 검토하세요.

다음 단계