Używanie zewnętrznego hybrydowego systemu równoważenia obciążenia HTTP(s) w celu dotarcia do grupy punktów końcowych sieci

1. Wprowadzenie

Strategia hybrydowa to pragmatyczne rozwiązanie, dzięki któremu możesz dostosowywać swoje działanie do zmieniających się potrzeb rynku i stopniowo modernizować aplikacje. Hybrydowa obsługa zewnętrznych i wewnętrznych systemów równoważenia obciążenia HTTP(s) w Google Cloud rozszerza równoważenie obciążenia w chmurze na backendy znajdujące się w środowisku lokalnym i w innych chmurach. Stanowi kluczowe narzędzie umożliwiające realizację strategii hybrydowej. Może to być tymczasowe, aby umożliwić migrację do nowoczesnego rozwiązania działającego w chmurze lub stałego miejsca w infrastrukturze IT organizacji.

3312e69c63b02f73.png

W tym module dowiesz się, jak utworzyć grupę punktów końcowych sieci (NEG) przy użyciu 2 maszyn wirtualnych dostępnych z zewnętrznego globalnego systemu równoważenia obciążenia HTTP(s). Chociaż grupa punktów końcowych sieci w module znajduje się w GCP, ta sama procedura jest używana do komunikacji z zasobami publicznymi lub lokalnymi z osiągalnością adresu IP.

Czego się nauczysz

  • Utwórz niestandardowe środowisko VPC
  • Utwórz 2 maszyny wirtualne używane jako grupa punktów końcowych sieci
  • Utwórz hybrydowy system równoważenia obciążenia, usługę backendu i powiązane kontrole stanu
  • Utwórz regułę zapory sieciowej, która umożliwia dostęp do systemu równoważenia obciążenia
  • Zostaną utworzone usługi Cloud Router i NAT, aby umożliwić aktualizacje pakietów z internetu
  • Sprawdź osiągalność grupy punktów końcowych sieci

Czego potrzebujesz

  • Wiedza na temat systemów równoważenia obciążenia

Samodzielne konfigurowanie środowiska

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Nazwa projektu to Twój osobisty identyfikator tego projektu. Jeśli przestrzegasz jej konwencji nazewnictwa, możesz używać dowolnych nazw i w każdej chwili ją zmienić.
  • Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po ustawieniu nie można go zmienić). Konsola Cloud automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się PROJECT_ID), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy projekt lub wypróbuj swój własny identyfikator i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu.
  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.

Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.

W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:

bce75f34b2c53987.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:

f6ef2b5f13479f3a.png

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.

2. Zanim zaczniesz

Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID
echo $projectid

3. Utwórz nową sieć VPC w trybie niestandardowym

W tym zadaniu utworzysz prywatne środowisko wirtualne w chmurze (VPC), które jest podstawą sieci.

Sieć VPC

Z Cloud Shell

gcloud compute networks create hybrid-network-lb --subnet-mode custom

Utwórz podsieć

Z Cloud Shell

gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1

Utwórz instancję Cloud NAT

Instancja obliczeniowa nie jest wymagana w przypadku sieci hybrydowych, ale do pobierania aplikacji i aktualizacji wymaga połączenia z internetem.

W tym zadaniu utworzysz instancję Cloud Router i NAT, która umożliwi połączenie internetowe z instancjami maszyn wirtualnych.

Tworzenie routera Cloud Router

Z Cloud Shell

gcloud compute routers create crnat --network hybrid-network-lb --region us-west1

Tworzenie Cloud NAT

Z Cloud Shell

gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1

4. Tworzenie 2 instancji maszyn wirtualnych

W tym zadaniu utworzysz 2 instancje maszyn wirtualnych z Apache. W dalszej części modułu te instancje maszyn wirtualnych staną się grupą punktów końcowych sieci (NEG).

W Cloud Shell utwórz pierwszą instancję lokalną (on-prem-neg-1)

gcloud compute instances create on-prem-neg-1 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

W Cloud Shell utwórz pierwszą instancję lokalną (on-prem-neg-2)

gcloud compute instances create on-prem-neg-2 \
    --zone=us-west1-a \
    --tags=allow-health-check \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=network-endpoint-group-subnet --no-address \
    --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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

5. Utwórz grupę punktów końcowych sieci zawierającą lokalny punkt końcowy

Najpierw utwórz grupę punktów końcowych sieci o nazwach „on-prem-neg-1” i „on-prem-neg-2”. Określ też, że system równoważenia obciążenia powinien uwzględniać te punkty końcowe na potrzeby routingu i równoważenia obciążenia w strefie GCP us-west1-a. Zalecamy, aby skonfigurowana strefa odpowiadała dowolnej strefie powiązanej z regionem przyłącza połączenia międzysieciowego/bramy VPN na potrzeby pomiarów równoważenia obciążenia z użyciem zbliżonego obszaru używanych do równoważenia obciążenia.

Utwórz on-prem-neg-1 w Cloud Shell

gcloud compute network-endpoint-groups create on-prem-neg-1 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

Utwórz on-prem-neg-2 w Cloud Shell

gcloud compute network-endpoint-groups create on-prem-neg-2 \
    --network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
    --zone "us-west1-a" \
    --network hybrid-network-lb

W ramach ćwiczeń w programie grupa punktów końcowych sieci jest instancją GCE, w której działa serwer Apache w GCP. Jako punkt końcowy sieci możesz też określić lokalny lub internetowy punkt końcowy

Zidentyfikuj adresy IP GCE w Cloud Shell

gcloud compute instances list | grep -i on-prem

powiązać grupę punktów końcowych sieci z adresem IP instancji GCE podanym wcześniej w poprzednim kroku; dla każdej wykluczającej wartości on-prem-neg-1 & on-prem-neg-2.

Z poziomu Cloud Shell powiązanej lokalizacji On-Prem-neg-1 zaktualizuj x.x.x.x ze zidentyfikowanym adresem IP.

gcloud compute network-endpoint-groups update on-prem-neg-1 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

Z poziomu Cloud Shell powiązanej lokalizacji On-Prem-neg-2 zaktualizuj x.x.x.x ze zidentyfikowanym adresem IP.

gcloud compute network-endpoint-groups update on-prem-neg-2 \
    --zone="us-west1-a" \
    --add-endpoint="ip=x.x.x.x,port=80"

6. Utwórz kontrolę stanu HTTP, usługę backendu i zapora sieciowa

W tym kroku utworzysz globalną usługę backendu o nazwie on-prem-backend-service. Ta usługa backendu określa, w jaki sposób platforma danych będzie wysyłać ruch do grupy punktów końcowych sieci.

Najpierw utwórz kontrolę stanu o nazwie on-prem-health-check, aby monitorować stan wszystkich punktów końcowych należących do tej grupy punktów końcowych sieci (czyli lokalnego punktu końcowego).

Z Cloud Shell

gcloud compute health-checks create http on-prem-health-check

Utwórz usługę backendu o nazwie on-prem-backend-service i powiąż ją z kontrolą stanu.

Z Cloud Shell

gcloud compute backend-services create on-prem-backend-service \
    --global \
    --load-balancing-scheme=EXTERNAL \
    --health-checks on-prem-health-check

Zewnętrzny system równoważenia obciążenia i backend HTTP(S) wykonują kontrole stanu pochodzące z podsieci 35.191.0.0/16 i 130.211.0.0/22; dlatego reguła zapory sieciowej jest wymagana, aby umożliwić systemowi równoważenia obciążenia routing do backendu.

Z Cloud Shell

gcloud compute firewall-rules create fw-allow-health-check \
    --network=hybrid-network-lb \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

7. Powiąż grupę punktów końcowych sieci i usługę backendu

Dodaj lokalną grupę punktów końcowych sieci (NEG) do tej usługi backendu

Z Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-1 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

Dodaj lokalną grupę punktów końcowych sieci (NEG) do tej usługi backendu

Z Cloud Shell

gcloud compute backend-services add-backend on-prem-backend-service \
    --global \
    --network-endpoint-group on-prem-neg-2 \
    --network-endpoint-group-zone us-west1-a \
    --balancing-mode RATE \
    --max-rate-per-endpoint 5

Zarezerwuj statyczny adres IP IPv4 używany do uzyskiwania dostępu do punktu końcowego sieci

Z Cloud Shell

gcloud compute addresses create hybrid-lb-ip --project=$projectid --global

Konfiguracja interfejsu wiersza poleceń jest zakończona. Dokończmy konfigurację w konsoli Cloud.

8. Utwórz zewnętrzny system równoważenia obciążenia HTTP i powiąż usługę backendu

W konsoli Cloud przejdź do opcji Równoważenie obciążenia i wybierz Utwórz system równoważenia obciążenia.

Zidentyfikuj równoważenie obciążenia HTTP(S) i kliknij „Rozpocznij konfigurację”

70ccd168957e89d9.png

Wybierz „Z internetu do moich maszyn wirtualnych” jak widać na zrzucie ekranu poniżej, który umożliwia publiczny dostęp do Twojej maszyny wirtualnej

a55cd31dbeadfecc.png

Podaj „xlb” jako nazwę systemu równoważenia obciążenia i wybierz wcześniej utworzoną usługę backendu „on-prem-backend-service” a potem „OK” zgodnie z przesłanym zrzutem ekranu

f1589df43bf9e3e8.png

Wybierz konfigurację frontendu, zaktualizuj nazwę „xlb-fe” i wybierz wcześniej utworzony statyczny adres IPv4, pamiętaj, aby utworzyć odbicie lustrzane zrzutu ekranu b47cd48c7c1ccfc3.png.

Kliknij „Sprawdź i zakończ”. do podanego zrzutu ekranu i wybierz Utwórz.

bfa39f7dc3ad91e1.png

Weryfikacja stanu backendu

W konsoli Cloud sprawdź, czy backend „xlb” jest dobry, zielony, jak widać na załączonym zrzucie ekranu

131bbfc955d6166c.png

9. Sprawdź, czy grupa punktów końcowych sieci jest dostępna w internecie

Wywołaj zewnętrzny statyczny adres IP użyty podczas tworzenia systemu równoważenia obciążenia, jest teraz adresem IP interfejsu Twoich punktów końcowych sieci. Przed wykonaniem ostatniego testu sprawdźmy poprawność adresu IP.

Z Cloud Shell

gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:

Dane wyjściowe (Twój adres IP może być inny)

Dane wyjściowe z Cloud Shell

$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
IPAddress: 34.96.103.132

Za pomocą adresu IP interfejsu globalnego systemu równoważenia obciążenia możesz uzyskać dostęp do backendu punktu końcowego sieci. Uwaga: punkt końcowy w ćwiczeniach w Codelabs jest instancją GCE, ale możesz go używać na przykład w przypadku lokalnych punktów końcowych.

Na lokalnej stacji roboczej uruchom terminal i zwiń się pod adres IP systemu równoważenia obciążenia.

Na stacji roboczej wykonaj skręcenie względem adresu IP frontendu. Zwróć uwagę na błąd 200 OK oraz szczegóły strony składające się z nazwy instancji wykluczającej i regionu.

myworkstation$ curl -v 34.96.103.132

* Trying 34.96.103.132...

* TCP_NODELAY set

* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)

> GET / HTTP/1.1

> Host: 34.96.103.132

> User-Agent: curl/7.64.1

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Tue, 10 Aug 2021 01:21:54 GMT

< Server: Apache/2.4.25 (Debian)

< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT

< ETag: "24-5c929ae7384f4"

< Accept-Ranges: bytes

< Content-Length: 36

< Content-Type: text/html

< Via: 1.1 google

<

Page on on-prem-neg-2 in us-west1-a

* Connection #0 to host 34.96.103.132 left intact

* Closing connection 0

Gratulujemy! Udało Ci się wdrożyć hybrydowy system równoważenia obciążenia L7 z grupami punktów końcowych sieci

Gratulujemy ukończenia ćwiczeń z programowania.

Omówione zagadnienia

  • Utwórz niestandardowe środowisko VPC
  • Utwórz 2 maszyny wirtualne używane jako grupa punktów końcowych sieci
  • Utwórz hybrydowy system równoważenia obciążenia, usługę backendu i powiązane kontrole stanu
  • Utwórz regułę zapory sieciowej, która umożliwia dostęp do systemu równoważenia obciążenia
  • Sprawdź osiągalność grupy punktów końcowych sieci

10. Procedura czyszczenia

W interfejsie konsoli Cloud zidentyfikuj i zaznacz „xlb”. system równoważenia obciążenia i wybierz „Usuń” przez Usługi sieciowe → Równoważenie obciążenia. Po wybraniu zaznacz opcję „Lokalna usługa backendu”. &amp; ‘on-premise-health-check&#39; i wybierz Usuń

53d7463fe354fe66

W interfejsie Cloud Console przejdź do Compute Engine → Grupy punktów końcowych sieci. Po wybraniu kliknij „on-prem-neg-1”. &amp; ‘on-prem-neg-2&#39; i wybierz Usuń

4d8f04264b44d03c.png

Usuwanie komponentów modułu z Cloud Shell

gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet

gcloud compute routers delete crnat  --region us-west1 --quiet

gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet

gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet

gcloud compute firewall-rules delete fw-allow-health-check --quiet

gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet

gcloud compute networks delete hybrid-network-lb --quiet

gcloud compute addresses delete hybrid-lb-ip --global --quiet