고급 트래픽 관리 (Envoy) Codelab을 사용한 외부 HTTPs LB

1. 소개

고급 트래픽 관리 (Envoy)를 사용한 외부 HTTPs LB Codelab에 오신 것을 환영합니다.

고급 트래픽 관리가 포함된 최신 버전의 HTTP(S) 외부 부하 분산기에는 기존 기본 전역 외부 HTTP(S) 부하 분산기의 모든 기능이 포함되어 있지만 고급 트래픽 관리 기능도 계속 증가하고 있습니다. 이러한 기능 중 일부는 부하 분산기에 처음 도입된 기능이며, 일부는 기존 기능에 향상된 기능을 제공합니다. 이러한 기능을 부분적으로 나열하면 다음과 같습니다.

  • 가중치가 적용된 트래픽 분할
  • 미러링 요청
  • 이상점 감지
  • 요청 재시도
  • 결함 주입
  • 추가 백엔드 세션 어피니티 옵션
  • 추가 헤더 변환 옵션
  • 교차 출처 리소스 공유(CORS)
  • 새 부하 분산 알고리즘

학습할 내용

  • 관리형 인스턴스 그룹과 연결된 VPC, 방화벽 규칙을 설정하는 방법
  • 새 부하 분산기의 고급 트래픽 관리 기능을 사용하는 방법
  • 고급 트래픽 관리 기능이 의도한 대로 작동하는지 검증하는 방법

필요한 항목

  • 기본 네트워킹 및 HTTP 지식
  • 기본 Unix/Linux 명령줄 지식

Codelab 토폴로지 및 사용 사례

dd8bd5e8e1341878.png

그림 1 - HTTP 부하 분산기 라우팅 토폴로지

이 Codelab에서는 동부, 서부, 중부에 하나씩 관리형 인스턴스 그룹 3개를 설정합니다. 전역 외부 https 부하 분산기를 만듭니다. 부하 분산기는 Envoy 기반 부하 분산기가 지원하는 고급 기능 목록의 여러 기능을 활용합니다. 배포 후에는 시뮬레이션 부하를 생성하고 설정한 구성이 적절하게 작동하는지 확인합니다.

2. 설정 및 요구사항

자습형 환경 설정

  1. Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
  • 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유해야 하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud Console은 고유한 문자열을 자동으로 생성합니다. 일반적으로 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID를 참조해야 하며(일반적으로 PROJECT_ID로 식별됨), 마음에 들지 않는 경우 임의로 다시 생성하거나 직접 지정해서 사용할 수 있는지 확인하세요. 프로젝트가 생성되면 프로젝트 ID가 '고정'됩니다.
  • 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참조하세요.
  1. 다음으로 Cloud 리소스/API를 사용하려면 Cloud Console에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼을 마친 후 비용이 결제되지 않도록 리소스를 종료하려면 Codelab의 끝에 있는 '삭제' 안내를 따르세요. Google Cloud 새 사용자에게는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.

Cloud Shell 시작

Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.

GCP 콘솔에서 오른쪽 상단 툴바의 Cloud Shell 아이콘을 클릭합니다.

55efc1aaa7a4d3ad.png

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.

7ffe5cbb04455448.png

가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉토리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 실습의 모든 작업은 브라우저만으로 수행할 수 있습니다.

시작하기 전에

Cloud Shell 내에서 프로젝트 ID가 설정되어 있는지 확인합니다.

gcloud config list project

gcloud config set 프로젝트 [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

echo $PROJECT_ID

API 사용 설정

필요한 모든 서비스 사용 설정

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3. VPC 네트워크 만들기

VPC 네트워크 만들기

Cloud Shell 사용

gcloud compute networks create httplbs --subnet-mode=auto

출력

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs].
NAME: httplbs
SUBNET_MODE: AUTO
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:

VPC 방화벽 규칙 만들기

VPC를 만들었으면 이제 방화벽 규칙을 만듭니다. 방화벽 규칙은 모든 IP가 http 트래픽에 대해 포트 80에서 테스트 애플리케이션 웹사이트의 외부 IP에 액세스하도록 허용하는 데 사용됩니다.

Cloud Shell 사용

gcloud compute firewall-rules create httplb-allow-http-rule \
--allow tcp:80 \
--network httplbs \
--source-ranges 0.0.0.0/0 \
--priority 700

출력

Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule].
Creating firewall...done.
NAME: httplb-allow-http-rule
NETWORK: httplbs
DIRECTION: INGRESS
PRIORITY: 700
ALLOW: tcp:80
DENY:
DISABLED: False

4. 관리형 인스턴스 그룹 설정

HTTP 부하 분산기에서 사용하는 백엔드 리소스의 패턴이 포함된 관리형 인스턴스 그룹을 설정해야 합니다. 먼저 각 리전에 생성할 VM의 구성을 정의하는 인스턴스 템플릿을 만듭니다. 다음으로 각 리전의 백엔드에 대해 인스턴스 템플릿을 참조하는 관리형 인스턴스 그룹을 만듭니다.

관리형 인스턴스 그룹은 범위가 영역 또는 리전일 수 있습니다. 이 실습에서는 us-east1, us-west1, us-central1에 하나씩, 총 3개의 리전 관리형 인스턴스 그룹을 만듭니다.

이 섹션에서는 인스턴스 생성 시 참조할 미리 만들어진 시작 스크립트를 확인할 수 있습니다. 이 시작 스크립트는 웹 애플리케이션을 시뮬레이션하는 데 사용할 웹 서버 기능을 설치하고 사용 설정합니다. 이 스크립트를 자유롭게 살펴보세요.

동, 서, 중앙 인스턴스 템플릿 만들기

첫 번째 단계는 us-east-1 인스턴스 템플릿을 만드는 것입니다.

Cloud Shell 사용

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

출력

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template].
NAME: us-east1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00

다음 단계는 us-west-1 인스턴스 템플릿을 만드는 것입니다.

Cloud Shell 사용

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

출력

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template].
NAME: us-west1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00

다음 단계는 us-central-1 인스턴스 템플릿을 만드는 것입니다.

Cloud Shell 사용

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-9 \
   --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://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'

출력

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template].
NAME: us-central1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00

이제 다음 gcloud 명령어를 사용해 인스턴스 템플릿이 성공적으로 생성되었는지 확인할 수 있습니다.

Cloud Shell 사용

gcloud compute instance-templates list

출력

NAME                  MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
us-central1-template   n1-standard-1         2021-11-09T09:25:37.263-08:00
us-east1-template      n1-standard-1         2021-11-09T09:24:35.275-08:00
us-west1-template      n1-standard-1         2021-11-09T09:25:08.016-08:00

동부, 서부, 중앙 관리형 인스턴스 그룹 만들기

이제 앞서 만든 인스턴스 템플릿에서 관리형 인스턴스 그룹을 만들어야 합니다.

Cloud Shell 사용

gcloud compute instance-groups managed create us-east1-mig \
--base-instance-name=us-east1-mig \
--size=1 \
--template=us-east1-template \
--zone=us-east1-b 

출력

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig].
NAME: us-east1-mig
LOCATION: us-east1-b
SCOPE: zone
BASE_INSTANCE_NAME: us-east1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-east1-template
AUTOSCALED: no

Cloud Shell 사용

gcloud compute instance-groups managed create us-west1-mig \
--base-instance-name=us-west1-mig \
--size=1 \
--template=us-west1-template \
--zone=us-west1-a  

출력

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig].
NAME: us-west1-mig
LOCATION: us-west1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-west1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-west1-template
AUTOSCALED: no

Cloud Shell 사용

gcloud compute instance-groups managed create us-central1-mig \
--base-instance-name=us-central1-mig \
--size=1 \
--template=us-central1-template \
--zone=us-central1-a 

출력

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig].
NAME: us-central1-mig
LOCATION: us-central1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-central1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-central1-template
AUTOSCALED: no

다음 gcloud 명령어를 사용하면 인스턴스 그룹이 성공적으로 생성되었는지 확인할 수 있습니다.

Cloud Shell 사용

gcloud compute instance-groups list

출력

NAME                  LOCATION      SCOPE   NETWORK         MANAGED INSTANCES
us-central1-mig       us-central1   zone    httplbs          Yes      1
us-west1-mig          us-west1      zone    httplbs          Yes      1
us-east1-mig          us-east1      zone    httplbs          Yes      1

웹 서버 기능 확인

각 인스턴스는 다음을 렌더링하는 간단한 PHP 스크립트를 사용하여 Apache 웹 서버를 실행하도록 구성됩니다.

c87ca81d3125ac61.png

웹 서버가 올바르게 작동하는지 확인하려면 Compute Engine으로 이동합니다. kube-APIserver로 전송합니다 새 인스턴스 (예: us-east1-mig-xxx)가 인스턴스 그룹 정의에 따라 생성되었는지 확인합니다.

이제 브라우저에서 웹 요청을 실행하여 웹 서버가 실행 중인지 확인합니다 (시작하는 데 1분 정도 걸릴 수 있음). Compute Engine의 VM 인스턴스 페이지에서 인스턴스 그룹이 만든 인스턴스를 선택하고 외부 (공개) IP를 클릭합니다.

또는 브라우저에서 http://<IP_Address>로 이동합니다.

5. 부하 분산기 설정

상태 점검 만들기

먼저 서비스가 제대로 작동되는지 확인하기 위해 기본 상태 점검을 만들어야 합니다. 기본 상태 점검을 만들 것입니다. 더 많은 고급 사용자 지정을 사용할 수 있습니다.

Cloud Shell 사용

gcloud compute health-checks create http http-basic-check \
    --port 80

외부 IP 주소 예약

이 단계에서는 나중에 부하 분산기에 연결할 전역적으로 사용 가능한 고정 IP 주소를 예약해야 합니다.

Cloud Shell 사용

gcloud compute addresses create lb-ipv4-2 \
    --ip-version=IPV4 \
    --global

예약된 IP 주소를 기록해 둡니다.

gcloud compute addresses describe lb-ipv4-2 \
    --format="get(address)" \
    --global

백엔드 서비스 만들기

이제 앞서 만든 각 관리형 인스턴스 그룹에 대한 백엔드 서비스를 만들어야 합니다. 하나는 동, 서, 중부에 해당합니다.

동부 관리형 인스턴스 그룹에 대한 백엔드 서비스 만들기

Cloud Shell 사용

gcloud compute backend-services create east-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

서부 관리형 인스턴스 그룹의 백엔드 서비스 만들기

Cloud Shell 사용

gcloud compute backend-services create west-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

중앙 관리형 인스턴스 그룹의 백엔드 서비스 만들기

Cloud Shell 사용

gcloud compute backend-services create central-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

백엔드 서비스에 MIG 추가

이제 각 애플리케이션 클러스터에 해당하는 백엔드 서비스를 만들었으므로 이제 앞서 만든 관리형 인스턴스 그룹을 각 백엔드 서비스에 추가해야 합니다.

백엔드 서비스에 East MIG를 추가합니다.

Cloud Shell 사용

gcloud compute backend-services add-backend east-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-east1-mig \
    --instance-group-zone=us-east1-b \
    --global

백엔드 서비스에 West MIG를 추가합니다.

Cloud Shell 사용

gcloud compute backend-services add-backend west-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-west1-mig \
    --instance-group-zone=us-west1-a \
    --global

백엔드 서비스에 중앙 MIG를 추가합니다.

Cloud Shell 사용

gcloud compute backend-services add-backend central-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-central1-mig \
    --instance-group-zone=us-central1-a \
    --global

URL 맵 만들기

URL 맵에는 이 실습의 고급 트래픽 관리 기능이 포함됩니다. 구성을 포함할 .yaml 파일을 만들어야 합니다. .yaml 파일 내에서 /roundrobbin에 일치하는 프리픽스를 생성했으므로 /roundrobbin과 일치하는 트래픽만 이러한 구성의 영향을 받습니다. 트래픽의 50% 는 east-backend-service로, 트래픽의 50% 는 west-backend-service로 가도록 지정했습니다. 응답 헤더 값({test})이 추가되었으며 모든 응답에 표시됩니다. 마지막으로 모든 트래픽을 중앙 백엔드 서비스에 미러링해야 한다고 추가했습니다. 트래픽이 복제되어 테스트 목적으로만 여기로 전송됩니다.

예시를 머신에 .yaml 파일로 저장합니다.

defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
kind: compute #urlMap
name: web-map-http
hostRules:
- hosts:
  - '*'
  pathMatcher: matcher1
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
  name: matcher1
  routeRules:
  - matchRules:
    - prefixMatch: /roundrobbin
    priority: 2
    headerAction:
        responseHeadersToAdd:
          - headerName: test
            headerValue: value
            replace: True
    routeAction:
        weightedBackendServices:
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
          weight: 50
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service
          weight: 50
        retryPolicy:
            retryConditions: ['502', '504']
            numRetries: 3
            perTryTimeout:
                seconds: 1
                nanos: 50
        requestMirrorPolicy:
          backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service

컴퓨터에서 문서를 가져오는 URL 맵을 만듭니다. 소스 경로는 .yaml 파일을 저장하는 위치에 따라 다릅니다.

Cloud Shell 사용

gcloud compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

HTTP 프런트엔드 만들기

부하 분산기를 만드는 마지막 단계는 프런트엔드를 만드는 것입니다. 이렇게 하면 이전에 예약한 IP 주소가 생성된 부하 분산기 URL 맵에 매핑됩니다.

Cloud Shell 사용

gcloud compute target-http-proxies create http-lb-proxy-adv \
    --url-map=web-map-http

다음으로 이전에 예약된 IP 주소를 HTTP 프록시에 매핑하는 전역 전달 규칙을 만들어야 합니다.

Cloud Shell 사용

gcloud compute forwarding-rules create http-content-rule \
    --load-balancing-scheme EXTERNAL_MANAGED \
    --address=lb-ipv4-2 \
    --global \
    --target-http-proxy=http-lb-proxy-adv \
    --ports=80

6. 고급 트래픽 기능이 작동하는지 확인

구현된 트래픽 분할 기능이 작동하는지 확인하려면 약간의 부하를 생성해야 합니다. 이를 위해 부하를 시뮬레이션할 새 VM을 만듭니다.

SSH 방화벽 허용 규칙 만들기

트래픽을 생성할 VM에 SSH로 연결하려면 먼저 VM에 대한 SSH 트래픽을 허용하는 방화벽 규칙을 만들어야 합니다.

Cloud Shell 사용

gcloud compute firewall-rules create fw-allow-ssh \
    --network=httplbs \
    --action=allow \
    --direction=ingress \
    --target-tags=allow-ssh \
    --rules=tcp:22

출력

NAME          NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
fw-allow-ssh  httplbs  INGRESS    1000      tcp:22        False

Siege-vm 만들기

이제 부하를 생성하는 데 사용할 siege-vm을 만듭니다.

Cloud Shell 사용

gcloud compute instances create siege-vm \
    --network=httplbs \
    --zone=us-east4-c \
    --machine-type=e2-medium \
    --tags=allow-ssh,http-server \
    --metadata=startup-script='sudo apt-get -y install siege'

출력

NAME     ZONE        MACHINE_TYPE INTERNAL_IP  EXTERNAL_IP    STATUS
siege-vm us-east4-c  e2-medium    10.150.0.3   34.85.218.119  RUNNING

이제 만든 VM에 SSH로 연결할 수 있습니다. 생성되면 SSH를 클릭하여 터미널을 실행하고 연결합니다.

연결되면 다음 명령어를 실행하여 부하를 생성합니다. 외부 http 부하 분산기에 이전에 예약한 IP 주소를 사용합니다.

Cloud Shell 사용

siege -c 250 http://$lb-ipv4-2/roundrobbin

출력

New configuration template added to /home/cloudcurriculumdeveloper/.siege
Run siege -C to view the current settings in that file
[alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory
** SIEGE 4.0.2
** Preparing 250 concurrent users for battle.
The server is now under siege...

부하 분산 확인

이제 Siege를 실행했으므로 트래픽이 동부 관리형 인스턴스 그룹과 서부 관리형 인스턴스 그룹에 균등하게 분산되고 있는지 확인할 차례입니다. 또한 트래픽 미러링이 작동하고 트래픽이 중앙 관리형 인스턴스 그룹으로 전송되고 있는지 확인할 수 있습니다.

Cloud 콘솔의 탐색 메뉴에서 네트워크 서비스 > 부하 분산. 부하 분산기 web-map-http를 선택합니다. 모니터링 탭으로 이동하면 아래 차트를 볼 수 있습니다.

f4d6803db44be253.png

이 MIG에 대한 트래픽 분할을 실시간으로 확인할 수 있습니다. 50/50 라운드 로빈 분할을 구성했으므로 트래픽이 고르게 분할됩니다.

만든 트래픽 미러링 정책이 작동하는지 확인하려면 중앙 백엔드 서비스 관리형 인스턴스 그룹의 사용률을 확인해야 합니다. 이렇게 하려면 Compute, Compute Engine, 인스턴스 그룹으로 이동하여 us-central1-mig를 선택합니다. 다음으로 모니터링 탭으로 이동합니다.

cf25e44d511529e7.png

트래픽이 이 관리형 인스턴스 그룹에 미러링되었음을 보여주는 차트가 채워집니다.

Siege를 중지합니다.

고급 트래픽 분할이 작동하고 있는 것을 확인했으므로 이제 포위를 중단할 차례입니다. 이를 위해 siege-vm의 SSH 터미널로 돌아가고 Ctrl+C를 눌러 siege 실행을 중지합니다.

전송되는 응답 헤더 확인

정리하기 전에 http 부하 분산기에서 적절한 응답 헤더를 전송하고 있는지 빠르게 확인할 수 있습니다. 콘텐츠 값과 함께 헤더 테스트를 전송하도록 구성했습니다. Cloud Shell에서 curl 명령어를 실행하면 예상한 응답이 표시됩니다.

Cloud Shell 사용

curl -svo /dev/null http://lb-ipv4-2/roundrobbin

출력

*   Trying lb-ipv4-2..
* TCP_NODELAY set
* Connected to  lb-ipv4-2 ( lb-ipv4-2) port 80 (#0)
> GET /roundrobbin HTTP/1.1
> Host:  lb-ipv4-2
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 10 Nov 2021 17:05:27 GMT
< server: envoy
< Content-Length: 273
< content-type: text/html; charset=iso-8859-1
< via: 1.1 google
< test: value
<
{ [273 bytes data]
* Connection #0 to host 34.149.2.26 left intact
* Closing connection 0

7. 실습 정리

실습 환경이 끝났으므로 이제 해체할 차례입니다. 다음 명령어를 실행하여 테스트 환경을 삭제하세요.

Cloud Shell 사용

gcloud compute instances delete siege-vm --zone=us-east4-c

gcloud compute forwarding-rules delete http-content-rule --global
gcloud compute target-http-proxies delete http-lb-proxy-adv
gcloud compute url-maps delete web-map-http
gcloud compute backend-services delete east-backend-service --global
gcloud compute backend-services delete west-backend-service --global
gcloud compute backend-services delete central-backend-service --global

gcloud compute addresses delete lb-ipv4-2 --global
gcloud compute health-checks delete http-basic-check 

gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b
gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a
gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a

gcloud compute instance-templates delete "us-east1-template" 
gcloud compute instance-templates delete "us-west1-template" 
gcloud compute instance-templates delete "us-central1-template" 

gcloud compute firewall-rules delete httplb-allow-http-rule
gcloud compute firewall-rules delete fw-allow-ssh

gcloud compute networks delete httplbs 

8. 축하합니다.

고급 트래픽 관리 (Envoy)를 사용한 외부 HTTPs LB Codelab을 완료했습니다.

학습한 내용

  • 관리형 인스턴스 그룹과 연결된 VPC, 방화벽 규칙을 설정하는 방법
  • 새 부하 분산기의 고급 트래픽 관리 기능을 사용하는 방법
  • 고급 트래픽 관리 기능이 의도한 대로 작동하는지 검증하는 방법

다음 단계

  • URL 재작성, CORS 헤더 추가 등 기타 고급 라우팅 기능을 사용해 보세요 ( 링크).