Service Extensions를 사용하면 지원되는 애플리케이션 부하 분산기가 데이터 처리 경로에서 사용자 관리 콜아웃 백엔드 서비스로 콜아웃을 보낼 수 있습니다. 이를 통해 애플리케이션 부하 분산기가 처리 경로에서 맞춤 로직을 사용할 수 있습니다. 이 페이지에서는 사용자 관리 콜아웃 백엔드 서비스를 구성하는 방법을 설명합니다.
애플리케이션 부하 분산기 확장 프로그램에 대한 개요는 Cloud Load Balancing 확장 프로그램 개요를 참고하세요.
시작하기 전에
프로젝트 소유자 또는 편집자 역할이 있거나 다음 Compute Engine IAM 역할이 있는지 확인합니다.
- 인스턴스를 만들려면
compute.instanceAdmin.v1을 사용하세요. - Cloud Load Balancing 구성요소를 만들려면 다음을 실행하세요.
compute.networkAdmin
- 인스턴스를 만들려면
Compute Engine API 및 Network Services API를 사용 설정합니다.
콘솔
Google Cloud 콘솔에서 API 액세스 사용 설정 페이지로 이동합니다.
안내를 따릅니다.
gcloud
gcloud services enable명령어를 사용합니다.gcloud services enable compute.googleapis.com networkservices.googleapis.com
확장 프로그램을 지원하는 애플리케이션 부하 분산기를 만들고 구성합니다. 이 예에서는 VM 인스턴스 그룹 백엔드로 리전 내부 애플리케이션 부하 분산기를 설정합니다. 언급된 샘플 값을 사용합니다.
경로 확장 프로그램에만 해당합니다. 추가 백엔드 서비스를 설정하고 지정된 조건과 일치하는 HTTP 호스트가 있는 모든 트래픽에 대해 이 백엔드 서비스로 트래픽을 라우팅하는 호스트 일치자를 추가하도록 URL 맵을 업데이트합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
다음 샘플 값을 지정합니다.
- 이름:
l7-ilb-backend2-vm - 태그:
allow-ssh및load-balanced-backend - 영역:
us-west1-a - 네트워크:
lb-network - 서브네트워크:
backend-subnet - 이미지:
debian-11 - 가족:
debian-cloud 고급 옵션 > 관리 > 자동화:
'#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'
- 이름:
-
다음 샘플 값을 지정합니다.
- 이름:
l7-ilb-backend-service2-ig - 영역:
us-west1-a
- 이름:
-
VM 인스턴스의 경우
l7-ilb-backend2-vm를 지정합니다. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
백엔드 서비스를 만들고 백엔드를 추가하여 부하 분산기를 업데이트합니다.
백엔드 서비스의 경우 다음 샘플 값을 지정합니다.
- 이름:
l7-ilb-backend-service2 - 프로토콜:
HTTP - 상태 확인 > 이름:
l7-ilb-basic-check - 상태 점검 > 지역:
us-west1
백엔드의 경우 다음 샘플 값을 지정합니다.
- 인스턴스 그룹:
l7-ilb-backend-service2-ig - 균형 조정 모드:
Utilization
- 이름:
-
다음 샘플 값을 지정합니다.
- 이름:
l7-ilb-map - 호스트:
service-extensions.com - 경로:
callouts - 프로토콜:
HTTP - 백엔드:
l7-ilb-backend-service2
- 이름:
gcloud
VM 인스턴스 만듭니다. 다음 샘플 값과 함께
gcloud compute instances create명령어를 사용합니다.gcloud compute instances create l7-ilb-backend2-vm \ --zone=us-west1-a \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'비관리형 인스턴스 그룹을 만듭니다. 다음 샘플 값과 함께
gcloud compute instance-groups unmanaged create명령어를 사용합니다.gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \ --zone us-west1-a
새 VM을 인스턴스 그룹에 추가합니다. 다음 샘플 값과 함께
gcloud compute instance-groups unmanaged add-instances명령어를 사용합니다.gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \ --zone=us-west1-a \ --instances=l7-ilb-backend2-vm
백엔드 서비스를 만듭니다. 다음 샘플 값과 함께
gcloud compute backend-services create명령어를 사용합니다.gcloud compute backend-services create l7-ilb-backend-service2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
백엔드 서비스에 백엔드를 추가합니다. 다음 샘플 값과 함께
gcloud compute backend-services add-backend명령어를 사용합니다.gcloud compute backend-services add-backend l7-ilb-backend-service2 \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-service2-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
백엔드 서비스의 URL 맵에 호스트 일치자를 추가합니다. 다음 샘플 값과 함께
gcloud compute url-maps add-path-matcher명령어를 사용합니다.gcloud compute url-maps add-path-matcher l7-ilb-map \ --path-matcher-name=callouts \ --default-service=l7-ilb-backend-service2 \ --new-hosts=service-extensions.com \ --region=us-west1
콜아웃 백엔드 서비스 설정
이 예시에서는 Envoy의 ext_proc gRPC API를 구현하는 기본 Python 기반 확장 프로그램 서버를 사용할 수 있습니다. 이 서버가 포함된 Docker 컨테이너는 us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main에 있으며 Google Cloud의 Service Extensions GitHub 저장소에 있습니다. 이 저장소에는 헤더 변이 및 본문 변이와 같은 작업을 실행하는 ext_proc 서버의 다른 Python 및 Go 샘플이 포함되어 있습니다.
콜아웃 백엔드 서비스를 만들고 설정하려면 다음 단계를 따르세요.
샘플 Python 확장 프로그램 서버를 실행하는 콜아웃 백엔드 서비스의 가상 머신 (VM) 인스턴스를 만듭니다.
콘솔
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
다음 샘플 값을 지정합니다.
- 이름:
callouts-vm - 영역:
us-west1-a - 네트워크:
lb-network - 서브네트워크:
backend-subnet - 태그:
allow-ssh및load-balanced-backend - 컨테이너 이미지:
us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
- 이름:
gcloud
컨테이너 이미지를 사용하여 인스턴스를 만듭니다. 다음 샘플 값과 함께
gcloud compute instances create-with-container명령어를 사용합니다.gcloud compute instances create-with-container callouts-vm \ --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \ --network=lb-network \ --subnet=backend-subnet \ --zone=us-west1-a \ --tags=allow-ssh,load-balanced-backend
VM을 비관리형 인스턴스 그룹에 추가합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.
다음 샘플 값을 지정합니다.
- 이름:
callouts-ig - 영역:
us-west1-a
- 이름:
-
포트 매핑에
http:80및grpc:443포트 이름과 값을 지정합니다. -
VM 인스턴스의 경우
callouts-vm를 지정합니다.
gcloud
비관리형 인스턴스 그룹을 만듭니다. 다음 샘플 값과 함께
gcloud compute instance-groups unmanaged create명령어를 사용합니다.gcloud compute instance-groups unmanaged create callouts-ig \ --zone=us-west1-a
인스턴스 그룹의 포트를 설정합니다. 다음 샘플 값과 함께
gcloud compute instance-groups unmanaged set-named-ports명령어를 사용합니다.gcloud compute instance-groups unmanaged set-named-ports callouts-ig \ --named-ports=http:80,grpc:443 \ --zone=us-west1-a
새 VM 인스턴스를 비관리형 인스턴스 그룹에 추가합니다.
gcloud compute instance-groups unmanaged add-instances명령어를 다음 샘플 값과 함께 사용합니다.gcloud compute instance-groups unmanaged add-instances callouts-ig \ --zone=us-west1-a \ --instances=callouts-vm
콜아웃 백엔드 서비스를 만들고 백엔드를 추가합니다. 다른 백엔드 서버와 마찬가지로 콜아웃 서버에는 프록시 트래픽을 허용하는 방화벽 규칙이 필요할 수 있습니다.
콘솔
HTTP/2 프로토콜을 사용하고 HTTP 상태 점검이 있는 콜아웃 백엔드 서비스를 만듭니다.
Google Cloud 콘솔에서 Cloud 부하 분산 백엔드 페이지로 이동합니다.
다음 샘플 값을 사용하여 리전 백엔드 서비스를 추가합니다.
- 이름:
l7-ilb-callout-service - 리전:
us-west1 - 부하 분산기 유형:
Regional external Application Load Balancer (EXTERNAL_MANAGED) - 프로토콜:
HTTP2 - 포트 이름:
grpc - 상태 확인 > 이름:
callouts-hc - 상태 점검 > 포트 번호:
80 - Cloud Armor 백엔드 보안 정책:
None
- 이름:
확장 프로그램 서버가 있는 인스턴스 그룹을 백엔드 서비스의 백엔드로 추가합니다. 인스턴스 그룹은
ext_proc서비스를 실행합니다.다음 샘플 값을 지정합니다.
- 인스턴스 그룹:
callouts-ig - 균형 조정 모드:
Utilization
- 인스턴스 그룹:
gcloud
인스턴스에 대한 기본 HTTP 상태 점검을 만듭니다. 다음 샘플 값과 함께
gcloud compute health-checks create http명령어를 사용합니다.gcloud compute health-checks create http callouts-hc \ --region=us-west1 \ --port=80
HTTP/2 프로토콜을 사용하는 콜아웃 백엔드 서비스를 만듭니다.
gcloud compute backend-services create명령어를 사용합니다.gcloud compute backend-services create l7-ilb-callout-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP2 \ --port-name=grpc \ --health-checks=callouts-hc \ --health-checks-region=us-west1 \ --region=us-west1
확장 프로그램 서버가 있는 인스턴스 그룹을 백엔드 서비스의 백엔드로 추가합니다. 인스턴스 그룹은
ext_proc서비스를 실행합니다.gcloud compute backend-services add-backend명령어를 다음 샘플 값과 함께 사용합니다.gcloud compute backend-services add-backend l7-ilb-callout-service \ --balancing-mode=UTILIZATION \ --instance-group=callouts-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
백엔드 서비스를 설정한 후 경로, 승인, 트래픽 확장 프로그램을 구성할 수 있습니다.