이 페이지에서는 고급 사용 사례를 위해 애플리케이션 부하 분산기로 서비스 확장 프로그램을 구성하는 방법을 설명합니다.
동적 전달
동적 전달을 사용하면 수천 또는 수백만 개의 테넌트를 개별 가상 머신 (VM) 인스턴스 또는 VM 집합에 바인딩할 수 있습니다. 서비스 확장 프로그램을 사용하여 URL 맵을 업데이트하지 않고도 개별 테넌트가 매핑되는 VM을 프로그래매틱 방식으로 확인할 수 있습니다. 이를 통해 기존 URL 맵의 제한사항을 훨씬 뛰어넘는 규모로 확장할 수 있습니다.
리전 외부 애플리케이션 부하 분산기, 리전 내부 애플리케이션 부하 분산기, 리전 간 내부 애플리케이션 부하 분산기에서 트래픽 및 경로 콜아웃을 사용하여 동적 전달을 구성할 수 있습니다.
이 섹션에서는 두 VM 간에 트래픽을 무작위로 라우팅하도록 트래픽 확장 프로그램을 구성하는 예를 안내합니다. 제공된 샘플 값을 사용합니다.
us-west1리전에서lb-network라는 네트워크를 구성하고,backend-subnet라는 서브넷을 구성하고, 프록시 전용 서브넷을 구성합니다.us-west1에서 VM 두 개를 구성하여 동적으로 라우팅 가능한 엔드포인트를 나타냅니다.IP 주소를 각각
10.1.2.1및10.1.2.2로 지정합니다. 두 VM이 모두load-balanced-backend태그와 연결되어 있는지 확인합니다.프록시 서브넷에서 네트워크의 VM으로 트래픽을 허용하는 방화벽 규칙
fw-allow-proxies를 구성합니다.gcloud compute firewall-rules create fw-allow-proxies \ --network=df-network \ --action=allow \ --direction=ingress \ --source-ranges=source-range \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080동적 전달 및 로깅이 사용 설정된 백엔드 서비스(
l7-ilb-backend-service)를 만듭니다.gcloud beta compute backend-services create l7-ilb-backend-service \ --ip-port-dynamic-forwarding \ --enable-logging \ --region=us-west1백엔드 서비스의 URL 맵(
l7-ilb-map)을 만듭니다.gcloud compute url-maps create l7-ilb-map \ --default-service=l7-ilb-backend-service \ --region=us-west1대상 프록시 만들기,
l7-ilb-proxygcloud compute target-http-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --url-map-region=us-west1 \ --region=us-west1전달 규칙을 만들고 애플리케이션 부하 분산기의 IP 주소를 예약합니다.
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --subnet-region=us-west1 \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-proxy \ --target-http-proxy-region=us-west1트래픽 확장 프로그램의 콜아웃 백엔드 서비스를 설정합니다.
확장 프로그램 서버의 경우 Service Extensions GitHub 저장소의 동적 전달 예시를 사용하세요.
다음 콘텐츠를 사용하여 YAML 파일
dynamic-ext.yaml을 만듭니다.name: traffic-ext forwardingRules: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule loadBalancingScheme: INTERNAL_MANAGED extensionChains: - name: "chain1" matchCondition: celExpression: 'request.host == "example.com"' extensions: - name: 'ext11' authority: ext11.com allowedDynamicForwarding: true service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-callout-service failOpen: false timeout: 0.1s supportedEvents: - REQUEST_HEADERSPROJECT_ID를 프로젝트 ID로 바꿉니다.트래픽 확장 프로그램을 전달 규칙으로 가져옵니다.
gcloud service-extensions lb-traffic-extensions import traffic-ext \ --source=dynamic-ext.yaml \ --region=us-west1
확장 프로그램이 구성되면 트래픽은 확장 프로그램 서버 구현에 따라 라우팅됩니다.
다음 단계
- 확장 프로그램 관리하기
- 호출용 서비스 확장 프로그램 GitHub 저장소에서
ext-proc서버의 Python 및 Go 샘플을 확인하세요.