Introduzione a Java su Compute Engine

Questo tutorial mostra come iniziare a utilizzare Compute Engine. Segui questo tutorial eseguendo il deployment di un'app web Java di Hello World in Compute Engine. Per iniziare a utilizzare App Engine, consulta l'ambiente standard di App Engine.

Obiettivi

  • Utilizza Cloud Shell per scaricare un'app Hello World di esempio ed eseguirne il deployment.
  • Esegui il deployment di un'app Hello World di esempio in una singola istanza Compute Engine.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud possono essere idonei a una prova senza costi aggiuntivi.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API Compute Engine.

    Abilita l'API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API Compute Engine.

    Abilita l'API

  8. In Google Cloud Console, apri l'app in Cloud Shell.

    Vai a Cloud Shell

    Cloud Shell fornisce l'accesso tramite riga di comando alle tue risorse cloud direttamente dal browser. Apri Cloud Shell nel browser e fai clic su Procedi per scaricare il codice di esempio e modificarlo nella directory dell'applicazione.

  9. In Cloud Shell, configura l'interfaccia a riga di comando gcloud in modo da utilizzare il tuo nuovo progetto Google Cloud:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID
    

Esecuzione dell'app in Cloud Shell

  1. In Cloud Shell, avvia un server web locale:

    mvn -Plocal clean jetty:run-exploded -DprojectID=YOUR-PROJECT-ID
    
  2. In Cloud Shell, fai clic su Anteprima web , e seleziona Anteprima sulla porta 8080. Si apre una nuova finestra con l'app in esecuzione.

    Nel browser web vedi alcuni testi Hello World, pubblicati dalla tua macchina locale.

  3. Quando è tutto pronto per andare avanti, interrompi il server web locale premendo Ctrl+C in Cloud Shell.

Distribuzione su una singola istanza

Questa sezione ti spiega come eseguire una singola istanza della tua app su Compute Engine.

Deployment di istanze singole.

Da Cloud Shell, puoi eseguire il deployment in una singola macchina virtuale (VM) di istanza Compute Engine che esegue la tua app.

Usa uno script di avvio per inizializzare un'istanza

È necessario un modo per indicare all'istanza di scaricare ed eseguire il codice. Un'istanza può avere uno script di avvio in esecuzione ogni volta che viene avviata o riavviata.

Uno script di avvio viene eseguito all'avvio di un'istanza.

set -e
set -v

# Talk to the metadata server to get the project id
PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")

echo "Project ID: ${PROJECTID}"

# Install dependencies from apt
apt-get install -yq openjdk-11-jdk git maven

mvn --version

# Jetty Setup
mkdir -p /opt/jetty/temp
mkdir -p /var/log/jetty

# Get Jetty
curl -L https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.13.v20181111/jetty-distribution-9.4.13.v20181111.tar.gz -o jetty9.tgz
tar xf jetty9.tgz  --strip-components=1 -C /opt/jetty

# Add a Jetty User
useradd --user-group --shell /bin/false --home-dir /opt/jetty/temp jetty

cd /opt/jetty
# Add running as "jetty"
java -jar /opt/jetty/start.jar --add-to-startd=setuid
cd /

# Clone the source repository.
git clone https://github.com/GoogleCloudPlatform/getting-started-java
cd getting-started-java/gce

# Build the .war file and rename.
# very important - by renaming the war to root.war, it will run as the root servlet.
mvn clean package -q
mv target/getting-started-gce-1.0-SNAPSHOT.war /opt/jetty/webapps/root.war

# Make sure "jetty" owns everything.
chown --recursive jetty /opt/jetty

# Configure the default paths for the Jetty service
cp /opt/jetty/bin/jetty.sh /etc/init.d/jetty
echo "JETTY_HOME=/opt/jetty" > /etc/default/jetty
{
  echo "JETTY_BASE=/opt/jetty"
  echo "TMPDIR=/opt/jetty/temp"
  echo "JAVA_OPTIONS=-Djetty.http.port=80"
  echo "JETTY_LOGS=/var/log/jetty"
} >> /etc/default/jetty

# Reload daemon to pick up new service
systemctl daemon-reload

# Install logging monitor. The monitor will automatically pickup logs sent to syslog.
curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh
sudo bash add-logging-agent-repo.sh --also-install

service google-fluentd restart &

service jetty start
service jetty check

echo "Startup Complete"

Lo script di avvio esegue queste attività:

  • Installa Java 11 e ne imposta la versione predefinita.

  • Installa e configura Jetty.

  • Copia il file Java WAR dal bucket Cloud Storage in Jetty's webapps e lo rinomina root.war. Questo la rende il servlet principale, quindi non ha bisogno di essere nominato nell'URL.

  • Installa l'agente Cloud Logging e lo configura per monitorare i log dell'app. Ciò significa che il logging configurato nei passaggi precedenti di questo tutorial viene caricato come se utilizzassi l'ambiente flessibile di App Engine.

Creare e configurare un'istanza di Compute Engine

  1. Crea un'istanza Compute Engine:

    gcloud compute instances create my-app-instance 
    --image-family=debian-10
    --image-project=debian-cloud
    --machine-type=g1-small
    --scopes userinfo-email,cloud-platform
    --metadata-from-file startup-script=gce/startup-script.sh
    --zone YOUR_ZONE
    --tags http-server
    Sostituisci YOUR_ZONE con una zona di sviluppo, ad esempio us-central1-a. Per maggiori informazioni su aree geografiche e zone, consulta Area geografica e aree geografiche.

    Viene creata una nuova istanza, consente l'accesso ai servizi Google Cloud ed esegue lo script di avvio. Il nome dell'istanza è my-app-instance.

  2. Verifica lo stato di avanzamento della creazione dell'istanza:

    gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
    

    Una volta completato lo script di avvio, viene visualizzato il seguente messaggio:

    startup-script: INFO Finished running startup scripts.
    
  3. Crea una regola firewall per consentire il traffico nell'istanza:

    gcloud compute firewall-rules create default-allow-http-80 \
        --allow tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --target-tags http-server \
        --description "Allow port 80 access to http-server"
    

  4. Ottieni l'indirizzo IP esterno dell'istanza:

    gcloud compute instances list
    
  5. Per visualizzare la tua app, inserisci questo URL nel browser:

    http://YOUR_INSTANCE_IP
    

    Sostituisci YOUR_INSTANCE_IP con l'indirizzo IP esterno dell'istanza.

Gestisci e monitora un'istanza

Puoi utilizzare Cloud Console per monitorare e gestire l'istanza.

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Nell'elenco delle istanze di macchine virtuali, fai clic su SSH nella riga dell'istanza a cui vuoi connetterti.
  3. Per visualizzare tutti i log generati dalle risorse Compute Engine, vai alla pagina Esplora log. Vai a Esplora log

    Cloud Logging è configurato automaticamente per raccogliere i log da vari servizi comuni, tra cui syslog.

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Eliminare le singole risorse

gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all
gcloud compute firewall-rules delete default-allow-http-80

Passaggi successivi