이 문서에서는 부하 분산기의 프런트엔드와 URL 맵이 있는 프로젝트와 다른 프로젝트에 있는 백엔드 서비스와 백엔드 버킷을 사용하여 전역 외부 애플리케이션 부하 분산기를 만드는 방법을 보여줍니다. 이 배포 모델을 교차 프로젝트 서비스 참조라고 합니다.
이 문서에서 사용된 예시에서는 공유 VPC 환경을 사용하여 교차 프로젝트 서비스 참조를 구성하지 않습니다. 공유 VPC 환경에서 교차 프로젝트 서비스 참조를 구성하는 방법을 자세히 알아보려면 공유 VPC로 전역 외부 애플리케이션 부하 분산기 설정을 참조하세요.
시작하기 전에
설정이 다음 기본 요건을 충족하는지 확인합니다.
필요한 IAM 역할 및 권한
이 가이드를 따르려면 다음 IAM 역할이 있어야 합니다.
작업 | 필요한 역할 |
---|---|
프로젝트 만들기 | 프로젝트 생성자 역할(roles/resourcemanager.projectCreator )
|
컴퓨팅 리소스 만들기 | Compute 네트워크 관리자 역할(roles/compute.networkAdmin )
|
Cloud Storage 버킷 만들기 | 스토리지 객체 관리자 역할(roles/storage.objectAdmin )
|
다른 프로젝트의 리소스 사용 |
이 예시에서는 프로젝트 B 관리자가 프로젝트 B의 백엔드 서비스와 백엔드 버킷에 액세스할 수 있도록 프로젝트 A 관리자에게 Compute 부하 분산기 서비스 사용자 역할( 이 역할을 할당하는 방법에 대한 자세한 내용은 백엔드 서비스를 사용하도록 Compute 부하 분산기 관리자에게 권한 부여를 참조하세요. |
Google Cloud 프로젝트 만들기
이 문서의 예시에서는 안내를 두 번 수행하여 Google Cloud 프로젝트 2개를 만듭니다.
콘솔
새 프로젝트를 만들려면 다음을 수행합니다.
-
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
나머지 단계는 Google Cloud 콘솔에 표시됩니다.
- 페이지 상단의 조직 선택 드롭다운 목록에서 프로젝트를 만들려는 조직 리소스를 선택합니다. 무료 체험판 사용자인 경우에는 이 목록이 나타나지 않으므로, 이 단계를 건너뜁니다.
- 프로젝트 만들기를 클릭합니다.
- 나타나는 새 프로젝트 창에 프로젝트 이름을 입력하고 해당되는 결제 계정을 선택합니다. 프로젝트 이름은 문자, 숫자, 작은 따옴표, 하이픈, 공백 또는 느낌표만 포함할 수 있으며, 4~30자(영문 기준)여야 합니다.
- 위치 상자에 상위 조직 또는 폴더 리소스를 입력합니다. 이 리소스는 새 프로젝트의 계층적 상위 항목이 됩니다. 조직 없음 옵션을 선택할 수 있는 경우 이를 선택하여 새 리소스 자체의 최상위 수준으로 새 프로젝트를 만들 수 있습니다.
- 새 프로젝트 세부정보 입력을 마쳤으면 만들기를 클릭합니다.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
새 프로젝트를 만들려면
gcloud projects create
명령어를 사용합니다.gcloud projects create PROJECT_ID
여기서 PROJECT_ID는 만들려는 프로젝트의 ID입니다. 프로젝트 ID는 소문자로 시작해야 하고 ASCII 문자, 숫자, 하이픈만 포함해야 하며 6~30자(영문 기준) 사이여야 합니다.
설정 개요
다음 다이어그램에 표시된 대로 전역 외부 애플리케이션 부하 분산기의 프런트엔드 및 URL 맵은 부하 분산기의 백엔드 서비스 및 백엔드 버킷과 다른 프로젝트에 생성됩니다. 이 유형의 교차 프로젝트 배포는 공유 VPC 환경을 사용하지 않습니다.
이 구성에서 URL 맵은 정적 콘텐츠(/images/*
)에 대한 요청을 백엔드 버킷으로 라우팅하는 반면 다른 모든 요청은 기본 백엔드 서비스로 라우팅됩니다.
다음 표에서는 프로젝트 A와 프로젝트 B에서 생성되는 리소스를 간략히 설명합니다. 부하 분산기의 프런트엔드와 URL 맵은 프로젝트 A에 생성되고 백엔드 구성요소는 프로젝트 B에 생성됩니다.
프로젝트 A에 생성된 리소스 | 프로젝트 B에 생성된 리소스 |
---|---|
|
|
다음 섹션에서는 프로젝트 B에서 부하 분산기 백엔드 VM의 VPC 네트워크 및 서브넷 구성부터 시작하여 이전 표에 나열된 다양한 리소스를 구성합니다.
프로젝트 B에서 부하 분산기 백엔드 VM의 네트워크 및 서브넷 구성
이 예시에서는 백엔드 VM이 다음 네트워크와 서브넷에서 생성됩니다.
네트워크: 네트워크는
lb-network
커스텀 모드 VPC 네트워크입니다.부하 분산기 백엔드 VM의 서브넷.
us-west1
리전에 있는lb-backend-subnet
서브넷은 기본 IP 범위에10.1.2.0/24
를 사용합니다. 서브넷의 기본 및 보조 IPv4 주소 범위는 리전별 내부 IPv4 주소입니다. 자세한 내용은 유효한 IPv4 범위를 참조하세요.
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 만들기를 클릭합니다.
이름에
lb-network
를 입력합니다.서브넷 섹션에서 서브넷 생성 모드를 커스텀으로 설정합니다.
새 서브넷 섹션에 다음 정보를 입력합니다.
- 이름:
lb-backend-subnet
- 리전 선택:
us-west1
- IP 주소 범위:
10.1.2.0/24
- 이름:
완료를 클릭합니다.
만들기를 클릭합니다.
gcloud
gcloud compute networks create
명령어를 사용하여lb-network
라는 커스텀 VPC 네트워크를 만듭니다.gcloud compute networks create lb-network \ --subnet-mode=custom \ --project=PROJECT_B_ID
gcloud compute networks subnets create
명령어를 사용하여us-west1
리전의lb-network
VPC 네트워크에 서브넷을 만듭니다.gcloud compute networks subnets create lb-backend-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1 \ --project=PROJECT_B_ID
프로젝트 B에서 백엔드 서비스 구성
백엔드 서비스를 구성하려면 다음을 수행해야 합니다.
- 인스턴스 템플릿을 만듭니다.
- 인스턴스 그룹을 만듭니다.
- 상태 점검을 만듭니다.
- 방화벽 규칙을 만듭니다.
- 백엔드 서비스를 만듭니다.
인스턴스 템플릿 만들기
관리형 인스턴스 그룹을 만들기 전에 가상 머신(VM) 인스턴스를 만드는 데 사용할 수 있는 인스턴스 템플릿을 만듭니다. 클라이언트에서 전송된 트래픽은 인스턴스 그룹의 VM으로 부하 분산됩니다. 관리형 인스턴스 그룹은 외부 애플리케이션 부하 분산기의 백엔드 서버를 실행하는 VM을 제공합니다. 이 예시에서는 백엔드가 자체 호스트 이름을 제공합니다.
콘솔
Google Cloud 콘솔에서 Compute Engine 인스턴스 템플릿 페이지로 이동합니다.
인스턴스 템플릿 만들기를 클릭합니다.
이름에
backend-template
를 입력합니다.부팅 디스크 섹션에서 부팅 디스크가 Debian GNU/Linux 12(bookworm)와 같은 Debian 이미지로 설정되었는지 확인합니다. 필요한 경우 변경을 클릭하여 이미지를 변경합니다.
고급 옵션 섹션을 펼칩니다.
네트워킹을 펼치고 다음 필드를 구성합니다.
- 네트워크 태그에
load-balanced-backend
를 입력합니다. - 네트워크 인터페이스 섹션에서 다음 필드를 구성합니다.
- 네트워크:
lb-network
- 서브넷:
lb-backend-subnet
- IP 스택 유형: IPv4
- 네트워크:
- 완료를 클릭합니다.
- 네트워크 태그에
관리를 펼칩니다. 시작 스크립트 필드에 다음 스크립트를 입력합니다.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl # Retrieve the instance name from metadata vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" # Create an index file echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html # Restart Apache to apply changes systemctl restart apache2' \
만들기를 클릭합니다.
gcloud
인스턴스 템플릿을 만듭니다.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --region=us-west1 \ --network=projects/PROJECT_B_ID/global/networks/lb-network \ --subnet=projects/PROJECT_B_ID/regions/us-west1/subnetworks/lb-backend-subnet \ --tags=load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl # Retrieve the instance name from metadata vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" # Create an index file echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html # Restart Apache to apply changes systemctl restart apache2' \ --project=PROJECT_B_ID
관리형 인스턴스 그룹 만들기
콘솔
Google Cloud 콘솔에서 Compute Engine 인스턴스 그룹 페이지로 이동합니다.
인스턴스 그룹 만들기를 클릭합니다.
옵션에서 새 관리형 인스턴스 그룹(스테이트리스(Stateless))을 선택합니다.
인스턴스 그룹의 이름으로
lb-backend
을 입력합니다.인스턴스 템플릿 목록에서 이전 단계에서 만든
backend-template
인스턴스 템플릿을 선택합니다.위치 섹션에서 단일 영역을 선택하고 다음 값을 입력합니다.
리전에서
us-west1
을 선택합니다.영역에서
us-west1-a
를 선택합니다.
자동 확장 섹션에서 다음 값을 입력합니다.
자동 확장 모드에서 사용: 그룹에 인스턴스 추가 및 삭제를 선택합니다.
최소 인스턴스 수에
2
를 선택합니다.최대 인스턴스 수에서
3
을 선택합니다.
포트 매핑 섹션에서 포트 추가를 클릭하고 다음 값을 입력합니다.
포트 이름에
http
을 입력합니다.포트 번호에
80
을 입력합니다.
만들기를 클릭합니다.
gcloud
관리형 인스턴스 그룹을 만들고 이전 단계에서 만든 인스턴스 템플릿을 선택합니다.
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --zone=us-west1-a \ --size=2 \ --template=INSTANCE_TEMPLATE_NAME \ --project=PROJECT_B_ID
인스턴스 그룹에 이름이 지정된 포트 추가:
gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME \ --named-ports=http:80 \ --zone=us-west1-a \ --project=PROJECT_B_ID
상태 점검 만들기
상태 점검은 백엔드의 가용성을 확인하는 테스트입니다. 포트 80에서 HTTP 프로토콜과 프로브를 사용하는 상태 점검을 만듭니다. 나중에 부하 분산기에서 참조하는 백엔드 서비스에 이 상태 점검을 연결합니다.
콘솔
Google Cloud 콘솔에서 Compute Engine 상태 점검 페이지로 이동합니다.
상태 점검의 이름으로
lb-health-check
를 입력합니다.프로토콜을 HTTP로 설정합니다.
만들기를 클릭합니다.
gcloud
HTTP 상태 확인을 만듭니다.
gcloud compute health-checks create http lb-health-check \ --use-serving-port \ --project=PROJECT_B_ID
방화벽 규칙 만들기
상태 점검 프로브의 경우 네트워크 수준에서 인그레스 허용 방화벽 규칙을 만들어야 합니다. 이 예시에서는 lb-network
입니다. 이 방화벽 규칙을 사용하면 상태 점검 프로브가 백엔드 인스턴스에 도달할 수 있습니다. 이 예시에서는 다음과 같은 방화벽 규칙을 사용합니다.
fw-allow-health-check
. 부하 분산된 인스턴스에 적용되는 인그레스 규칙으로 Google Cloud상태 점검 시스템(130.211.0.0/22
및35.191.0.0/16
)의 모든 TCP 트래픽을 허용합니다. 이 예시에서는load-balanced-backend
대상 태그를 사용하여 인그레스 규칙을 적용해야 할 인스턴스를 식별합니다.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
방화벽 규칙 만들기를 클릭하여 클라이언트 VM에서 들어오는 SSH 연결을 허용하는 규칙을 만듭니다.
- 이름:
fw-allow-health-check
- 네트워크:
lb-network
- 트래픽 방향: 인그레스
- 일치 시 작업: 허용
- 대상: 지정된 대상 태그
- 대상 태그:
load-balanced-backend
- 소스 필터: IPv4 범위
- 소스 IPv4 범위:
130.211.0.0/22
및35.191.0.0/16
- 프로토콜 및 포트:
- 지정된 프로토콜 및 포트를 선택합니다.
- TCP 체크박스를 선택한 후 포트 번호에
80
을 입력합니다. 권장사항에 따라서 이 규칙을 상태 점검에 사용되는 프로토콜 및 포트와 일치하는 프로토콜 및 포트로 제한합니다. 프로토콜과 포트에 tcp:80을 사용하면 Google Cloud 가 포트 80에서 HTTP를 사용하여 VM에 연결할 수 있지만 포트 443에서 HTTPS를 사용하여 연결할 수는 없습니다.
- 이름:
만들기를 클릭합니다.
gcloud
Google Cloud 상태 확인을 허용하는
fw-allow-health-check
방화벽 규칙을 만듭니다. 이 예시에서는 상태 점검 프로버의 모든 TCP 트래픽을 허용합니다. 그러나 필요에 따라 더 좁은 포트 집합을 구성할 수 있습니다.gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --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 \ --project=PROJECT_B_ID
백엔드 서비스 만들기
백엔드 간에 트래픽을 분산하는 전역 백엔드 서비스 만들기 이 단계에서는 생성된 상태 점검을 백엔드 서비스에 할당하고 인스턴스 그룹을 백엔드 서비스에 백엔드로 추가해야 합니다.
콘솔
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
백엔드 섹션으로 이동합니다.
백엔드 서비스 만들기를 클릭합니다.
전역 백엔드 서비스 옆에 있는 만들기 버튼을 클릭합니다.
백엔드 서비스 이름으로
cross-ref-backend-service
를 입력합니다.백엔드 유형에서 인스턴스 그룹을 선택합니다.
프로토콜을 HTTP로 설정합니다.
이름이 지정된 포트 필드에
http
를 입력합니다. 이 이름은 관리형 인스턴스 그룹을 만들 때 입력한 포트 이름과 동일합니다.백엔드 서비스에 백엔드를 추가하려면 다음을 수행합니다.
백엔드 섹션에서 인스턴스 그룹을 이전 단계에서 만든 관리형 인스턴스 그룹인
lb-backend
로 설정합니다.포트 번호에
80
을 입력합니다.백엔드를 추가하려면 완료를 클릭합니다.
상태 점검을 추가하려면 상태 점검 목록에서 앞에서 만든 상태 점검인
lb-health-check
를 선택합니다.백엔드 서비스를 만들려면 만들기를 클릭합니다.
gcloud
전역 백엔드 서비스를 만들어 백엔드 간에 트래픽을 분산합니다.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --port-name=http \ --health-checks=HEALTH_CHECK_NAME \ --global \ --project=PROJECT_B_ID
백엔드 서비스에 인스턴스 그룹을 백엔드로 추가합니다.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP_NAME \ --instance-group-zone=us-west1-a \ --global \ --project=PROJECT_B_ID
프로젝트 B에서 백엔드 버킷 구성
백엔드 버킷을 만들려면 다음을 수행해야 합니다.
- Cloud Storage 버킷을 만듭니다.
- 버킷에 콘텐츠를 복사합니다.
- 버킷에 공개적으로 액세스할 수 있도록 설정합니다.
- 백엔드 버킷을 만들고 Cloud Storage 버킷을 가리키도록 합니다.
Cloud Storage 버킷 만들기
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
만들기를 클릭합니다.
버킷 이름 지정 상자에 이름 지정 가이드라인에 따라 전역적으로 고유한 이름을 입력합니다.
데이터 저장 위치 선택을 클릭합니다.
위치 유형을 리전으로 설정합니다.
리전 목록에서 us-east1을 선택합니다.
만들기를 클릭합니다.
gcloud
gcloud storage buckets create
명령어를 사용하여us-east1
리전에 버킷을 만듭니다.gcloud storage buckets create gs://BUCKET_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access \ --project=PROJECT_B_ID
BUCKET_NAME 변수를 Cloud Storage 버킷 이름으로 바꿉니다.
Cloud Storage 버킷으로 그래픽 파일 복사
Cloud Shell에서 다음 명령어를 실행하여 버킷 이름 변수를 고유한 Cloud Storage 버킷 이름으로 바꿉니다. 그러면 공개 Cloud Storage 버킷의 그래픽 파일이 자체 Cloud Storage 버킷의 images/
폴더로 복사됩니다.
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/images/
Cloud Storage 버킷을 공개적으로 읽을 수 있도록 설정
공개 인터넷에서 모든 사람이 버킷의 모든 객체를 읽을 수 있도록 하려면 allUsers
주 구성원에 스토리지 객체 뷰어 역할(roles/storage.objectViewer
)을 부여합니다.
콘솔
모든 사용자에게 버킷의 객체를 볼 수 있는 액세스 권한을 부여하려면 버킷마다 다음 절차를 반복합니다.
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 공개하려는 버킷의 이름을 클릭합니다.
페이지 상단의 권한 탭을 선택합니다.
권한 섹션에서
액세스 권한 부여 버튼을 클릭합니다. 액세스 권한 부여 대화상자가 나타납니다.새 주 구성원 필드에
allUsers
를 입력합니다.역할 선택 필드에서 필터 상자에
Storage Object Viewer
를 입력하고 필터링된 결과에서 스토리지 객체 뷰어를 선택합니다.저장을 클릭합니다.
공개 액세스 허용을 클릭합니다.
gcloud
모든 사용자에게 버킷의 객체 보기 권한을 부여하려면 buckets add-iam-policy-binding
명령어를 실행합니다.
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
버킷 이름 변수를 고유한 Cloud Storage 버킷 이름으로 바꿉니다.
백엔드 버킷 만들기
백엔드 버킷은 앞에서 만든 Cloud Storage 버킷에 대한 래퍼로 작동합니다. 들어오는 트래픽을 Cloud Storage 버킷으로 전달합니다.
콘솔
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
백엔드 섹션으로 이동합니다.
백엔드 버킷 만들기를 클릭합니다.
백엔드 버킷 이름을 입력합니다.
백엔드 버킷이 가리킬 Cloud Storage 버킷을 선택합니다.
만들기를 클릭합니다.
gcloud
프로젝트 B에서 gcloud compute backend-buckets create
명령어를 사용하여 백엔드 버킷을 만듭니다.
gcloud compute backend-buckets create BACKEND_BUCKET_NAME \ --gcs-bucket-name=BUCKET_NAME \ --project=PROJECT_B_ID
프로젝트 A에서 부하 분산기 프런트엔드 구성요소 구성
이 섹션에서는 프로젝트 A에서 다음 부하 분산기 프런트엔드 구성요소를 구성하는 방법을 보여줍니다.
- IP 주소
- SSL 인증서
- URL 맵
- 대상 프록시
- 전달 규칙
부하 분산기의 IP 주소 예약
부하 분산기 전달 규칙에 할당할 수 있는 전역 고정 외부 IP 주소를 예약합니다.
콘솔
Google Cloud 콘솔에서 VPC IP 주소 페이지로 이동합니다.
외부 고정 IP 주소 예약을 클릭합니다.
이름에
cross-ref-ip-address
를 입력합니다.네트워크 서비스 등급을 프리미엄으로 설정합니다.
IP 버전을 IPv4로 설정합니다.
유형을 전역으로 설정합니다.
예약을 클릭합니다.
gcloud
전역 고정 외부 IP 주소를 만듭니다.
gcloud compute addresses create IP_ADDRESS_NAME \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global \ --project=PROJECT_A_ID
SSL 인증서 리소스 설정
이 예시에서는 클라이언트와 부하 분산기 간의 요청 및 응답 프로토콜로 HTTP 또는 HTTPS를 사용할 수 있습니다. HTTPS 부하 분산기를 만들려면 부하 분산기의 프런트엔드에 SSL 인증서 리소스를 추가해야 합니다.
다음 문서의 설명대로 SSL 인증서 리소스를 만듭니다.
Google 관리형 인증서를 사용하는 것이 좋습니다.
인증서를 만든 후 인증서를 HTTPS 대상 프록시에 연결할 수 있습니다.
전역 외부 애플리케이션 부하 분산기 구성요소 구성
콘솔
부하 분산기 유형 선택
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
- 부하 분산기 만들기를 클릭합니다.
- 부하 분산기 유형에서 애플리케이션 부하 분산기(HTTP/HTTPS)를 선택하고 다음을 클릭합니다.
- 공개 또는 내부에서 공개(외부)를 선택하고 다음을 클릭합니다.
- 전역 또는 단일 리전 배포에서 전역 워크로드에 적합을 선택하고 다음을 클릭합니다.
- 부하 분산기 생성에서 전역 외부 애플리케이션 부하 분산기를 선택하고 다음을 클릭합니다.
- 구성을 클릭합니다.
기본 구성
- 부하 분산기 이름을 입력합니다.
- 계속하려면 페이지를 열어 두세요.
프런트엔드 구성
HTTP의 경우:
- 프런트엔드 구성을 클릭합니다.
- 전달 규칙 이름을 입력합니다.
- 프로토콜을
HTTP
로 설정합니다. - 부하 분산기 IP 주소 예약에서 만든 IP 주소를 선택합니다.
- 포트를
80
으로 설정합니다. - 완료를 클릭합니다.
HTTPS의 경우:
클라이언트와 부하 분산기 사이에 HTTPS를 사용하는 경우 프록시를 구성할 하나 이상의 SSL 인증서 리소스가 필요합니다. SSL 인증서 리소스를 만드는 방법에 대한 자세한 내용은 SSL 인증서를 참조하세요.
- 프런트엔드 구성을 클릭합니다.
- 전달 규칙 이름을 입력합니다.
- 프로토콜 필드에서
HTTPS (includes HTTP/2)
를 선택합니다. - 부하 분산기 IP 주소 예약에서 만든 IP 주소를 선택합니다.
- HTTPS 트래픽을 허용하도록 포트가
443
으로 설정되어 있는지 확인합니다. - 인증서 목록을 클릭합니다.
- 앞서 만든 SSL 인증서의 이름을 선택합니다.
- 완료를 클릭합니다.
백엔드 구성
- 백엔드 구성을 클릭합니다.
- 프로젝트 간 백엔드 서비스를 클릭합니다.
- 프로젝트 ID에 프로젝트 B의 프로젝트 ID를 입력합니다.
- 백엔드 서비스 선택 목록에서 사용하려는 프로젝트 B의 백엔드 서비스를 선택합니다.
- 확인을 클릭합니다.
라우팅 규칙 구성
라우팅 규칙을 클릭합니다.
모드에서 고급 호스트 및 경로 규칙을 선택합니다.
호스트 및 경로 규칙 추가를 선택합니다.
호스트 필드에
*
를 입력하여 모든 호스트 이름과 일치시킵니다.패치 일치자 섹션에 다음 YAML 구성을 입력합니다.
defaultService: projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME name: PATH_MATCHER_NAME pathRules: - paths: - /images/* service: projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
이 예시에서 경로 일치자는 경로 규칙과 기본 서비스로 구성됩니다. 경로 규칙은
/images/*
에 대한 모든 요청을 백엔드 버킷으로 라우팅합니다. 다른 모든 요청은 기본 백엔드 서비스로 라우팅됩니다.완료를 클릭합니다.
트래픽 관리에 대한 자세한 내용은 트래픽 관리 개요를 참조하세요.
구성 검토 및 완료
이전 단계에서 구성한 부하 분산기의 다양한 구성요소를 검토합니다. 백엔드 섹션에 백엔드 서비스와 백엔드 버킷이 모두 참조되어 있습니다.
만들기를 클릭합니다.
gcloud
gcloud CLI를 사용하여 앞에서 언급한 부하 분산 구성요소를 만들려면 다음 단계를 수행합니다.
gcloud compute url-maps create
명령어로 URL 맵을 만듭니다.gcloud compute url-maps create URL_MAP_NAME \ --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME \ --global \ --project=PROJECT_A_ID
URL 맵의 경로 일치자를 추가합니다. 이 예시에서 경로 일치자는 경로 규칙과 기본 서비스로 구성됩니다. 경로 규칙은
/images/*
에 대한 모든 요청을 백엔드 버킷으로 라우팅합니다. 다른 모든 요청은 기본 백엔드 서비스로 라우팅됩니다.gcloud compute url-maps add-path-matcher URL_MAP_NAME \ --path-matcher-name=PATH_MATCHER_NAME \ --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME \ --backend-bucket-path-rules=/images/*=projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
gcloud compute target-http-proxies create
명령어로 대상 프록시를 만듭니다.HTTP 트래픽의 경우 대상 HTTP 프록시를 만들어 요청을 URL 맵으로 라우팅합니다.
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --global \ --project=PROJECT_A_ID
HTTPS 트래픽의 경우 대상 HTTPS 프록시를 만들어 요청을 URL 맵으로 라우팅합니다. 프록시는 HTTPS 부하 분산기에 대해 SSL 인증서를 포함하는 부하 분산기의 일부입니다. 인증서를 만든 후 인증서를 HTTPS 대상 프록시에 연결할 수 있습니다.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE_NAME \ --global \ --project=PROJECT_A_ID
CERTIFICATE_NAME
을 SSL 인증서 이름으로 바꿉니다.gcloud compute forwarding-rules create
명령어로 전역 전달 규칙을 만듭니다.HTTP 트래픽의 경우 들어오는 요청을 HTTP 대상 프록시로 라우팅하는 전역 전달 규칙을 만듭니다.
gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=IP_ADDRESS_NAME \ --global \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --ports=80 \ --project=PROJECT_A_ID
HTTPS 트래픽의 경우 들어오는 요청을 HTTPS 대상 프록시로 라우팅하는 전역 전달 규칙을 만듭니다.
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --address=IP_ADDRESS_NAME \ --global \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --ports=443 \ --project=PROJECT_A_ID
부하 분산기 테스트
부하 분산기가 구성되는 데 몇 분 정도 걸릴 수 있으며 그 후에 부하 분산기에 요청을 보낼 수 있습니다. 이 예시에서는 요청이 부하 분산기 HTTP 전달 규칙으로 전송됩니다.
부하 분산기 HTTP 전달 규칙의 IP 주소를 가져옵니다.
gcloud compute forwarding-rules describe HTTP_FORWARDING_RULE_NAME \ --global
브라우저에서 http://IP_ADDRESS를 가리키면 요청은 백엔드 서비스로 라우팅되고 백엔드 인스턴스에 대한 최소한의 정보가 포함된 페이지가 반환됩니다.
하지만 브라우저에서 http://IP_ADDRESS/images/three-cats.jpg를 가리키면 /images/*
에 대한 요청이 백엔드 버킷으로 라우팅되고 그래픽 파일이 반환됩니다.