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.
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 niestandardową sieć 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
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu to Twój osobisty identyfikator tego projektu. Jeśli przestrzegasz konwencji nazewnictwa, możesz używać dowolnych nazw i w każdej chwili je 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 kod lub wypróbuj swój własny i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu.
- 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 Cloud.
W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
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ę”
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
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
Wybierz konfigurację frontendu, zaktualizuj nazwę „xlb-fe” i wybierz wcześniej utworzony statyczny adres IPv4, pamiętaj, aby utworzyć odbicie lustrzane zrzutu ekranu .
Kliknij „Sprawdź i zakończ”. do podanego zrzutu ekranu i wybierz Utwórz.
Weryfikacja stanu backendu
W konsoli Cloud sprawdź, czy backend „xlb” jest dobry, zielony, jak widać na załączonym zrzucie ekranu
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 niestandardową sieć 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 „lokalna usługa backendu” & ‘on-premise-health-check' i wybierz Usuń
W interfejsie Cloud Console przejdź do Compute Engine → Grupy punktów końcowych sieci. Po wybraniu kliknij „on-prem-neg-1”. & ‘on-prem-neg-2' i wybierz Usuń
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