Checkpoint
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
Hosting di un'app web su Google Cloud mediante Compute Engine
- GSP662
- Panoramica
- Configurazione e requisiti
- Attività 1: abilita l'API Compute Engine
- Attività 2: crea un bucket Cloud Storage
- Attività 3: clona il repository di codice sorgente
- Attività 4: crea istanze di Compute Engine
- Attività 5: crea gruppi di istanze gestite
- Attività 6: crea bilanciatori del carico
- Attività 7: gestisci la scalabilità in Compute Engine
- Attività 8: aggiorna il sito web
- Complimenti!
GSP662
Panoramica
Esistono molti modi per eseguire il deployment di siti web in Google Cloud. Ogni soluzione offre funzionalità, capacità e livelli di controllo diversi. Compute Engine offre un livello profondo di controllo sull'infrastruttura utilizzata per eseguire un sito web, ma richiede anche un maggior impegno per la gestione operativa rispetto a soluzioni come Google Kubernetes Engines (GKE), App Engine o altre. Compute Engine consente di avere un controllo granulare degli aspetti dell'infrastruttura, tra cui le macchine virtuali, i bilanciatori del carico e così via.
In questo lab eseguirai il deployment di un'applicazione di esempio, il sito web di e-Commerce "Fancy Store", per illustrare come si può facilmente eseguire il deployment e gestire la scalabilità di un sito web con Compute Engine.
Cosa imparerai a fare
In questo lab imparerai a:
- Creare istanze di Compute Engine
- Creare modelli di istanze dalle istanze di origine
- Creare gruppi di istanze gestite
- Creare e testare controlli di integrità dei gruppi di istanze gestite
- Creare bilanciatori del carico HTTP(S)
- Creare controlli di integrità dei bilanciatori del carico
- Usare una rete CDN (Content Delivery Network) per la memorizzazione nella cache
Alla fine del lab, le istanze all'interno dei gruppi di istanze gestite ti forniranno riparazione automatica, bilanciamento del carico, scalabilità automatica e aggiornamenti in sequenza per il tuo sito web.
Configurazione e requisiti
Prima di fare clic sul pulsante Avvia lab
Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Avvia lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.
Con questo lab pratico avrai la possibilità di completare le attività in prima persona, in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.
Per completare il lab, avrai bisogno di:
- Accesso a un browser internet standard (Chrome è il browser consigliato).
- È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Come avviare il lab e accedere alla console Google Cloud
-
Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si apre una finestra popup per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:
- Il pulsante Apri console Google Cloud
- Tempo rimanente
- Credenziali temporanee da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
-
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra di navigazione in incognito se utilizzi il browser Chrome).
Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.
Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.
Nota: se visualizzi la finestra di dialogo Scegli un account, fai clic su Usa un altro account. -
Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo di accesso.
{{{user_0.username | "Username"}}} Puoi trovare il Nome utente anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
-
Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.
{{{user_0.password | "Password"}}} Puoi trovare la Password anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
Importante: devi utilizzare le credenziali fornite dal lab. Non utilizzare le credenziali del tuo account Google Cloud. Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi. -
Fai clic nelle pagine successive:
- Accetta i termini e le condizioni.
- Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
- Non registrarti per le prove gratuite.
Dopo qualche istante, la console Google Cloud si apre in questa scheda.
Attiva Cloud Shell
Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
- Fai clic su Attiva Cloud Shell
nella parte superiore della console Google Cloud.
Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. L'output contiene una riga che dichiara il PROJECT_ID per questa sessione:
gcloud
è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.
- (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
-
Fai clic su Autorizza.
-
L'output dovrebbe avere ora il seguente aspetto:
Output:
- (Facoltativo) Puoi elencare l'ID progetto con questo comando:
Output:
Output di esempio:
gcloud
, in Google Cloud, fai riferimento alla Panoramica dell'interfaccia a riga di comando gcloud.
Impostare la regione e la zona
Alcune risorse di Compute Engine risiedono in regioni e zone. Una regione rappresenta una posizione geografica specifica in cui puoi eseguire le tue risorse. Ogni regione è composta da una o più zone.
Esegui questi comandi gcloud nella console Cloud per impostare la regione e la zona predefinite per il lab:
Attività 1: abilita l'API Compute Engine
- Abilita l'API Compute Engine eseguendo il comando seguente:
Attività 2: crea un bucket Cloud Storage
Utilizzerai un bucket Cloud Storage per ospitare il codice che crei e i tuoi script di avvio.
- Da Cloud Shell, esegui il comando riportato di seguito per creare un nuovo bucket Cloud Storage:
$DEVSHELL_PROJECT_ID
in Cloud Shell serve a garantire che i nomi degli oggetti siano univoci. Poiché tutti gli ID progetto in Google Cloud devono essere univoci, l'aggiunta dell'ID progetto dovrebbe rendere univoci anche gli altri nomi.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Attività 3: clona il repository di codice sorgente
Utilizza il sito web di e-commerce Fancy Store esistente basato sul repository monolith-to-microservices
come base per il tuo sito web.
Clona il codice sorgente per concentrarti sugli aspetti del deployment in Compute Engine. Più avanti in questo lab, eseguirai un piccolo aggiornamento del codice a dimostrazione di come sia semplice eseguire aggiornamenti su Compute Engine.
- Clona il codice sorgente e quindi vai alla directory
monolith-to-microservices
:
- Esegui la build iniziale del codice per consentire l'esecuzione in locale dell'applicazione:
Il completamento dello script potrebbe richiedere alcuni minuti.
- Al termine, assicurati che Cloud Shell stia eseguendo una versione di nodeJS compatibile con il seguente comando:
- Quindi, esegui il comando riportato di seguito per testare l'applicazione, passa alla directory
microservices
e avvia il server web:
Dovresti vedere l'output seguente:
- Visualizza l'anteprima dell'applicazione facendo clic sull'icona dell'anteprima web e selezionando Anteprima sulla porta 8080.
Si apre una nuova finestra in cui puoi vedere il frontend di Fancy Store.
- Chiudi questa finestra dopo aver visualizzato il sito web, quindi premi Ctrl+C nella finestra del terminale per arrestare il processo del server web.
Attività 4: crea istanze di Compute Engine
A questo punto possiamo iniziare il deployment di alcune istanze di Compute Engine.
Nei seguenti passaggi potrai:
- Creare uno script di avvio per configurare le istanze.
- Clonare il codice sorgente e caricarlo in Cloud Storage.
- Eseguire il deployment di un'istanza di Compute Engine per ospitare i microservizi di backend.
- Riconfigurare il codice del frontend in modo che utilizzi l'istanza dei microservizi di backend.
- Eseguire il deployment di un'istanza di Compute Engine per ospitare il microservizio del frontend.
- Configurare la rete per consentire la comunicazione.
Crea lo script di avvio
Lo script di avvio serve a comunicare all'istanza le operazioni da eseguire ogni volta che viene avviata. In questo modo le istanze vengono configurate automaticamente.
- In Cloud Shell, esegui il comando riportato di seguito per creare un file denominato
startup-script.sh
:
- Fai clic su Apri editor nella barra laterale di Cloud Shell per aprire l'editor di codice.
-
Vai alla cartella
monolith-to-microservices
. -
Aggiungi il codice riportato di seguito al file
startup-script.sh
. Dopo aver aggiunto il codice ne modificherai una parte:
- Individua il testo
[DEVSHELL_PROJECT_ID]
nel file e sostituiscilo con il tuo ID progetto:
La riga di codice all'interno di startup-script.sh
ora dovrebbe essere simile a:
-
Salva il file
startup-script.sh
, ma non chiuderlo ancora. -
Guarda in basso a destra dell'editor di codice di Cloud Shell e assicurati che l'opzione "End of Line Sequence" sia impostata su "LF" e non su "CRLF".
- Se è impostata su CRLF, fai clic su CRLF e quindi seleziona LF dal menu a discesa.
- Se è già impostata su LF, lasciala invariata.
-
Chiudi il file
startup-script.sh
. -
Torna al terminale Cloud Shell ed esegui il comando riportato di seguito per copiare il file
startup-script.sh
nel tuo bucket:
Il file sarà ora accessibile all'indirizzo: https://storage.googleapis.com/[BUCKET_NAME]/startup-script.sh
.
[BUCKET_NAME] rappresenta il nome del bucket Cloud Storage e sarà visualizzabile solo dagli utenti autorizzati e dagli account di servizio per impostazione predefinita e, pertanto, inaccessibile tramite browser web. Le istanze di Compute Engine saranno automaticamente in grado di accedere tramite un account di servizio.
Lo script di avvio esegue queste attività:
- Installa l'agente Logging. L'agente raccoglie automaticamente i log da syslog.
- Installa Node.js e Supervisor. Supervisor esegue l'app come daemon.
- Clona il codice sorgente dell'app dal bucket Cloud Storage e installa le dipendenze.
- Configura Supervisor per l'esecuzione dell'app. Supervisor assicura che l'app venga riavviata se si chiude inaspettatamente o se viene interrotta da un amministratore o da un processo. Inoltre, invia lo stdout e lo stderr dell'app al syslog perché vengano raccolti dall'agente Logging.
Copia il codice nel bucket Cloud Storage
Quando vengono lanciate, le istanze eseguono il pull del codice dal bucket Cloud Storage, quindi puoi archiviare alcune variabili di configurazione nel file .env
del codice.
- Copia il codice clonato nel tuo bucket:
node_modules
vengono eliminate per garantire che la copia sia più veloce ed efficiente possibile e vengono ricreate sulle istanze al momento dell'avvio.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Esegui il deployment dell'istanza di backend
La prima istanza di cui eseguire il deployment sarà quella di backend, che ospiterà i microservizi Orders e Products.
- Esegui il comando riportato di seguito per creare un'istanza
e2-standard-2
configurata per l'utilizzo dello script di avvio. L'istanza è taggata come istanzabackend
in modo che tu possa applicare regole firewall specifiche in un secondo momento:
Configura una connessione al backend
Prima di eseguire il deployment del frontend dell'applicazione, devi aggiornare la configurazione in modo che punti al backend di cui hai appena eseguito il deployment.
- Recupera l'indirizzo IP esterno del backend con il comando riportato di seguito e individua l'istanza di backend nella colonna
EXTERNAL_IP
:
Output di esempio:
-
Copia l'IP esterno del backend.
-
In Explorer di Cloud Shell, vai a
monolith-to-microservices
>react-app
. -
Nell'editor di codice, seleziona View > Toggle Hidden Files per visualizzare il file
.env
.
Nel passaggio successivo modificherai il file .env
in modo che punti all'IP esterno del backend. [BACKEND_ADDRESS] rappresenta l'indirizzo IP esterno dell'istanza di backend determinata dal comando gcloud
precedente.
- Nel file
.env
, sostituiscilocalhost
con il tuo[BACKEND_ADDRESS]
:
-
Salva il file.
-
In Cloud Shell, esegui il comando riportato di seguito per ricreare la build di
react-app
, che aggiornerà il codice del frontend:
- Quindi, copia il codice dell'applicazione nel bucket Cloud Storage:
Esegui il deployment dell'istanza di frontend
Ora che il codice è stato configurato, esegui il deployment dell'istanza di frontend.
- Utilizza i comandi seguenti per eseguire il deployment dell'istanza di
frontend
con un comando simile a quello utilizzato in precedenza. L'istanza viene taggata comefrontend
ai fini del firewall:
Configura la rete
- Crea le regole firewall necessarie per consentire l'accesso alla porta 8080 per il frontend e alle porte 8081-8082 per il backend. I comandi firewall indicati di seguito utilizzano i tag assegnati durante la creazione dell'istanza per l'applicazione:
Il sito web ora dovrebbe essere completamente funzionale.
- Per andare all'IP esterno del
frontend
, devi conoscerne l'indirizzo. Esegui il comando riportato di seguito e cerca l'EXTERNAL_IP dell'istanza difrontend
:
Output di esempio:
L'avvio e la configurazione dell'istanza potrebbero richiedere qualche minuto.
-
Attendi tre minuti, quindi apri una nuova scheda del browser e vai all'indirizzo
http://[FRONTEND_ADDRESS]:8080
per accedere al sito web, dove [FRONTEND_ADDRESS] corrisponde all'EXTERNAL_IP del frontend determinato sopra. -
Prova ad andare alle pagine Products e Orders, che ora dovrebbero funzionare.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Attività 5: crea gruppi di istanze gestite
Per consentire la scalabilità dell'applicazione, verranno creati gruppi di istanze gestite che useranno le istanze di frontend
e di backend
come modelli di istanza.
Un gruppo di istanze gestite (MIG, Managed Instance Group) contiene istanze identiche che puoi gestire come entità singole in zone singole. I gruppi di istanze gestite assicurano l'alta disponibilità delle app agendo proattivamente per far sì che le istanze siano disponibili, ossia che il loro stato sia IN ESECUZIONE. Utilizzerai i gruppi di istanze gestite per consentire alle istanze di frontend e di backend di fornire funzionalità di riparazione automatica, bilanciamento del carico, scalabilità automatica e aggiornamento in sequenza.
Crea il modello di istanza dall'istanza di origine
Per poter creare un gruppo di istanze gestite, devi prima creare un modello di istanza che costituirà la base per il gruppo. I modelli di istanza ti permettono di definire il tipo di macchina, l'immagine del disco di avvio o l'immagine del container, la rete e altre proprietà dell'istanza da utilizzare quando crei nuove istanze di VM. Puoi utilizzare i modelli di istanza per creare le istanze di un gruppo di istanze gestite o anche per creare singole istanze.
Per creare un modello di istanza, utilizza le istanze esistenti che avevi creato in precedenza.
- Innanzitutto, interrompi le due istanze:
- Quindi, crea un modello di istanza da ciascuna delle istanze di origine:
- Verifica che i modelli di istanza siano stati creati:
Output di esempio:
- Dopo aver creato i modelli di istanza, elimina la VM di
backend
per risparmiare spazio per le risorse:
- Digita e premi y quando richiesto.
Normalmente potresti eliminare anche la VM frontend
, ma la utilizzerai per aggiornare il modello di istanza più avanti nel lab.
Crea un gruppo di istanze gestite
- Quindi, crea due gruppi di istanze gestite, uno per il frontend e uno per il backend:
Questi gruppi di istanze gestite utilizzeranno i modelli di istanza e sono configurati in modo che in ogni gruppo vengano avviate due istanze. Le istanze sono denominate automaticamente in base alla stringa specificata mediante il parametro base-instance-name
, con l'aggiunta di caratteri scelti a caso.
- Per la tua applicazione, il microservizio
frontend
viene eseguito sulla porta 8080 e il microserviziobackend
viene eseguito sulla porta 8081 perorders
e sulla porta 8082 per products:
Poiché non sono porte standard, devi specificare le porte denominate per identificarle. Le porte denominate sono metadati costituiti da coppie chiave:valore che rappresentano il nome del servizio e la porta su cui è eseguito. Le porte denominate possono essere assegnate a un gruppo di istanze, per indicare che il servizio è disponibile su tutte le istanze del gruppo. Queste informazioni vengono utilizzate dal servizio di bilanciamento del carico HTTP che sarà configurato in seguito.
Configura la riparazione automatica
Per migliorare la disponibilità dell'applicazione stessa e per verificare che risponda, configura un criterio di riparazione automatica per i gruppi di istanze gestite.
Un criterio di riparazione automatica si affida a un controllo di integrità basato sull'applicazione per verificare che un'app risponda come previsto. Verificare che un'app risponda offre un controllo più preciso rispetto alla semplice verifica che l'istanza sia nello stato IN ESECUZIONE, che è il comportamento predefinito.
- Crea un controllo di integrità che ripari l'istanza se restituisce "unhealthy" tre volte consecutive per il
frontend
e ilbackend
:
- Crea una regola firewall per consentire ai probe del controllo di integrità di collegarsi ai microservizi sulle porte 8080-8081:
- Applica i controlli di integrità ai rispettivi servizi:
- Procedi con il lab per lasciare alla riparazione automatica il tempo di monitorare le istanze del gruppo. Alla fine del lab simulerai un errore per testare la riparazione automatica.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Attività 6: crea bilanciatori del carico
Per integrare i tuoi gruppi di istanze gestite, utilizza i bilanciatori del carico HTTP(S) per gestire il traffico verso i microservizi di frontend e backend e le mappature per inviare il traffico ai servizi di backend corretti in base alle regole di instradamento. In questo modo viene esposto un singolo IP con bilanciamento del carico per tutti i servizi.
Per scoprire di più sulle opzioni per il bilanciamento del carico disponibili in Google Cloud, consulta la Panoramica del bilanciamento del carico.
Crea il bilanciatore del carico HTTP(S)
Google Cloud offre molti tipi diversi di bilanciatori del carico. Per questo lab utilizzerai un bilanciatore del carico HTTP(S) per il traffico. Un bilanciatore del carico HTTP è così strutturato:
- Una regola di forwarding indirizza le richieste in arrivo a un Proxy HTTP di destinazione.
- Il Proxy HTTP di destinazione controlla ogni richiesta a fronte di una mappa di URL per determinare il servizio di backend appropriato per la richiesta.
- Il servizio di backend indirizza ogni richiesta a un backend appropriato in base alla capacità di servizio, alla zona e all'integrità dell'istanza dei backend che gli sono collegati. L'integrità di ciascuna istanza di backend viene verificata utilizzando un controllo di integrità HTTP. Se il servizio di backend è configurato in modo da utilizzare un controllo di integrità HTTPS o HTTP/2, la richiesta verrà criptata quando viene inviata all'istanza di backend.
- Le sessioni tra il bilanciatore del carico e l'istanza possono utilizzare il protocollo HTTP, HTTPS o HTTP/2. Se utilizzi HTTPS o HTTP/2, ogni istanza dei servizi di backend deve avere un certificato SSL.
- Crea i controlli di integrità che verranno utilizzati per stabilire quali istanze sono in grado di gestire il traffico per ciascun servizio:
- Crea i servizi di backend corrispondenti alla destinazione del traffico con bilanciamento del carico. I servizi di backend utilizzeranno i controlli di integrità e le porte denominate che hai creato:
- Aggiungi i servizi di backend del bilanciatore del carico:
- Crea una mappa URL. La mappa URL stabilisce quali URL sono indirizzati a quali servizi di backend:
- Crea un matcher di percorso per consentire l'instradamento dei percorsi
/api/orders
e/api/products
ai rispettivi servizi:
- Crea il proxy collegato alla mappa URL:
- Crea una regola di forwarding globale che collega un indirizzo IP pubblico e una porta al proxy:
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Aggiorna la configurazione
Ora che hai un nuovo indirizzo IP statico, aggiorna il codice sul frontend
in modo che punti a questo nuovo indirizzo anziché all'indirizzo temporaneo utilizzato in precedenza, che puntava all'istanza di backend
.
- In Cloud Shell, passa alla cartella
react-app
che contiene il file.env
in cui si trova la configurazione:
- Trova l'indirizzo IP del bilanciatore del carico:
Output di esempio:
- Torna all'editor di Cloud Shell e modifica di nuovo il file
.env
in modo che punti all'IP pubblico del bilanciatore del carico. [LB_IP] rappresenta l'Indirizzo IP esterno dell'istanza di backend determinata sopra.
-
Salva il file.
-
Aggiorna il codice del frontend ricreando la build di
react-app
:
- Copia il codice dell'applicazione nel tuo bucket:
Aggiorna le istanze di frontend
Ora che hai a disposizione codice e configurazione nuovi, devi fare in modo che le istanze di frontend del gruppo di istanze gestite eseguano il pull del nuovo codice.
Poiché le tue istanze eseguono il pull del codice all'avvio, puoi inviare un comando di riavvio in sequenza:
--max-unavailable
. Senza questo parametro, il comando manterrebbe attiva l'istanza mentre ne riavvia altre per assicurare la disponibilità. Ai fini del testing, per velocizzare le operazioni, specifica che la sostituzione deve avvenire immediatamente.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Testa il sito web
- Attendi tre minuti dopo l'invio del comando
rolling-action replace
per concedere alle istanze il tempo di essere elaborate, quindi verifica lo stato del gruppo di istanze gestite. Esegui il comando riportato di seguito per confermare che il servizio venga contrassegnato come HEALTHY:
- Aspetta finché i due servizi non vengono contrassegnati come HEALTHY.
Output di esempio:
Se, dopo che hai aspettato per qualche minuto, nessuna delle due istanze passa allo stato HEALTHY, significa che ci sono errori nella configurazione delle istanze del frontend che non consentono di accedervi sulla porta 8080. Per eseguire il test, vai alle istanze direttamente sulla porta 8080.
- Quando entrambi gli elementi vengono contrassegnati come HEALTHY nell'elenco, esci dal comando
watch
premendo Ctrl+C.
gcloud compute forwarding-rules list --global
Attività 7: gestisci la scalabilità in Compute Engine
Fin qui hai creato due gruppi di istanze gestite con due istanze ciascuno. Questa configurazione è totalmente funzionante, ma è una configurazione statica indipendentemente dal carico. Ora creerai un criterio di scalabilità automatica basato sull'utilizzo per scalare automaticamente ciascun gruppo di istanze gestite.
Ridimensiona automaticamente in base all'utilizzo
- Per creare un criterio di scalabilità automatica, esegui questo comando:
Questi comandi creano un gestore della scalabilità automatica sui gruppi di istanze gestite, che aggiunge automaticamente istanze se l'utilizzo supera il 60% e le rimuove quando l'utilizzo del bilanciatore del carico scende al di sotto del 60%.
Abilita la Rete CDN (Content Delivery Network)
Un'altra caratteristica che può essere utile per la scalabilità è l'abilitazione di un servizio di rete CDN (Content Delivery Network), per fornire funzionalità di memorizzazione nella cache per il frontend.
- Esegui il seguente comando sul servizio di frontend:
Quando un utente richiede i contenuti dal bilanciatore del carico HTTP(S), la richiesta arriva a un Google Front End (GFE) che prima cerca nella cache di Cloud CDN una risposta alla richiesta dell'utente. Se il GFE trova una risposta memorizzata nella cache, la invia all'utente. Questa situazione viene definita successo della cache.
Se il GFE non trova una risposta memorizzata nella cache per la richiesta, invia una richiesta direttamente al backend. Se la risposta alla richiesta può essere memorizzata nella cache, il GFE archivia nella cache di Cloud CDN, in modo che possa essere utilizzata per richieste successive.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Attività 8: aggiorna il sito web
Aggiorna il modello di istanza
I modelli di istanza esistenti non sono modificabili. Tuttavia, poiché le tue istanze sono stateless e tutta la configurazione viene eseguita tramite lo script di avvio, devi solo modificare il modello se vuoi cambiarne le impostazioni. Ora apporterai un semplice modifica per utilizzare un tipo di macchina più grande e distribuirla.
Completa i seguenti passaggi per:
-
Aggiornare l'istanza di
frontend
che funge da base per il modello di istanza. Per l'aggiornamento, inserisci un file nella versione aggiornata dell'immagine del modello di istanza, quindi aggiorna il modello di istanza, implementa il nuovo modello e poi verifica che il file esista nelle istanze del gruppo di istanze gestite. -
Modificare il tipo di macchina del modello di istanza, passando dal tipo di macchina
e2-standard-2
ae2-small
.
- Esegui il comando riportato di seguito per modificare il tipo di macchina dell'istanza di frontend:
- Crea il nuovo modello di istanza:
- Implementa il modello di istanza aggiornato nel gruppo di istanze gestite:
- Attendi tre minuti, quindi esegui il comando riportato di seguito per monitorare lo stato dell'aggiornamento:
L'operazione richiederà alcuni minuti.
Quando almeno un'istanza sarà nella condizione seguente:
- STATUS: RUNNING
- ACTION impostato su None
- INSTANCE_TEMPLATE: il nome del nuovo modello (fancy-fe-new)
-
Copia il nome di una delle macchine elencate per utilizzarlo nel prossimo comando.
-
Ctrl+C per uscire dal processo
watch
. -
Esegui il comando seguente per verificare se la macchina virtuale utilizza il nuovo tipo di macchina (e2-small), dove [VM_NAME] è l'istanza appena creata:
Output di esempio previsto:
Apporta modifiche al sito web
Scenario: il team di marketing ti ha chiesto di modificare la home page del sito. Secondo il team, dovrebbe essere più ricca di informazioni relative all'azienda e a ciò che commercializza.
Attività: aggiungi del testo alla home page per soddisfare la richiesta del team di marketing. Uno degli sviluppatori ha già creato le modifiche in un file denominato index.js.new
. Puoi semplicemente copiare questo file come index.js
per implementare le modifiche. Segui le istruzioni riportate sotto per apportare le modifiche appropriate.
- Esegui questi comandi per copiare il file aggiornato con il nome file corretto:
- Visualizza i contenuti del file per verificare le modifiche:
Il codice risultante dovrebbe avere l'aspetto seguente:
Hai aggiornato i componenti React, ma devi creare la build dell'app React per generare i file statici.
- Esegui il comando riportato di seguito per creare la build dell'app React e copiarla nella directory pubblica del monolite:
- Quindi esegui nuovamente il push di questo codice al bucket:
Esegui il push delle modifiche con sostituzioni in sequenza
- Ora forza la sostituzione di tutte le istanze per eseguire il pull dell'aggiornamento:
Nota: in questo esempio di sostituzione in sequenza, dichiari specificamente che tutte le macchine possono essere sostituite immediatamente attraverso il parametro --max-unavailable
. Senza questo parametro, il comando manterrebbe attiva una delle istanze mentre sostituisce le altre. Ai fini del testing, per velocizzare le operazioni, specifica che la sostituzione deve avvenire immediatamente. In un ambiente di produzione, l'utilizzo di un buffer permetterebbe al sito web di continuare a fornire le pagine mentre vengono eseguiti gli aggiornamenti.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
- Attendi tre minuti dopo l'invio del comando
rolling-action replace
per concedere alle istanze il tempo di essere elaborate, quindi verifica lo stato del gruppo di istanze gestite. Esegui il comando riportato di seguito per confermare che il servizio venga contrassegnato come HEALTHY:
- Attendi qualche istante affinché entrambi i servizi vengano visualizzati e passino allo stato HEALTHY.
Output di esempio:
-
Quando gli elementi vengono visualizzati nell'elenco con lo stato HEALTHY, esci dal comando
watch
premendo Ctrl+C. -
Vai al sito web tramite
http://[LB_IP]
dove [LB_IP] è l'IP_ADDRESS specificato per il bilanciatore del carico, che puoi trovare con il seguente comando:
Le modifiche apportate al nuovo sito web ora dovrebbero essere visibili.
Simula un errore
Per verificare che il controllo di integrità funzioni correttamente, accedi a un'istanza e interrompi i servizi.
- Per trovare il nome di un'istanza, esegui il comando seguente:
- Copia il nome di un'istanza, quindi esegui il comando riportato di seguito tramite Secure Shell nell'istanza, dove INSTANCE_NAME è una delle istanze elencate.
-
Digita "y" per confermare e premi Invio due volte per non utilizzare una password.
-
All'interno dell'istanza, utilizza
supervisorctl
per interrompere l'applicazione:
- Esci dall'istanza:
- Monitora le operazioni di riparazione:
Il completamento dell'operazione richiede alcuni minuti.
Cerca il seguente output di esempio:
Il gruppo di istanze gestite ha ricreato l'istanza per ripararla.
- Puoi anche andare su Menu di navigazione > Compute Engine > Istanze VM per effettuare il monitoraggio tramite la console.
Complimenti!
Hai eseguito il deployment del sito web, lo hai reso scalabile e lo hai aggiornato in Compute Engine Hai acquisito esperienza con Compute Engine, gruppi di istanze gestite, bilanciatori del carico e controlli di integrità.
Prossimi passi/Scopri di più
- Guarda il video del case study Hosting Scalable Web Applications on Google Cloud
Formazione e certificazione Google Cloud
… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.
Ultimo aggiornamento del manuale: 26 aprile 2024
Ultimo test del lab: 15 dicembre 2023
Copyright 2024 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.