Mulai menggunakan Java di Compute Engine

Tutorial ini menunjukkan cara memulai Compute Engine. Ikuti tutorial ini dengan men-deploy aplikasi web Java Hello World ke Compute Engine. Untuk mendapatkan bantuan memulai App Engine, lihat lingkungan standar App Engine.

Tujuan

  • Gunakan Cloud Shell untuk mendownload dan men-deploy aplikasi contoh Hello World.
  • Deploy aplikasi sampel Hello World ke satu instance Compute Engine.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Di konsol Google Cloud , buka aplikasi di Cloud Shell.

    Buka Cloud Shell

    Cloud Shell menyediakan akses command line ke resource cloud Anda langsung dari browser.

  9. Jika Anda setuju untuk meng-clone repositori, klik Confirm untuk mendownload kode contoh dan beralih ke direktori aplikasi.

  10. Di Cloud Shell, konfigurasikan gcloud CLI untuk menggunakan project Google Cloud baru Anda:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Menjalankan aplikasi di Cloud Shell

  1. Di Cloud Shell, mulai server web lokal:

    mvn -Plocal clean jetty:run-exploded -DprojectID=YOUR-PROJECT-ID
    
  2. Di Cloud Shell, klik Pratinjau web , lalu pilih Pratinjau di port 8080. Tindakan ini akan membuka jendela baru dengan aplikasi yang sedang berjalan.

    Di browser web, Anda akan melihat beberapa teks Hello World, yang ditayangkan dari komputer lokal Anda.

  3. Jika Anda sudah siap untuk melanjutkan, hentikan server web lokal dengan menekan Control+C di Cloud Shell.

Men-deploy ke instance tunggal

Bagian ini akan memandu Anda menjalankan satu instance aplikasi di Compute Engine.

Deployment instance tunggal.

Dari Cloud Shell, Anda dapat men-deploy ke satu virtual machine (VM) instance Compute Engine yang menjalankan aplikasi Anda.

Menggunakan skrip startup untuk menginisialisasi instance

Anda memerlukan cara untuk menginstruksikan instance Anda agar mendownload dan menjalankan kode Anda. Instance dapat memiliki skrip startup yang berjalan setiap kali instance dimulai atau dimulai ulang.

Skrip startup berjalan saat instance pertama kali melakukan booting.

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"

Skrip startup akan melakukan tugas-tugas berikut:

  • Menginstal Java 11 dan menjadikannya versi default.

  • Menginstal dan mengonfigurasi Jetty.

  • Menyalin file WAR Java dari bucket Cloud Storage ke webapps Jetty dan mengganti namanya menjadi root.war. Hal ini menjadikannya servlet root, sehingga tidak perlu diberi nama di URL.

  • Menginstal agen Cloud Logging dan mengonfigurasinya untuk memantau log aplikasi. Artinya, logging yang dikonfigurasi pada langkah-langkah sebelumnya dalam tutorial ini diupload seolah-olah Anda menggunakan lingkungan fleksibel App Engine.

Membuat dan mengonfigurasi instance Compute Engine

  1. Buat instance 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
    Ganti YOUR_ZONE dengan zona pengembangan, misalnya us-central1-a. Untuk mengetahui informasi selengkapnya tentang region dan zona, lihat Geografi dan region.

    Tindakan ini akan membuat instance baru, mengizinkannya mengakses layanan Google Cloud, dan menjalankan skrip startup Anda. Nama instance-nya adalah my-app-instance.

  2. Periksa progres pembuatan instance:

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

    Setelah skrip startup selesai, Anda akan melihat pesan berikut:

    startup-script: INFO Finished running startup scripts.
    
  3. Buat aturan firewall untuk mengizinkan traffic ke instance Anda:

    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. Dapatkan alamat IP eksternal instance Anda:

    gcloud compute instances list
    
  5. Untuk melihat aplikasi Anda berjalan, masukkan URL ini di browser Anda:

    http://YOUR_INSTANCE_IP
    

    Ganti YOUR_INSTANCE_IP dengan alamat IP eksternal instance Anda.

Mengelola dan memantau instance

Anda dapat menggunakan konsol Google Cloud untuk memantau dan mengelola instance.

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

  2. Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.
  3. Untuk melihat semua log yang dihasilkan oleh resource Compute Engine Anda, buka halaman Logs Explorer.

    Buka Logs Explorer

    Cloud Logging otomatis dikonfigurasi untuk mengumpulkan log dari berbagai layanan umum, termasuk syslog.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. Di Konsol Google Cloud , buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource satu per satu

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

Langkah berikutnya