Punkty kontrolne
Create GCS bucket
/ 10
Copy startup script and code to Cloud Storage bucket
/ 10
Deploy instances and configure network
/ 20
Create managed instance groups
/ 20
Create HTTP(S) load balancers
/ 10
Update the frontend instances
/ 10
Scaling GCE
/ 10
Update the website
/ 10
Tworzenie aplikacji internetowej w Google Cloud z użyciem Compute Engine
- GSP662
- Opis
- Konfiguracja i wymagania
- Zadanie 1. Włączanie interfejsu Compute Engine API
- Zadanie 2. Tworzenie zasobnika Cloud Storage
- Zadanie 3. Klonowanie repozytorium źródłowego
- Zadanie 4. Tworzenie instancji Compute Engine
- Zadanie 5. Tworzenie zarządzanych grup instancji
- Zadanie 6. Tworzenie systemów równoważenia obciążenia
- Zadanie 7. Skalowanie Compute Engine
- Zadanie 8. Aktualizowanie witryny
- Gratulacje!
GSP662
Opis
Jest wiele sposobów wdrażania witryn internetowych w Google Cloud. Każde z tych rozwiązań oferuje inne funkcje, możliwości i poziomy kontroli. Compute Engine zapewnia szczegółową kontrolę nad infrastrukturą, w której działa witryna, ale jednocześnie ma trochę większe wymagania w zakresie zarządzania operacyjnego w porównaniu z takimi rozwiązaniami, jak Google Kubernetes Engine (GKE), App Engine i inne. Compute Engine daje Ci pełną kontrolę nad wieloma aspektami infrastruktury, w tym maszynami wirtualnymi, systemami równoważenia obciążenia i nie tylko.
W tym module wdrożysz przykładową aplikację sklepu internetowego „Fancy Store”. Przekonasz się, jak łatwo jest wdrażać i skalować strony internetowe za pomocą Compute Engine.
Czego się nauczysz
W tym module nauczysz się, jak:
- tworzyć instancje Compute Engine,
- tworzyć szablony instancji z instancji źródłowych,
- tworzyć zarządzane grupy instancji,
- tworzyć i testować kontrole stanu zarządzanych grup instancji,
- tworzyć systemy równoważenia obciążenia HTTP(S),
- tworzyć kontrole stanu systemu równoważenia obciążenia,
- używać sieci dostarczania dtreści (CDN) do buforowania.
Na końcu modułu będziesz mieć instancje w zarządzanych grupach instancji, które zapewniają automatyczną naprawę, równoważenie obciążenia, autoskalowanie i aktualizacje kroczące Twojej witryny.
Konfiguracja i wymagania
Zanim klikniesz przycisk Rozpocznij moduł
Zapoznaj się z tymi instrukcjami. Moduły mają limit czasowy i nie można ich zatrzymać. Gdy klikniesz Rozpocznij moduł, na liczniku wyświetli się informacja o tym, na jak długo udostępniamy Ci zasoby Google Cloud.
W tym praktycznym module możesz spróbować swoich sił w wykonywaniu opisywanych działań w prawdziwym środowisku chmury, a nie w jego symulacji lub wersji demonstracyjnej. Otrzymasz nowe, tymczasowe dane logowania, dzięki którym zalogujesz się i uzyskasz dostęp do Google Cloud na czas trwania modułu.
Do ukończenia modułu potrzebne będą:
- dostęp do standardowej przeglądarki internetowej (zalecamy korzystanie z przeglądarki Chrome).
- Odpowiednia ilość czasu na ukończenie modułu – pamiętaj, że gdy rozpoczniesz, nie możesz go wstrzymać.
Rozpoczynanie modułu i logowanie się w konsoli Google Cloud
-
Kliknij przycisk Rozpocznij moduł. Jeśli moduł jest odpłatny, otworzy się wyskakujące okienko, w którym możesz wybrać formę płatności. Po lewej stronie znajduje się panel Szczegóły modułu z następującymi elementami:
- przyciskiem Otwórz konsolę Google Cloud;
- czasem, który Ci pozostał;
- tymczasowymi danymi logowania, których musisz użyć w tym module;
- innymi informacjami potrzebnymi do ukończenia modułu.
-
Kliknij Otwórz konsolę Google Cloud (lub kliknij prawym przyciskiem myszy i wybierz Otwórz link w oknie incognito, jeśli korzystasz z przeglądarki Chrome).
Moduł uruchomi zasoby, po czym otworzy nową kartę ze stroną logowania.
Wskazówka: otwórz karty obok siebie w osobnych oknach.
Uwaga: jeśli pojawi się okno Wybierz konto, kliknij Użyj innego konta. -
W razie potrzeby skopiuj nazwę użytkownika znajdującą się poniżej i wklej ją w oknie logowania.
{{{user_0.username | "Username"}}} Nazwę użytkownika znajdziesz też w panelu Szczegóły modułu.
-
Kliknij Dalej.
-
Skopiuj podane niżej hasło i wklej je w oknie powitania.
{{{user_0.password | "Password"}}} Hasło znajdziesz też w panelu Szczegóły modułu.
-
Kliknij Dalej.
Ważne: musisz użyć danych logowania podanych w module. Nie używaj danych logowania na swoje konto Google Cloud. Uwaga: korzystanie z własnego konta Google Cloud w tym module może wiązać się z dodatkowymi opłatami. -
Na kolejnych stronach wykonaj następujące czynności:
- Zaakceptuj Warunki korzystania z usługi.
- Nie dodawaj opcji odzyskiwania ani uwierzytelniania dwuskładnikowego (ponieważ konto ma charakter tymczasowy).
- Nie rejestruj się w bezpłatnych wersjach próbnych.
Poczekaj, aż na karcie otworzy się konsola Google Cloud.
Aktywowanie Cloud Shell
Cloud Shell to maszyna wirtualna oferująca wiele narzędzi dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud. Dzięki wierszowi poleceń Cloud Shell zyskujesz dostęp do swoich zasobów Google Cloud.
- Kliknij Aktywuj Cloud Shell
na górze konsoli Google Cloud.
Po połączeniu użytkownik od razu jest uwierzytelniony. Uruchomi się Twój projekt o identyfikatorze PROJECT_ID. Dane wyjściowe zawierają wiersz z zadeklarowanym identyfikatorem PROJECT_ID dla tej sesji:
gcloud
to narzędzie wiersza poleceń Google Cloud. Jest ono już zainstalowane w Cloud Shell i obsługuje funkcję autouzupełniania po naciśnięciu tabulatora.
- (Opcjonalnie) Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
-
Kliknij Autoryzuj.
-
Dane wyjściowe powinny wyglądać tak:
Dane wyjściowe:
- (Opcjonalnie) Aby wyświetlić identyfikator projektu, użyj tego polecenia:
Dane wyjściowe:
Przykładowe dane wyjściowe:
gcloud
w Google Cloud znajdziesz w opisie narzędzia wiersza poleceń gcloud.
Ustawianie regionu i strefy
Niektóre zasoby Compute Engine znajdują się w regionach i strefach. Region to określona lokalizacja geograficzna, w której możesz uruchomić swoje zasoby. Każdy region zawiera co najmniej 1 strefę.
Aby ustawić domyślny region i strefę dla Twojego modułu, uruchom te polecenia gcloud w konsoli Cloud:
Zadanie 1. Włączanie interfejsu Compute Engine API
- Włącz Compute Engine API, wykonując to polecenie:
Zadanie 2. Tworzenie zasobnika Cloud Storage
W zasobniku Cloud Storage będziesz przechowywać utworzony kod oraz skrypty startowe.
- Wykonaj w Cloud Shell to polecenie, aby utworzyć nowy zasobnik Cloud Storage:
$DEVSHELL_PROJECT_ID
w Cloud Shell zapewnia unikalność nazw obiektów. Ponieważ identyfikatory wszystkich projektów w Google Cloud muszą być unikalne, dołączenie identyfikatora projektu powinno sprawić, że inne nazwy również będą unikalne.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Zadanie 3. Klonowanie repozytorium źródłowego
Podstawą Twojej witryny będzie istniejąca witryna handlu elektronicznego Fancy Store oparta na repozytorium monolith-to-microservices
.
Skopiuj kod źródłowy, by skoncentrować się na aspektach wdrażania w Compute Engine. Później w trakcie tego modułu przeprowadzisz niewielką aktualizację kodu, która pokaże, jak proste jest aktualizowanie w Compute Engine.
- Skopiuj kod źródłowy i przejdź do katalogu
monolith-to-microservices
:
- Wykonaj początkową kompilację kodu, by umożliwić lokalne uruchamianie aplikacji:
Wykonanie tego skryptu zajmie kilka minut.
- Po jego zakończeniu sprawdź, czy w Cloud Shell uruchomiona jest zgodna wersja nodeJS. Użyj tego polecenia:
- Następnie uruchom poniższe polecenia, by przetestować aplikację, przejść do katalogu
microservices
i uruchomić serwer WWW:
Powinny się wyświetlić te dane wyjściowe:
- Kliknij ikonę podglądu w przeglądarce, aby wyświetlić podgląd aplikacji, a następnie wybierz Podejrzyj na porcie 8080.
Otworzy się nowe okno, w którym zobaczysz frontend sklepu Fancy Store.
- Po przejrzeniu strony internetowej zamknij to okno i naciśnij CTRL+C w oknie terminala, by zatrzymać proces serwera WWW.
Zadanie 4. Tworzenie instancji Compute Engine
Teraz kolej na rozpoczęcie wdrażania instancji Compute Engine.
Wykonasz te czynności:
- Utworzysz skrypt startowy służący do konfigurowania instancji.
- Skopiujesz kod źródłowy i prześlesz go do Cloud Storage.
- Wdrożysz instancję Compute Engine, która będzie hostować mikroserwisy backendu.
- Ponownie skonfigurujesz kod frontendu w sposób umożliwiający korzystanie z instancji mikroserwisów backendu.
- Wdrożysz instancję Compute Engine, która będzie hostować mikroserwis frontendu.
- Skonfigurujesz sieć w sposób umożliwiający komunikację.
Tworzenie skryptu startowego
Skrypt startowy będzie służyć do tego, by instruować instancję, co ma robić, za każdym razem, gdy będzie uruchamiana. W ten sposób instancje zostaną automatycznie skonfigurowane.
- Uruchom w Cloud Shell to polecenie, by utworzyć plik o nazwie
startup-script.sh
:
- Na wstążce Cloud Shell kliknij Otwórz edytor, aby otworzyć edytor kodu.
-
Przejdź do folderu
monolith-to-microservices
. -
Dodaj poniższy kod do pliku
startup-script.sh
. Po jego dodaniu wprowadzisz pewne modyfikacje:
- Znajdź w pliku tekst
[DEVSHELL_PROJECT_ID]
i zastąp go identyfikatorem projektu:.
Wiersz kodu w pliku startup-script.sh
powinien wyglądać teraz tak:
-
Zapisz plik
startup-script.sh
, ale jeszcze go nie zamykaj. -
Sprawdź, czy w prawym dolnym rogu edytora kodu Cloud Shell opcja „End of Line Sequence” jest ustawiona na „LF”, a nie „CRLF”.
- Jeśli zobaczysz ustawienie CRLF, kliknij CRLF i wybierz LF z listy rozwijanej.
- Jeśli zobaczysz ustawienie LF, pozostaw je bez zmian.
-
Zamknij plik
startup-script.sh
. -
Wróć do terminala Cloud Shell i wykonaj to polecenie, by skopiować plik
startup-script.sh
do swojego zasobnika:
Będzie teraz dostępny w: https://storage.googleapis.com/[BUCKET_NAME]/startup-script.sh
.
[BUCKET_NAME] reprezentuje nazwę zasobnika Cloud Storage. Domyślnie będzie widoczny tylko dla autoryzowanych użytkowników i kont usługi, a więc nie będzie dostępny za pomocą przeglądarki. Instancje Compute Engine będą automatycznie mieć do niego dostęp za pośrednictwem swoich kont usługi.
Skrypt startowy wykonuje te zadania:
- Instaluje agenta logowania. Agent automatycznie zbiera logi z syslog.
- Instaluje środowisko Node.js i system Supervisor. System Supervisor uruchamia aplikację jako demon.
- Kopiuje kod źródłowy aplikacji z zasobnika Cloud Storage i instaluje zależności.
- Konfiguruje w systemie Supervisor uruchamianie aplikacji. System Supervisor dba o to, by aplikacja była uruchamiana ponownie po nieoczekiwanym zakończeniu działania lub po zatrzymaniu przez administratora bądź inny proces. Wysyła także strumienie stdin i stderr do syslog, by umożliwić ich zbieranie przez agenta logowania.
Kopiowanie kodu do zasobnika Cloud Storage
Gdy instancje uruchamiają się, pobierają kod z zasobnika Cloud Storage, dlatego niektóre zmienne konfiguracyjne możesz przechowywać w kodzie w pliku .env
.
- Zapisz kopię kodu w zasobniku:
node_modules
są usuwane, by zapewnić jak najszybsze i najwydajniejsze działanie kopii. Są one odtwarzane w instancjach podczas ich uruchamiania.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Wdrażanie instancji backendowej
Pierwszą wdrożoną instancją będzie instancja backendowa udostępniająca mikroserwisy zamówień i produktów.
- Wykonaj poniższe polecenie, by utworzyć instancję
e2-standard-2
skonfigurowaną do korzystania ze skryptu startowego. Jest ona oznaczona tagiem jako instancjabackend
, dlatego możesz do niej później zastosować konkretne reguły zapory sieciowej:
Konfigurowanie połączenia z backendem
Przed wdrożeniem frontendu aplikacji musisz zaktualizować konfigurację, wskazując w niej wdrożony przed chwilą backend.
- Za pomocą tego polecenia pobierz zewnętrzny adres IP backendu; odszukaj instancję backendową w kolumnie
EXTERNAL_IP
:
Przykładowe dane wyjściowe:
-
Skopiuj zewnętrzny adres IP backendu.
-
W eksploratorze Cloud Shell przejdź do folderu
monolith-to-microservices
>react-app
. -
W edytorze kodu wybierz View > Toggle Hidden Files, aby wyświetlić plik
.env
.
W następnym kroku zmodyfikujesz plik .env
, by wskazywał zewnętrzny adres IP backendu. [BACKEND_ADDRESS] reprezentuje zewnętrzny adres IP instancji backendowej ustalony za pomocą powyższego polecenia gcloud
.
- W pliku
.env
zastąp ciąg znakówlocalhost
adresem[BACKEND_ADDRESS]
:
-
Zapisz plik.
-
Wykonaj w Cloud Shell to polecenie, aby ponownie utworzyć aplikację
react-app
, co spowoduje zaktualizowanie kodu frontendu:
- Potem skopiuj kod aplikacji do zasobnika Cloud Storage:
Wdrażanie instancji frontendowej
Po skonfigurowaniu kodu możesz wdrożyć instancję frontendową.
- Aby wdrożyć instancję
frontend
, uruchom polecenie podobne do wcześniejszego. Na potrzeby zapory sieciowej ta instancja jest oznaczona tagiemfrontend
:
Konfigurowanie sieci
- Utwórz reguły zapory sieciowej zezwalające na dostęp do portu 8080 w przypadku frontendu oraz do portów 8081 i 8082 w przypadku backendu. W tych poleceniach związanych z zaporami sieciowymi używane są tagi przypisane podczas tworzenia instancji dla aplikacji:
Witryna powinna być teraz w pełni funkcjonalna.
- Aby przejść do zewnętrznego adresu IP
frontendu
, musisz znać ten adres. Uruchom to polecenie i znajdź adres znajdujący się w kolumnie EXTERNAL_IP wiersza odpowiadającego instancjifrontend
:
Przykładowe dane wyjściowe:
Uruchomienie i skonfigurowanie instancji może zająć kilka minut.
-
Odczekaj 3 minuty, a następnie otwórz nową kartę przeglądarki i otwórz stronę
http://[FRONTEND_ADDRESS]:8080
, aby uzyskać dostęp do witryny. Ciąg znaków [FRONTEND_ADDRESS] reprezentuje zewnętrzny adres IP frontendu określony powyżej. -
Spróbuj otworzyć strony Products i Orders – powinny teraz działać.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Zadanie 5. Tworzenie zarządzanych grup instancji
Aby umożliwić skalowanie aplikacji, zostaną utworzone zarządzane grupy instancji, które będą używać instancji frontend
i backend
jako szablonów instancji.
Zarządzana grupa instancji zawiera identyczne instancje, którymi możesz zarządzać jak pojedynczą encją w pojedynczej strefie. Zarządzane grupy instancji zapewniają wysoką dostępność aplikacji przez aktywne utrzymywanie instancji w stanie uruchomienia. Będziesz korzystać z zarządzanych grup instancji na potrzeby instancji frontendowych oraz backendowych do obsługi funkcji automatycznej naprawy, równoważenia obciążenia, autoskalowania i aktualizacji kroczących.
Tworzenie szablonu instancji z instancji źródłowej
Zanim utworzysz zarządzaną grupę instancji, musisz utworzyć szablon instancji, który będzie stanowić podstawę grupy. Szablony instancji pozwalają na zdefiniowanie typu maszyny, obrazu dysku rozruchowego lub obrazu kontenera, sieci oraz innych właściwości instancji używanych przy tworzeniu nowych instancji maszyn wirtualnych. Za pomocą szablonów instancji możesz tworzyć instancje w zarządzanej grupie instancji, a nawet poszczególne instancje.
Utwórz szablon instancji na podstawie wcześniej utworzonych przez Ciebie instancji.
- Najpierw zatrzymaj obie instancje:
- Potem utwórz szablon instancji na podstawie każdej z instancji źródłowych:
- Sprawdź, czy szablony instancji zostały utworzone:
Przykładowe dane wyjściowe:
- Po utworzeniu szablonów instancji usuń maszynę wirtualną
backend
, by zaoszczędzić miejsce na zasoby:
- Wpisz y, gdy pojawi się prośba.
Normalnie można by też usunąć maszynę wirtualną frontend
, ale użyjesz jej do zaktualizowania szablonu instancji w dalszej części modułu.
Tworzenie zarządzanej grupy instancji
- Następnie utwórz 2 zarządzane grupy instancji – jedną dla frontendu i jedną dla backendu:
Te zarządzane grupy instancji będą używać szablonów instancji. Są one skonfigurowane dla 2 instancji – każda będzie uruchamiana we własnej grupie. Nazwy instancji są tworzone automatycznie. Mają format ciągu znaków base-instance-name
z dołączonymi losowymi znakami.
- W Twojej aplikacji mikroserwis
frontend
działa na porcie 8080, a mikroserwisbackend
– na porcie 8081 (orders
) i na porcie 8082 (products):
Ponieważ są to porty niestandardowe, określa się je za pomocą nazwanych portów. Nazwane porty to metadane w postaci par klucz-wartość reprezentujących nazwę usługi i port, w którym ona działa. Nazwane porty można przypisać do grupy instancji, co oznacza, że usługa jest dostępna we wszystkich instancjach w grupie. Te informacje są używane przez usługę równoważenia obciążenia HTTP, która zostanie skonfigurowana później.
Konfigurowanie automatycznej naprawy
Aby zwiększyć dostępność samej aplikacji i sprawdzić, czy odpowiada, skonfiguruj zasadę automatycznej naprawy dla zarządzanych grup instancji.
Zasada automatycznej naprawy opiera się na kontroli stanu aplikacji, która polega na sprawdzaniu, czy aplikacja odpowiada w oczekiwany sposób. Sprawdzenie, czy aplikacja odpowiada, jest bardziej szczegółowe niż zwykła weryfikacja stanu uruchomienia, co jest zachowaniem domyślnym.
- Dla usług
frontend
ibackend
utwórz kontrolę stanu powodującą naprawienie instancji, która 3 razy z rzędu sygnalizuje niepoprawny stan:
- Utwórz regułę zapory sieciowej, która umożliwia sondom kontroli stanu nawiązanie połączenia z mikroserwisami na portach 8080 i 8081:
- Zastosuj kontrole stanu do odpowiednich usług:
- Kontynuuj moduł, by dać funkcji automatycznej naprawy dość czasu na rozpoczęcie monitorowania instancji w grupie. Aby przetestować automatyczną naprawę, na końcu modułu przeprowadzisz symulację uszkodzenia.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Zadanie 6. Tworzenie systemów równoważenia obciążenia
Zarządzane grupy instancji uzupełnisz systemami równoważenia obciążenia HTTP(S) służącymi do obsługi ruchu skierowanego do mikroserwisów frontendu i backendu, a także mapowaniami umożliwiającymi kierowanie ruchu do odpowiednich usług backendu na podstawie reguł określania ścieżek. Udostępnia to pojedynczy adres IP systemu równoważenia obciążenia dla wszystkich usług.
Więcej informacji o możliwościach równoważenia obciążenia w Google Cloud znajdziesz w artykule Omówienie równoważenia obciążenia.
Tworzenie systemu równoważenia obciążenia HTTP(S)
Google Cloud oferuje wiele różnych typów systemów równoważenia obciążenia. W tym module do obsługi ruchu używasz systemu równoważenia obciążenia HTTP(S). Struktura systemu równoważenia obciążenia HTTP jest taka:
- Reguła przekierowania kieruje żądania przychodzące do docelowego serwera proxy HTTP.
- Docelowy serwer proxy HTTP porównuje każde żądanie z mapą URL, aby określić dla niego odpowiednią usługę backendu.
- Usługa backendu kieruje każde żądanie do odpowiedniego backendu na podstawie możliwości obsługi, strefy i stanu przyłączonych instancji backendowych. Stan każdej instancji backendowej jest weryfikowany przy użyciu kontroli stanu HTTP. Jeśli w usłudze backendu skonfigurowano użycie kontroli stanu HTTPS lub HTTP/2, w drodze do instancji backendowej żądanie zostaje zaszyfrowane.
- W sesjach połączenia między systemem równoważenia obciążenia a instancją możesz używać protokołu HTTP, HTTPS lub HTTP/2. Jeśli chcesz używać protokołu HTTPS lub HTTP/2, każda instancja usług backendu musi mieć certyfikat SSL.
- Utwórz kontrole stanu, które będą używane do określenia instancji mogących obsłużyć ruch związany z poszczególnymi usługami
- Utwórz docelowe usługi backendu dla ruchu z systemu równoważenia obciążenia. Usługi backendu będą korzystać z utworzonych kontroli stanu i nazwanych portów:
- Dodaj usługi backendu systemu równoważenia obciążenia:
- Utwórz mapę URL. Mapa URL określa, które adresy URL są kierowane do których usług backendu:
- Określ dopasowania ścieżek, które umożliwiają skierowanie ścieżek
/api/orders
i/api/products
do odpowiednich usług:
- Utwórz serwer proxy, który wiąże z mapą URL:
- Utwórz globalną regułę przekierowania, która łączy publiczny adres IP i port z serwerem proxy:
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Aktualizowanie konfiguracji
Teraz gdy masz już nowy statyczny adres IP, zaktualizuj kod instancji frontend
w taki sposób, by wskazywał ten nowy adres zamiast używanego wcześniej adresu efemerycznego, który wskazywał instancję backend
.
- W Cloud Shell przejdź do folderu
react-app
, w którym znajduje się plik.env
zawierający konfigurację:
- Znajdź adres IP systemu równoważenia obciążenia:
Przykładowe dane wyjściowe:
- Wróć do edytora Cloud Shell i ponownie zmodyfikuj plik
.env
tak, by wskazywał publiczny adres IP systemu równoważenia obciążenia. Ciąg znaków [LB_IP] reprezentuje zewnętrzny adres IP instancji backendowej określony powyżej.
-
Zapisz plik.
-
Utwórz ponownie
react-app
. Zaktualizuje to kod frontendu:
- Skopiuj kod aplikacji do zasobnika:
Aktualizowanie instancji frontendowych
Po opracowaniu nowego kodu i konfiguracji instancje frontendowe w zarządzanej grupie instancji powinny pobrać ten nowy kod.
Ponieważ instancje pobierają kod podczas ich uruchamiania, możesz uruchomić polecenie kroczącego restartu:
--max-unavailable
wprost stwierdza się, że wszystkie maszyny można zastąpić natychmiast. Gdyby nie było tego parametru, polecenie zachowałoby aktywną instancję, restartując inne, aby zapewnić dostępność. Dla celów testowych określa się natychmiastowe zastąpienie wszystkich, gdyż jest to szybsze.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Testowanie witryny
- Po uruchomieniu polecenia
rolling-action replace
zaczekaj 3 minuty na zakończenie przetwarzania instancji, a potem sprawdzaj stan instancji w zarządzanej grupie instancji. Uruchom to polecenie, by potwierdzić, że usługa jest sprawna (wyświetlony zostanie ciąg znaków HEALTHY):
- Zaczekaj, aż ciąg znaków HEALTHY będzie wyświetlany w przypadku 2 usług.
Przykładowe dane wyjściowe:
Jeśli po odczekaniu krótkiego czasu żadna instancja nie będzie sprawna (HEALTHY), oznacza to problem z konfiguracją instancji frontendowej, który uniemożliwia dostęp do niej przez port 8080. Przetestuj to, przechodząc do instancji bezpośrednio przez port 8080.
- Gdy obie instancje będą wyświetlane na liście jako sprawne (HEALTHY), zakończ polecenie
watch
, naciskając CTRL+C.
gcloud compute forwarding-rules list --global
Zadanie 7. Skalowanie Compute Engine
Jak dotąd utworzyliśmy 2 zarządzane grupy instancji zawierające po 2 instancje każda. Ta konfiguracja jest w pełni funkcjonalna, jednak bez względu na obciążenie jest konfiguracją statyczną. Utworzymy zasadę autoskalowania opartą na wykorzystaniu, która umożliwi automatyczne skalowanie każdej zarządzanej grupy instancji.
Automatyczne zmienianie rozmiaru w zależności od wykorzystania
- Aby utworzyć zasadę autoskalowania, uruchom te polecenia:
Polecenia te tworzą autoskalowanie w zarządzanych grupach instancji, które automatycznie dodaje instancje, gdy wykorzystanie wzrasta powyżej 60%, i usuwa je, gdy wykorzystanie systemu równoważenia obciążenia spada poniżej 60%.
Włączanie sieci dostarczania dtreści
Inną funkcją ułatwiającą skalowanie jest usługa sieci dostarczania treści, która zapewnia buforowanie frontendu.
- Wykonaj to polecenie w usłudze frontendu:
Gdy użytkownik wysyła żądanie treści z systemu równoważenia obciążenia HTTP(S), żądanie to dociera do usługi Google Front End (GFE), która najpierw szuka odpowiedzi na żądanie użytkownika w pamięci podręcznej usługi Cloud CDN. Jeśli GFE znajdzie odpowiedź w pamięci podręcznej, wysyła ją do użytkownika. Nazywa się to trafieniem w pamięci podręcznej.
Jeśli GFE nie może znaleźć odpowiedzi na żądanie w pamięci podręcznej, wysyła żądanie bezpośrednio do backendu. Jeśli odpowiedź na to żądanie można umieścić w pamięci podręcznej, GFE zapisuje odpowiedź w pamięci podręcznej usługi Cloud CDN, by umożliwić jej użycie w kolejnych żądaniach.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
Zadanie 8. Aktualizowanie witryny
Aktualizowanie szablonu instancji
Istniejących szablonów instancji nie można modyfikować. Ponieważ jednak instancje są bezstanowe i cała konfiguracja jest zdefiniowana w skrypcie startowym, aby zmienić ustawienia szablonu, wystarczy zmienić szablon instancji. Wprowadzisz teraz prostą zmianę typu maszyny na większą i ją zastosujesz.
Wykonaj kroki poniżej:
-
Zaktualizuj instancję
frontend
, która jest podstawą szablonu instancji. Podczas aktualizacji zapisz plik w zaktualizowanej wersji obrazu szablonu instancji, a potem zaktualizuj szablon instancji, wdróż nowy szablon i sprawdź istnienie pliku w instancjach zarządzanej grupy instancji. -
Zmodyfikuj typ maszyny szablonu instancji, zmieniając go z
e2-standard-2
nae2-small
.
- Uruchom to polecenie, aby zmodyfikować typ maszyny instancji frontendowej:
- Utwórz nowy szablon instancji:
- Wdróż zaktualizowany szablon instancji w zarządzanej grupie instancji:
- Zaczekaj 3 minuty, a potem wykonaj to polecenie, aby monitorować stan aktualizacji:
Zajmie to kilka minut.
Gdy co najmniej 1 instancja znajdzie się w takim stanie:
- STATUS (Stan): RUNNING (Uruchomiona)
- ACTION (Działanie): None (Brak)
- INSTANCE_TEMPLATE (Szablon instancji): nazwa nowego szablonu (fancy-fe-new)
-
Skopiuj nazwę jednej z wymienionych maszyn, by jej użyć w następnym poleceniu.
-
Naciśnij CTRL+C, by zakończyć proces
watch
. -
Uruchom to polecenie, by zobaczyć, czy maszyna wirtualna jest nowego typu (e2-small), gdzie [VM_NAME] to nowo utworzona instancja:
Oczekiwane przykładowe dane wyjściowe:
Wprowadzanie zmian w witrynie
Scenariusz: dział marketingu poprosił o zmianę strony głównej witryny. Ich zdaniem powinna zawierać więcej informacji o firmie i produktach, które sprzedaje.
Zadanie: dodaj więcej tekstu do strony głównej, by spełnić prośbę działu marketingu. Wygląda na to, że jeden z programistów przygotował już odpowiednie zmiany i umieścił je w pliku o nazwie index.js.new
. Wystarczy skopiować ten plik do index.js
i zmiany zostaną automatycznie zastosowane. Wykonaj poniższe instrukcje, by wprowadzić odpowiednie zmiany.
- Uruchom te polecenia, aby skopiować zaktualizowany plik z poprawną nazwą:
- Wyświetl treść pliku, by sprawdzić wprowadzone zmiany:
Wynikowy kod powinien wyglądać podobnie do tego:
Zaktualizowane zostały komponenty React, ale musisz jeszcze utworzyć aplikację React, by wygenerować pliki statyczne.
- Uruchom to polecenie, by utworzyć aplikację React i skopiować ją do katalogu publicznego usługi monolith:
- Potem ponownie umieść kod w zasobniku:
Wypychanie zmian z zastąpieniami kroczącymi
- Wymuś teraz zastąpienie wszystkich instancji, aby pobrać aktualizację:
Uwaga: w tym przykładzie kroczącego restartu za pomocą parametru --max-unavailable
wprost stwierdza się, że wszystkie maszyny można zastąpić natychmiast. Gdyby nie było tego parametru, polecenie zachowałoby aktywną instancję podczas zastępowania innych. Dla celów testowych określa się natychmiastowe zastąpienie wszystkich, gdyż jest to szybsze. W środowisku produkcyjnym pozostawienie bufora umożliwiłoby ciągłe działanie witryny podczas jej aktualizacji.
Kliknij Sprawdź postępy, aby zobaczyć, jak Ci poszło.
- Po uruchomieniu polecenia
rolling-action replace
zaczekaj 3 minuty na zakończenie przetwarzania instancji, a potem sprawdzaj stan instancji w zarządzanej grupie instancji. Uruchom to polecenie, by potwierdzić, że usługa jest sprawna (wyświetlony zostanie ciąg znaków HEALTHY):
- Zaczekaj chwilę, aż obie usługi pojawią się i będą sprawne (HEALTHY).
Przykładowe dane wyjściowe:
-
Gdy instancje pojawią się na liście ze stanem HEALTHY, zakończ polecenie
watch
, naciskając CTRL+C. -
Otwórz witrynę dostępną pod adresem
http://[LB_IP]
, gdzie [LB_IP] reprezentuje adres IP systemu równoważenia obciążenia, który możesz znaleźć za pomocą tego polecenia:
Nowe zmiany w witrynie powinny być teraz widoczne.
Symulacja uszkodzenia
Aby potwierdzić działanie kontroli stanu, zaloguj się w instancji i zatrzymaj usługi.
- Wykonaj to polecenie, by znaleźć nazwę instancji:
- Skopiuj nazwę instancji, a potem uruchom bezpieczną powłokę w instancji za pomocą poniższego polecenia, w którym [INSTANCE_NAME] jest nazwą jednej z instancji z listy:
-
Wpisz „y”, aby potwierdzić, i dwukrotnie naciśnij klawisz Enter, by nie używać hasła.
-
Będąc w instancji, zatrzymaj aplikację za pomocą polecenia
supervisorctl
:
- Opuść instancję:
- Monitoruj operacje naprawy:
Ich wykonanie może potrwać kilka minut.
Szukaj danych wyjściowych podobnych do poniższych przykładowych:
Zarządzana grupa instancji odtworzyła instancję, aby ją naprawić.
- Możesz też otworzyć Menu nawigacyjne > Compute Engine > Instancje maszyn wirtualnych, aby monitorować dane w konsoli.
Gratulacje!
Udało Ci się wdrożyć, przeskalować i zaktualizować witrynę w Compute Engine. Wiesz już, co to jest Compute Engine i na czym polega działanie zarządzanych grup instancji, systemów równoważenia obciążenia oraz kontroli stanu.
Kolejne kroki / Więcej informacji
- Film ze studium przypadku na temat hostowania skalowalnych aplikacji internetowych w Google Cloud
Szkolenia i certyfikaty Google Cloud
…pomogą Ci wykorzystać wszystkie możliwości technologii Google Cloud. Nasze zajęcia obejmują umiejętności techniczne oraz sprawdzone metody, które ułatwią Ci szybką naukę i umożliwią jej kontynuację. Oferujemy szkolenia na poziomach od podstawowego po zaawansowany prowadzone w trybach wirtualnym, na żądanie i na żywo, dzięki czemu możesz dopasować program szkoleń do swojego napiętego harmonogramu. Certyfikaty umożliwią udokumentowanie i potwierdzenie Twoich umiejętności oraz doświadczenia w zakresie technologii Google Cloud.
Ostatnia aktualizacja instrukcji: 26 kwietnia 2024 r.
Ostatni test modułu: 15 grudnia 2023 r.
Copyright 2024 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.