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.

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



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

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:

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

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

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.

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 
Kliknij „Sprawdź i dokończ”, aby dopasować ustawienia do zrzutu ekranu, a następnie kliknij „Utwórz”.

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

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

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

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