Zewnętrzny system równoważenia obciążenia HTTPs z zaawansowanymi funkcjami zarządzania ruchem (Envoy) z programowania

1. Wprowadzenie

Witamy w samouczku dotyczącym zewnętrznego systemu równoważenia obciążenia HTTP(S) z zaawansowanym zarządzaniem ruchem (Envoy)!

Najnowsza wersja zewnętrznego systemu równoważenia obciążenia HTTP(S) z zaawansowanym zarządzaniem ruchem zawiera wszystkie funkcje naszego obecnego klasycznego globalnego zewnętrznego systemu równoważenia obciążenia HTTP(S), ale z coraz większą listą funkcji zaawansowanego zarządzania ruchem. Niektóre z tych funkcji są nowe w naszych systemach równoważenia obciążenia, a inne zapewniają ulepszone funkcje w stosunku do dotychczasowych. Oto częściowa lista tych możliwości:

  • Ważone dzielenie ruchu
  • Żądanie powielenia
  • Wykrywanie wyników odstających
  • Ponowne próby przesłania żądania
  • Wstrzykiwanie błędów
  • Dodatkowe opcje koligacji sesji backendu
  • Dodatkowe opcje transformacji nagłówka
  • Współdzielenie zasobów pomiędzy serwerami z różnych domen (CORS)
  • Nowe algorytmy równoważenia obciążenia

Czego się nauczysz

  • Jak skonfigurować zarządzaną grupę instancji oraz powiązane z nią reguły zapory sieciowej VPC
  • Jak korzystać z zaawansowanych funkcji zarządzania ruchem w nowym systemie równoważenia obciążenia
  • Jak sprawdzić, czy zaawansowane funkcje zarządzania ruchem działają zgodnie z oczekiwaniami.

Czego potrzebujesz

  • Podstawowa wiedza o sieciach i protokole HTTP
  • Podstawowa znajomość wiersza poleceń w systemach Unix i Linux

Topologia i przypadek użycia ćwiczeń z programowania

dd8bd5e8e1341878.png

Rysunek 1. Topologia routingu systemu równoważenia obciążenia HTTP

W tym module utworzysz 3 zarządzane grupy instancji: wschodnią, zachodnią i centralną. Utworzysz globalny zewnętrzny system równoważenia obciążenia HTTPS. System równoważenia obciążenia będzie korzystać z kilku funkcji z listy zaawansowanych możliwości, które obsługuje system równoważenia obciążenia oparty na Envoyu. Po wdrożeniu wygeneruj symulowane obciążenie i sprawdź, czy skonfigurowane ustawienia działają prawidłowo.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail lub Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa dla uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

55efc1aaa7a4d3ad.png

Udostępnienie środowiska i połączenie się z nim może zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.

Zanim zaczniesz

W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany.

gcloud config list project

gcloud config set project [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

echo $PROJECT_ID

włączyć interfejsy API,

Włącz wszystkie niezbędne usługi

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

3. Tworzenie sieci VPC

Utwórz sieć VPC

Z Cloud Shell

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

Wyniki

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:

Tworzenie reguł zapory sieciowej VPC

Po utworzeniu sieci VPC możesz utworzyć reguły zapory sieciowej. Reguła zapory sieciowej będzie używana do zezwalania wszystkim adresom IP na dostęp do zewnętrznego adresu IP witryny aplikacji testowej na porcie 80 w przypadku ruchu HTTP.

Z 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

Wyniki

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. Konfigurowanie zarządzanych grup instancji

Musisz skonfigurować zarządzane grupy instancji, które zawierają wzorce zasobów backendu używanych przez system równoważenia obciążenia HTTP. Najpierw utworzymy szablony instancji, które określają konfigurację maszyn wirtualnych do utworzenia w każdym regionie. Następnie dla każdego regionu utworzymy zarządzaną grupę instancji, która odwołuje się do szablonu instancji.

Zarządzane grupy instancji mogą mieć zasięg strefowy lub regionalny. W tym ćwiczeniu utworzymy 3 regionalne zarządzane grupy instancji: 1 w regionie us-east1, 1 w regionie us-west1 i 1 w regionie us-central1.

W tej sekcji możesz zobaczyć wstępnie utworzony skrypt startowy, do którego będzie się odwoływać instancja podczas tworzenia. Ten skrypt uruchamiania instaluje i włącza funkcje serwera WWW, których użyjemy do symulowania aplikacji internetowej. Możesz przyjrzeć się temu skryptowi.

Tworzenie szablonów instancji East, West i Central

Pierwszym krokiem jest utworzenie szablonu instancji us-east-1.

Z Cloud Shell

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --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
     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'

Wyniki

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

Następnym krokiem jest utworzenie szablonu instancji us-west-1.

Z Cloud Shell

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --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
     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'

Wyniki

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

Następnym krokiem jest utworzenie szablonu instancji us-central-1.

Z Cloud Shell

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --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
     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'

Wyniki

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

Możesz teraz sprawdzić, czy szablony instancji zostały utworzone, za pomocą tego polecenia gcloud:

Z Cloud Shell

gcloud compute instance-templates list

Wyniki

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

Tworzenie zarządzanych grup instancji Wschód, Zachód i Centrum

Teraz musimy utworzyć zarządzaną grupę instancji na podstawie utworzonych wcześniej szablonów instancji.

Z 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 

Wyniki

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

Z 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  

Wyniki

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

Z 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 

Wyniki

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

Możemy sprawdzić, czy grupy instancji zostały utworzone, za pomocą tego polecenia gcloud:

Z Cloud Shell

gcloud compute instance-groups list

Wyniki

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

Sprawdzanie działania serwera WWW

Każda instancja jest skonfigurowana do uruchamiania serwera WWW Apache z prostym skryptem PHP, który renderuje:

c87ca81d3125ac61.png

Aby sprawdzić, czy serwery WWW działają prawidłowo, otwórz Compute Engine –> Instancje maszyn wirtualnych. Sprawdź, czy nowe instancje (np. us-east1-mig-xxx) zostały utworzone zgodnie z definicjami grup instancji.

Teraz wyślij żądanie internetowe w przeglądarce, aby sprawdzić, czy serwer WWW działa (uruchomienie może potrwać minutę). Na stronie Instancje maszyn wirtualnych w sekcji Compute Engine wybierz instancję utworzoną przez grupę instancji i kliknij jej zewnętrzny (publiczny) adres IP.

Możesz też otworzyć w przeglądarce stronę http://<IP_Address>.

5. Konfigurowanie systemu równoważenia obciążenia

Utwórz kontrolę stanu

Najpierw musimy utworzyć podstawową kontrolę stanu, aby mieć pewność, że nasze usługi działają prawidłowo. Utworzymy podstawową kontrolę stanu, ale dostępnych jest wiele bardziej zaawansowanych opcji dostosowywania.

Z Cloud Shell

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

Rezerwowanie zewnętrznego adresu IP

W tym kroku musisz zarezerwować globalnie dostępny statyczny adres IP, który zostanie później dołączony do systemu równoważenia obciążenia.

Z Cloud Shell

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

Zanotuj zarezerwowany adres IP.

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

Tworzenie usług backendu

Teraz musimy utworzyć usługę backendu dla każdej z utworzonych wcześniej zarządzanych grup instancji. Po jednym dla regionów wschodniego, zachodniego i centralnego.

Tworzenie usługi backendu dla zarządzanej grupy instancji w regionie East.

Z 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

Tworzenie usługi backendu dla zarządzanej grupy instancji West.

Z 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

Tworzenie usługi backendu dla centralnej zarządzanej grupy instancji.

Z 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

Dodawanie zarządzanych grup instancji do usług backendu

Po utworzeniu odpowiednich usług backendu dla każdego klastra aplikacji musimy teraz dodać do każdej usługi backendu utworzone wcześniej zarządzane grupy instancji.

Dodaj grupę MIG w regionie wschodnim do usługi backendu.

Z 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

Dodaj grupę MIG w regionie zachodnim do usługi backendu.

Z 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

Dodaj centralną grupę MIG do usługi backendu.

Z 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

Tworzenie mapy URL

Mapa adresów URL to miejsce, w którym będą dostępne zaawansowane funkcje zarządzania ruchem w tym laboratorium. Musimy utworzyć plik .yaml, który będzie zawierał konfigurację. W pliku .yaml utworzyliśmy dopasowanie prefiksu do /roundrobbin, więc te konfiguracje będą miały wpływ tylko na ruch pasujący do /roundrobbin. Określiliśmy, że 50% ruchu ma być kierowane do usługi east-backend-service, a 50% – do usługi west-backend-service. Dodaliśmy też wartość nagłówka odpowiedzi:{test}, która będzie obecna we wszystkich odpowiedziach. Dodaliśmy też informację, że cały ruch powinien być dublowany do usługi central-backend-service. Ruch jest duplikowany i wysyłany tutaj tylko w celach testowych.

Zapisz przykład jako plik YAML na komputerze.

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

Utwórz mapę URL, importując dokument z komputera. Pamiętaj, że ścieżka źródłowa będzie się różnić w zależności od tego, gdzie zapiszesz plik .yaml.

Z Cloud Shell

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

Utwórz frontend HTTP

Ostatnim krokiem tworzenia systemu równoważenia obciążenia jest utworzenie frontendu. Spowoduje to przypisanie zarezerwowanego wcześniej adresu IP do utworzonej mapy URL systemu równoważenia obciążenia.

Z Cloud Shell

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

Następnie musisz utworzyć globalną regułę przekierowania, która zmapuje zarezerwowany wcześniej adres IP na serwer proxy HTTP.

Z 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. Sprawdzanie działania zaawansowanych funkcji dotyczących ruchu

Aby sprawdzić, czy zaimplementowana funkcja podziału ruchu działa, musisz wygenerować pewne obciążenie. Aby to zrobić, utworzymy nową maszynę wirtualną, która będzie symulować obciążenie.

Tworzenie reguły zapory sieciowej zezwalającej na SSH

Aby połączyć się przez SSH z maszyną wirtualną, z której będziemy generować ruch, musisz najpierw utworzyć regułę zapory sieciowej, która zezwoli na ruch SSH do tej maszyny.

Z Cloud Shell

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

Wyniki

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

Tworzenie instancji Siege-vm

Teraz utworzysz maszynę wirtualną siege-vm, której użyjesz do generowania obciążenia.

Z 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'

Wyniki

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

Następnie możesz połączyć się przez SSH z utworzoną maszyną wirtualną. Po utworzeniu instancji kliknij SSH, aby uruchomić terminal i nawiązać połączenie.

Po połączeniu uruchom to polecenie, aby wygenerować obciążenie. Użyj adresu IP zarezerwowanego wcześniej dla zewnętrznego systemu równoważenia obciążenia HTTP.

Z Cloud Shell

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

Wyniki

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...

Sprawdzanie rozkładu obciążenia

Po uruchomieniu narzędzia Siege sprawdź, czy ruch jest równomiernie rozdzielany między grupy instancji zarządzanych na wschodzie i zachodzie. Możesz też sprawdzić, czy działa dublowanie ruchu i czy ruch jest wysyłany do centralnej grupy instancji zarządzanych.

W menu nawigacyjnym konsoli Cloud kliknij Usługi sieciowe > Równoważenie obciążenia. Wybierz system równoważenia obciążenia web-map-http. Otwórz kartę Monitorowanie, aby wyświetlić wykres poniżej.

f4d6803db44be253.png

Podział ruchu na tę grupę instancji będzie widoczny w czasie rzeczywistym. Ruch jest dzielony po równo, ponieważ skonfigurowano podział typu „każdy po kolei” w stosunku 50/50.

Aby sprawdzić, czy utworzona zasada dublowania ruchu działa, musisz sprawdzić wykorzystanie zarządzanej grupy instancji central-backend-service. Aby to zrobić, otwórz Compute Engine – grupy instancji i wybierz us-central1-mig. Następnie otwórz kartę monitorowania.

cf25e44d511529e7.png

Zobaczysz wykresy pokazujące, że ruch został skopiowany do tej zarządzanej grupy instancji.

Zatrzymaj oblężenie

Skoro udało Ci się wykazać, że zaawansowane dzielenie ruchu działa, czas zakończyć oblężenie. Aby to zrobić, wróć do terminala SSH instancji siege-vm i naciśnij CTRL+C, aby zatrzymać działanie narzędzia siege.

Sprawdzanie, czy wysyłany jest nagłówek odpowiedzi

Zanim rozpoczniesz czyszczenie, możesz szybko sprawdzić, czy moduł równoważenia obciążenia HTTP wysyła odpowiedni nagłówek odpowiedzi. Został on skonfigurowany tak, aby wysyłać test nagłówka z wartością treści. Uruchomienie polecenia curl w Cloud Shell spowoduje wyświetlenie oczekiwanej odpowiedzi.

Z Cloud Shell

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

Wyniki

*   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. Sprzątanie modułu

Środowisko modułu zostało ukończone, więc czas je zamknąć. Aby usunąć środowisko testowe, uruchom te polecenia.

Z 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. Gratulacje!

Udało Ci się ukończyć Codelab dotyczący zewnętrznego systemu równoważenia obciążenia HTTP(S) z zaawansowanym zarządzaniem ruchem (Envoy).

Omówione zagadnienia

  • Jak skonfigurować zarządzaną grupę instancji oraz powiązane z nią reguły zapory sieciowej VPC
  • Jak korzystać z zaawansowanych funkcji zarządzania ruchem w nowym systemie równoważenia obciążenia
  • Jak sprawdzić, czy zaawansowane funkcje zarządzania ruchem działają zgodnie z oczekiwaniami.

Dalsze kroki

  • Wypróbuj inne zaawansowane funkcje routingu, takie jak przepisywanie adresów URL, dodawanie nagłówków CORS i wiele innych ( link).