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 praktyczne rozwiązanie, które pozwala dostosowywać się do zmieniających się wymagań 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ę lokalnie i w innych chmurach, co jest kluczowym elementem strategii hybrydowej. Może to być rozwiązanie tymczasowe, które umożliwi przejście na nowoczesne rozwiązanie oparte na chmurze, lub stały element infrastruktury IT organizacji.

3312e69c63b02f73.png

W tym laboratorium 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ż NEG w laboratorium znajduje się w GCP, ta sama procedura jest używana do komunikacji z zasobami publicznymi lub lokalnymi z dostępnością IP.

Czego się nauczysz

  • Tworzenie niestandardowej sieci VPC
  • Utwórz 2 maszyny wirtualne, które będą używane jako grupa punktów końcowych sieci (NEG).
  • Tworzenie hybrydowego systemu równoważenia obciążenia, usługi backendu i powiązanych kontroli stanu
  • Tworzenie reguły zapory sieciowej, która zezwala na dostęp do systemu równoważenia obciążenia
  • Zostaną utworzone Cloud Router i NAT, aby umożliwić aktualizacje pakietów z internetu.
  • Sprawdzanie dostępności grupy punktów końcowych sieci

Czego potrzebujesz

  • Znajomość systemów równoważenia obciążenia

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 ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Nazwa projektu to Twój osobisty identyfikator tego projektu. Możesz użyć dowolnej nazwy, o ile przestrzegasz konwencji nazewnictwa. W każdej chwili możesz ją zmienić.
  • Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości Codelabs musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID), więc jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Po utworzeniu projektu jest on „zamrażany”.
  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.

Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

2. Zanim zaczniesz

W Cloud Shell sprawdź, 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. Tworzenie nowej sieci VPC w trybie niestandardowym

W tym zadaniu utworzysz prywatne środowisko wirtualne w chmurze (VPC), które będzie 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

Tworzenie instancji Cloud NAT

Chociaż nie jest to wymagane w przypadku sieci hybrydowej, instancja obliczeniowa wymaga połączenia z internetem, aby pobierać aplikacje i aktualizacje.

W tym zadaniu utworzysz router Cloud Router i instancję NAT, które umożliwią instancjom maszyn wirtualnych połączenie z internetem.

Utwórz router Cloud Router

Z Cloud Shell

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

Utwórz 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 grupy punktów końcowych sieci o nazwach on-prem-neg-1 i on-prem-neg-2. Określisz też, że na potrzeby routingu i równoważenia obciążenia te punkty końcowe powinny być traktowane jako znajdujące się w strefie GCP us-west1-a. Zalecamy, aby skonfigurowana strefa odpowiadała dowolnej strefie powiązanej z regionem przyłącza połączenia międzysieciowego lub bramy VPN na potrzeby pomiarów równoważenia obciążenia na podstawie bliskości używanych do równoważenia obciążenia.

W Cloud Shell utwórz on-prem-neg-1

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

W Cloud Shell utwórz on-prem-neg-2

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 tym laboratorium grupa punktów końcowych sieci to instancja GCE z Apache w GCP. Możesz też określić lokalny lub internetowy punkt końcowy jako punkt końcowy sieci.

Określanie adresów IP GCE w Cloud Shell

gcloud compute instances list | grep -i on-prem

Powiąż grupę punktów końcowych sieci z adresem IP instancji GCE zidentyfikowanym w poprzednim kroku. Dla każdej grupy punktów końcowych sieci: on-prem-neg-1 & on-prem-neg-2.

W Cloud Shell powiązanym z on-prem-neg-1 zaktualizuj x.x.x.x o zidentyfikowany adres IP.

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

W Cloud Shell powiąż on-prem-neg-2, zaktualizuj x.x.x.x o zidentyfikowany adres 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. Tworzenie kontroli stanu HTTP, usługi backendu i zapory sieciowej

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

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

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 HTTP(S) i backend przeprowadzają kontrole stanu pochodzące z podsieci 35.191.0.0/16 i 130.211.0.0/22. Dlatego wymagana jest reguła zapory sieciowej, która zezwala na routing z systemu równoważenia obciążenia 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ązywanie grupy punktów końcowych sieci z usługą backendu

Dodaj lokalną grupę NEG on-prem-neg-1 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 do tej usługi backendu grupę NEG on-prem-neg-2

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ń została zakończona. Dokończmy konfigurację w konsoli Cloud.

8. Tworzenie zewnętrznego systemu równoważenia obciążenia HTTP i powiązanie go z usługą backendu

W konsoli Cloud otwórz Równoważenie obciążenia i kliknij Utwórz system równoważenia obciążenia.

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

70ccd168957e89d9.png

Zgodnie z poniższym zrzutem ekranu wybierz „Z internetu do moich maszyn wirtualnych”, aby umożliwić publiczny dostęp do maszyny wirtualnej.

a55cd31dbeadfecc.png

Jako nazwę systemu równoważenia obciążenia podaj „xlb”, a następnie wybierz utworzoną wcześniej usługę backendu „on-prem-backend-service” i kliknij „OK” zgodnie ze zrzutem ekranu.

f1589df43bf9e3e8.png

Wybierz Konfiguracja frontendu, zaktualizuj nazwę „xlb-fe” i wybierz utworzony wcześniej statyczny adres IPv4. Upewnij się, że wszystko wygląda tak jak na zrzucie ekranu b47cd48c7c1ccfc3.png

Kliknij „Sprawdź i dokończ”, aby dopasować ustawienia do zrzutu ekranu, a następnie kliknij „Utwórz”.

bfa39f7dc3ad91e1.png

Weryfikacja stanu backendu

Na konsoli Cloud sprawdź, czy backend „xlb” jest w dobrym stanie (zielony kolor, jak na zrzucie ekranu).

131bbfc955d6166c.png

9. Sprawdź, czy NEG jest osiągalna z internetu

Pamiętaj, że zewnętrzny statyczny adres IP użyty podczas tworzenia systemu równoważenia obciążenia jest teraz adresem IP interfejsu sieciowych punktów końcowych. Przed wykonaniem ostatecznego testu przeprowadźmy weryfikację adresu IP.

Z Cloud Shell

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

Dane wyjściowe (Twój adres IP będzie inny)

Dane wyjściowe z Cloud Shell

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

Korzystając z adresu IP frontendu globalnego systemu równoważenia obciążenia, możesz uzyskać dostęp do backendu punktu końcowego sieci. Pamiętaj, że w tym laboratorium punktem końcowym jest instancja GCE, ale możesz używać tej metody np. w przypadku lokalnych punktów końcowych.

Na lokalnej stacji roboczej otwórz terminal i wykonaj polecenie curl na adres IP systemu równoważenia obciążenia.

Na stacji roboczej wykonaj polecenie curl na adresie IP frontendu. Zwróć uwagę na kod 200 OK i szczegóły strony, które obejmują nazwę i region instancji NEG.

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

Gratulacje, udało Ci się wdrożyć hybrydowy system równoważenia obciążenia warstwy 7 z grupami NEG.

Gratulujemy ukończenia ćwiczenia!

Omówione zagadnienia

  • Tworzenie niestandardowej sieci VPC
  • Utwórz 2 maszyny wirtualne, które będą używane jako grupa punktów końcowych sieci (NEG).
  • Tworzenie hybrydowego systemu równoważenia obciążenia, usługi backendu i powiązanych kontroli stanu
  • Tworzenie reguły zapory sieciowej, która zezwala na dostęp do systemu równoważenia obciążenia
  • Sprawdzanie dostępności grupy punktów końcowych sieci

10. Procedura czyszczenia

W interfejsie Cloud Console znajdź i zaznacz system równoważenia obciążenia „xlb”, a następnie usuń go, wybierając Usługi sieciowe → Równoważenie obciążenia. Po wybraniu zaznacz „on-premise-backend service” (usługa backendu lokalnego) i „on-premise-health-check” (sprawdzanie stanu lokalnego), a następnie kliknij Usuń.

53d7463fe354fe66.png

W interfejsie Cloud Console otwórz Compute Engine → Grupy punktów końcowych sieci. Po wybraniu zaznacz „on-prem-neg-1” i „on-prem-neg-2”, a następnie kliknij Usuń.

4d8f04264b44d03c.png

Usuwanie komponentów laboratorium z powłoki chmury

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