Men-deploy server web warm yang dapat dipulihkan dengan Compute Engine dan Cloud Storage

Last reviewed 2021-06-23 UTC

Dokumen ini ditujukan untuk arsitek dan orang yang bekerja di tim operasi dan administratif. Dokumen ini menjelaskan contoh pola yang dapat digunakan untuk deployment Anda sendiri di Google Cloud.

Dalam arsitektur ini, load balancer mengarahkan traffic ke instance Compute Engine dalam grup instance terkelola yang menayangkan konten. Dalam pemadaman layanan, Anda akan memperbarui konfigurasi Load Balancer Aplikasi eksternal dan beralih ke situs statis di Cloud Storage.

Untuk men-deploy solusi ini, Anda memerlukan nama domain terdaftar yang Anda kontrol dan ingin digunakan dengan dokumen ini.

Dalam deployment produksi, situs Anda mungkin berisi lebih banyak file dan kode aplikasi tambahan di virtual machine (VM) grup instance terkelola Anda daripada yang ditampilkan dalam dokumen ini. Cloud Storage kemudian menghosting versi statis yang lebih terbatas dengan fungsi minimal. Dalam skenario warm failover, pengguna melihat situs terbatas ini hingga grup instance yang dikelola pulih dan dapat menyalurkan traffic untuk pengalaman situs web sepenuhnya.

Arsitektur

Dalam arsitektur ini, Anda men-deploy resource untuk menciptakan lingkungan seperti yang ditunjukkan pada gambar berikut:

Load balancer eksternal mengarahkan traffic ke grup instance terkelola dan pengguna akan melihat pengalaman situs lengkap.

Jika perlu melakukan failover, Anda perlu memperbarui konfigurasi load balancer untuk mengarahkan traffic ke Cloud Storage, seperti yang ditampilkan pada gambar berikut:

Load balancer kini mengarahkan pengguna ke situs statis yang dihosting di Cloud Storage yang menampilkan pengalaman yang lebih terbatas.

Pola failover warm ini menyeimbangkan biaya menjalankan grup instance terkelola lainnya di region berbeda yang hanya Anda gunakan saat region utama gagal. Biaya situs statis yang menggunakan Cloud Storage lebih rendah daripada menjalankan grup instance terkelola lainnya, tetapi ada sedikit keterlambatan saat Anda mengupdate konfigurasi load balancer di antara opsi hosting. Pengalaman situs yang terbatas di Cloud Storage lebih baik daripada situs yang tidak tersedia dan pengalaman pelanggan yang buruk.

Untuk pendekatan alternatif yang menggunakan Cloud DNS, bukan Load Balancer Aplikasi eksternal untuk mengontrol failover, lihat Men-deploy server web warm yang dapat dipulihkan menggunakan Cloud DNS dengan Compute Engine dan Cloud Storage. Pola ini berguna jika Anda memiliki, atau ingin menggunakan, Cloud DNS.

Untuk menjalankan aplikasi yang andal di Google Cloud, sebaiknya desain infrastruktur aplikasi Anda untuk menangani pemadaman layanan. Bergantung pada kebutuhan aplikasi dan bisnis, Anda mungkin memerlukan pola cold failover, warm failover, atau hot failover. Untuk mengetahui informasi selengkapnya tentang cara menentukan pendekatan terbaik untuk aplikasi Anda sendiri, lihat Panduan perencanaan pemulihan dari bencana.

Dokumen ini menggunakan server web Apache, dasar, tetapi pendekatan yang sama untuk deployment infrastruktur juga berlaku untuk lingkungan aplikasi lain yang perlu Anda buat.

Tujuan

  • Membuat grup instance terkelola regional dengan gambar VM kustom.
  • Membuat bucket Cloud Storage.
  • Membuat dan mengonfigurasi Load Balancer Aplikasi eksternal.
  • Uji failover server web warm dengan konfigurasi load balancer yang telah diperbarui.
  • Uji pemulihan dan failover dengan konfigurasi load balancer yang telah diperbarui.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud 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. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the Compute Engine API.

    Enable the API

  5. Menginstal Google Cloud CLI.
  6. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  9. Enable the Compute Engine API.

    Enable the API

  10. Menginstal Google Cloud CLI.
  11. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  12. Anda dapat menjalankan Google Cloud CLI di Konsol Google Cloudtanpa harus menginstal Google Cloud CLI. Untuk menjalankan gcloud CLI di Konsol Google Cloud, gunakan Cloud Shell.

Menyiapkan lingkungan

Pada bagian ini, Anda akan menentukan beberapa variabel untuk nama dan lokasi resource. Variabel ini digunakan oleh perintah Google Cloud CLI saat Anda men-deploy resource.

Dalam dokumen ini, kecuali jika dinyatakan lain, Anda memasukkan semua perintah di Cloud Shell atau lingkungan pengembangan lokal Anda.

  1. Ganti PROJECT_ID dengan project ID Anda: Jika diinginkan, berikan akhiran nama Anda sendiri untuk resource guna membantu menelusuri dan mengidentifikasi resource tersebut, seperti app.

    Tentukan dua region, seperti us-west1 dan us-west2, serta zona dalam salah satu region tersebut, seperti us-west1-a. Zona ini menentukan tempat VM dasar awal dibuat yang digunakan untuk membuat image bagi grup instance terkelola.

    Terakhir, tetapkan domain yang digunakan untuk situs statis Anda, seperti example.com.

    PROJECT_ID=PROJECT_ID
    NAME_SUFFIX=app
    REGION1=us-west1
    REGION2=us-west2
    ZONE=us-west1-a
    DOMAIN=example.com
    

Membuat VPC dan subnet

Untuk memberikan akses jaringan ke VM, Anda harus membuat Virtual Private Cloud (VPC) dan subnet. Karena memerlukan grup instance terkelola di dua region, Anda membuat satu subnet di setiap region. Untuk mengetahui informasi selengkapnya tentang keuntungan mode subnet kustom untuk mengelola rentang alamat IP yang digunakan di lingkungan Anda, lihat Menggunakan jaringan VPC mode kustom.

  1. Buat VPC dengan mode subnet kustom:

    gcloud compute networks create network-$NAME_SUFFIX --subnet-mode=custom
    
  2. Sekarang, buat dua subnet di VPC baru, satu untuk setiap region. Tentukan rentang alamat Anda sendiri, seperti 10.1.0.0/20 dan 10.2.0.0/20, yang sesuai dengan rentang jaringan Anda:

    gcloud compute networks subnets create \
        subnet-$NAME_SUFFIX-$REGION1 \
        --network=network-$NAME_SUFFIX \
        --range=10.1.0.0/20 \
        --region=$REGION1
    
    gcloud compute networks subnets create \
        subnet-$NAME_SUFFIX-$REGION2 \
        --network=network-$NAME_SUFFIX \
        --range=10.2.0.0/20 \
        --region=$REGION2
    

Membuat aturan firewall

Agar traffic jaringan dapat mengalir dengan benar di VPC, gunakan aturan firewall.

  1. Membuat aturan firewall untuk mengizinkan traffic web dan health check untuk load balancer dan grup instance terkelola:

    gcloud compute firewall-rules create allow-http-$NAME_SUFFIX \
        --network=network-$NAME_SUFFIX \
        --direction=INGRESS \
        --priority=1000 \
        --action=ALLOW \
        --rules=tcp:80 \
        --source-ranges=0.0.0.0/0 \
        --target-tags=http-server
    
    gcloud compute firewall-rules create allow-health-check-$NAME_SUFFIX \
        --network=network-$NAME_SUFFIX \
        --action=allow \
        --direction=ingress \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --target-tags=allow-health-check \
        --rules=tcp:80
    

    Aturan HTTP mengizinkan traffic ke VM mana pun tempat tag http-server diterapkan, dan dari sumber mana pun yang menggunakan rentang 0.0.0.0/0. Untuk aturan health check, rentang default pada Google Cloud ditetapkan untuk memungkinkan platform memeriksa status resource dengan benar.

  2. Guna mengizinkan traffic SSH untuk konfigurasi awal image VM dasar, buat cakupan aturan firewall ke lingkungan Anda menggunakan parameter --source-range. Anda mungkin perlu bekerja dengan tim jaringan untuk menentukan rentang sumber yang digunakan organisasi Anda.

    Ganti IP_ADDRESS_SCOPE dengan cakupan alamat IP Anda sendiri:

    gcloud compute firewall-rules create allow-ssh-$NAME_SUFFIX \
        --network=network-$NAME_SUFFIX \
        --direction=INGRESS \
        --priority=1000 \
        --action=ALLOW \
        --rules=tcp:22 \
        --source-ranges=IP_ADDRESS_SCOPE
    
  3. Setelah membuat aturan firewall, pastikan bahwa ketiga aturan tersebut telah ditambahkan:

    gcloud compute firewall-rules list \
        --project=$PROJECT_ID \
        --filter="NETWORK=network-$NAME_SUFFIX"
    

    Contoh output berikut menunjukkan bahwa tiga aturan telah dibuat dengan benar:

    NAME                    NETWORK      DIRECTION  PRIORITY  ALLOW
    allow-health-check-app  network-app  INGRESS    1000      tcp:80
    allow-http-app          network-app  INGRESS    1000      tcp:80
    allow-ssh-app           network-app  INGRESS    1000      tcp:22
    

Membuat dan mengonfigurasi image VM dasar

Untuk membuat VM identik yang di-deploy tanpa konfigurasi tambahan, gunakan image VM kustom. Gambar ini merekam konfigurasi OS dan Apache, serta digunakan untuk membuat setiap VM dalam grup instance terkelola pada langkah berikutnya.

Di VM, Anda membuat file index.html dasar di persistent disk dan memasangnya ke /var/www/example.com. File konfigurasi Apache di /etc/apache2/sites-available/example.com.conf menyalurkan konten web dari lokasi persistent disk yang terpasang.

Diagram berikut menunjukkan halaman HTML dasar yang disalurkan oleh Apache yang disimpan di persistent disk:

VM memiliki halaman HTML dasar yang tersimpan di persistent disk dengan file konfigurasi Apache untuk dimuat dari lokasi disk yang terpasang.

Anda membangun lingkungan ini pada langkah-langkah berikut.

  1. Buat VM dasar dengan persistent disk yang terpasang:

    gcloud compute instances create vm-base-$NAME_SUFFIX \
        --zone=$ZONE \
        --machine-type=n1-standard-1 \
        --subnet=subnet-$NAME_SUFFIX-$REGION1 \
        --tags=http-server \
        --image=debian-10-buster-v20210420 \
        --image-project=debian-cloud \
        --boot-disk-size=10GB \
        --boot-disk-type=pd-balanced \
        --boot-disk-device-name=vm-base-$NAME_SUFFIX \
        --create-disk=type=pd-ssd,name=disk-base-$NAME_SUFFIX,size=10GB,device-name=disk-base-$NAME_SUFFIX
    

    Anda menggunakan parameter yang ditentukan di awal dokumen ini untuk memberi nama VM dan terhubung ke subnet yang benar. Nama juga ditetapkan dari parameter untuk boot disk dan disk data.

  2. Untuk menginstal dan mengonfigurasi situs sederhana, hubungkan ke VM dasar menggunakan SSH:

    gcloud compute ssh vm-base-$NAME_SUFFIX --zone=$ZONE
    
  3. Dalam sesi SSH Anda ke VM, buat skrip untuk mengonfigurasi VM di editor pilihan Anda. Contoh berikut menggunakan Nano sebagai editor:

    nano configure-vm.sh
    

    Tempel skrip konfigurasi berikut ke dalam file:

    #!/bin/bash
    
    NAME_SUFFIX=app
    
    # Create directory for the basic website files
    sudo mkdir -p /var/www/example.com
    sudo chmod a+w /var/www/example.com
    sudo chown -R www-data: /var/www/example.com
    
    # Find the disk name, then format and mount it
    DISK_NAME="google-disk-base-$NAME_SUFFIX"
    DISK_PATH="$(find /dev/disk/by-id -name "${DISK_NAME}" | xargs -I '{}' readlink -f '{}')"
    
    sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard $DISK_PATH
    sudo mount -o discard,defaults $DISK_PATH /var/www/example.com
    
    # Install Apache
    sudo apt-get update && sudo apt-get -y install apache2
    
    # Write out a basic HTML file to the mounted persistent disk
    sudo tee -a /var/www/example.com/index.html >/dev/null <<'EOF'
    <!doctype html>
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a Compute Engine website with warm failover to Cloud Storage!</p>
    </body>
    </html>
    EOF
    
    # Write out an Apache configuration file
    sudo tee -a /etc/apache2/sites-available/example.com.conf >/dev/null <<'EOF'
    <VirtualHost *:80>
            ServerName www.example.com
    
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/example.com
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    EOF
    
    # Enable the Apache configuration file and reload service
    sudo a2dissite 000-default
    sudo a2ensite example.com.conf
    sudo systemctl reload apache2
    

    Perbarui variabel NAME_SUFFIX agar cocok dengan nilai yang ditetapkan di awal dokumen ini, seperti app.

  4. Tulis file dan keluar dari editor Anda. Misalnya, di Nano Anda menggunakan Ctrl-O untuk menulis file, lalu keluar dengan Ctrl-X.

  5. Jadikan skrip konfigurasi sebagai file yang dapat dieksekusi, lalu jalankan:

    chmod +x configure-vm.sh
    ./configure-vm.sh
    
  6. Keluar dari sesi SSH ke VM:

    exit
    
  7. Dapatkan alamat IP VM dan gunakan curl untuk melihat halaman web dasar:

    curl $(gcloud compute instances describe vm-base-$NAME_SUFFIX \
        --zone $ZONE \
        --format="value(networkInterfaces.accessConfigs.[0].natIP)")
    

    Situs dasar ditampilkan, seperti yang ditunjukkan dalam contoh output berikut:

    <!doctype html>
    
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a Compute Engine website with warm failover to Cloud Storage!</p>
    </body>
    </html>
    

    Langkah ini mengonfirmasi bahwa Apache dikonfigurasi dengan benar, dan halaman dimuat dari persistent disk yang terpasang. Di bagian berikut, Anda akan membuat image menggunakan VM dasar ini dan mengonfigurasi template instance dengan skrip startup.

Men-deploy resource Compute Engine

Pola warm failover menggunakan grup instance terkelola untuk menjalankan VM. Grup instance terkelola berjalan di dua region, dan setiap grup memantau kondisi VM. Jika terjadi pemadaman dan salah satu VM gagal, grup instance terkelola akan membuat ulang VM. Konfigurasi ini akan menghasilkan aplikasi yang sangat tersedia, bahkan tanpa failover warm ke situs statis di Cloud Storage.

  1. Sebelum dapat membuat image, Anda harus menghentikan VM:

    gcloud compute instances stop vm-base-$NAME_SUFFIX --zone=$ZONE
    
  2. Jalankan rangkaian perintah berikut untuk membuat image VM, template instance, dan grup instance terkelola:

    # Create the base VM images
    gcloud compute images create image-$NAME_SUFFIX \
        --source-disk=vm-base-$NAME_SUFFIX \
        --source-disk-zone=$ZONE
    
    gcloud compute images create image-disk-$NAME_SUFFIX \
        --source-disk=disk-base-$NAME_SUFFIX \
        --source-disk-zone=$ZONE
    
    # Create instance templates
    gcloud compute instance-templates create template-$NAME_SUFFIX-$REGION1 \
        --machine-type=n1-standard-1 \
        --subnet=projects/$PROJECT_ID/regions/$REGION1/subnetworks/subnet-$NAME_SUFFIX-$REGION1 \
        --region=$REGION1 \
        --tags=http-server \
        --metadata=^,@^startup-script=\!\#\ /bin/bash$'\n'echo\ UUID=\`blkid\ -s\ UUID\ -o\ value\ /dev/sdb\`\ /var/www/example.com\ ext4\ discard,defaults,nofail\ 0\ 2\ \|\ tee\ -a\ /etc/fstab$'\n'mount\ -a \
        --image=image-$NAME_SUFFIX \
        --create-disk=image=image-disk-$NAME_SUFFIX,auto-delete=yes
    
    gcloud compute instance-templates create template-$NAME_SUFFIX-$REGION2 \
        --machine-type=n1-standard-1 \
        --subnet=projects/$PROJECT_ID/regions/$REGION2/subnetworks/subnet-$NAME_SUFFIX-$REGION2 \
        --region=$REGION2 \
        --tags=http-server \
        --metadata=^,@^startup-script=\!\#\ /bin/bash$'\n'echo\ UUID=\`blkid\ -s\ UUID\ -o\ value\ /dev/sdb\`\ /var/www/example.com\ ext4\ discard,defaults,nofail\ 0\ 2\ \|\ tee\ -a\ /etc/fstab$'\n'mount\ -a \
        --image=image-$NAME_SUFFIX \
        --create-disk=image=image-disk-$NAME_SUFFIX,auto-delete=yes
    
    # Create a health check for VM instances
    gcloud compute health-checks create http http-basic-check-$NAME_SUFFIX \
        --port 80
    
    # Create the managed instance groups
    gcloud compute instance-groups managed create instance-group-$NAME_SUFFIX-$REGION1 \
        --template=template-$NAME_SUFFIX-$REGION1 \
        --size=2 \
        --region=$REGION1 \
        --health-check=http-basic-check-$NAME_SUFFIX
    
    gcloud compute instance-groups managed create instance-group-$NAME_SUFFIX-$REGION2 \
        --template=template-$NAME_SUFFIX-$REGION2 \
        --size=2 \
        --region=$REGION2 \
        --health-check=http-basic-check-$NAME_SUFFIX
    

Membuat dan mengonfigurasi load balancer

Agar pengguna dapat mengakses situs Anda, Anda harus mengizinkan traffic masuk ke VM yang berjalan di grup instance terkelola. Anda juga ingin mengalihkan traffic secara otomatis ke VM baru jika ada kegagalan zona dalam grup instance terkelola.

Pada bagian berikut, Anda akan membuat load balancer eksternal dengan layanan backend untuk traffic HTTP pada port 80, menggunakan health check yang telah dibuat pada langkah sebelumnya, dan memetakan alamat IP eksternal ke layanan backend.

Untuk informasi selengkapnya, lihat Cara menyiapkan load balancer HTTP eksternal sederhana.

  1. Membuat dan mengonfigurasi load balancer untuk aplikasi Anda:

    # Configure port rules for HTTP port 80
    gcloud compute instance-groups set-named-ports \
        instance-group-$NAME_SUFFIX-$REGION1 \
        --named-ports http:80 \
        --region $REGION1
    
    gcloud compute instance-groups set-named-ports \
        instance-group-$NAME_SUFFIX-$REGION2 \
        --named-ports http:80 \
        --region $REGION2
    
    # Create a backend service and add the managed instance groups to it
    gcloud compute backend-services create \
        web-backend-service-$NAME_SUFFIX \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check-$NAME_SUFFIX \
        --global
    
    gcloud compute backend-services add-backend \
        web-backend-service-$NAME_SUFFIX \
        --instance-group=instance-group-$NAME_SUFFIX-$REGION1 \
        --instance-group-region=$REGION1 \
        --global
    
    gcloud compute backend-services add-backend \
        web-backend-service-$NAME_SUFFIX \
        --instance-group=instance-group-$NAME_SUFFIX-$REGION2 \
        --instance-group-region=$REGION2 \
        --global
    
    # Create a URL map for the backend service
    gcloud compute url-maps create web-map-http-$NAME_SUFFIX \
        --default-service web-backend-service-$NAME_SUFFIX
    
    # Configure forwarding for the HTTP traffic
    gcloud compute target-http-proxies create \
        http-lb-proxy-$NAME_SUFFIX \
        --url-map web-map-http-$NAME_SUFFIX
    
    gcloud compute forwarding-rules create \
        http-content-rule-$NAME_SUFFIX \
        --global \
        --target-http-proxy=http-lb-proxy-$NAME_SUFFIX \
        --ports=80
    
  2. Dapatkan alamat IP aturan penerusan untuk traffic web:

    IP_ADDRESS=$(gcloud compute forwarding-rules describe http-content-rule-$NAME_SUFFIX \
        --global \
        --format="value(IPAddress)")
    
  3. Gunakan curl, atau buka browser web Anda, untuk melihat situs menggunakan alamat IP load balancer dari langkah sebelumnya:

    curl $IP_ADDRESS
    

    Load balancer memerlukan waktu beberapa menit untuk menyelesaikan deployment dan mengarahkan traffic ke backend dengan benar. Error HTTP 404 akan ditampilkan jika load balancer masih di-deploy. Jika perlu, tunggu beberapa menit dan coba akses situs lagi.

    Situs dasar ditampilkan, seperti yang ditunjukkan dalam contoh output berikut:

    <!doctype html>
    
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a Compute Engine website with warm failover to Cloud Storage!</p>
    </body>
    </html>
    

Membuat dan mengonfigurasi bucket penyimpanan

Cloud Storage digunakan untuk menyimpan file situs statis. Dalam contoh dasar ini, Anda membuat satu file dengan teks yang sedikit berbeda dari yang ada di VM.

Dalam deployment produksi, situs Anda mungkin berisi lebih banyak file dan kode aplikasi tambahan pada VM grup instance terkelola Anda daripada yang ditunjukkan dalam dokumen ini. Versi statis yang dihosting di Cloud Storage sering kali merupakan versi yang lebih terbatas yang menyediakan fungsionalitas minimal. Dalam skenario warm failover situs terbatas dari Cloud Storage ini ditampilkan sampai grup instance terkelola pulih dan dapat menyalurkan traffic untuk pengalaman situs lengkap.

  1. Verifikasi domain yang ingin digunakan dengan bucket Cloud Storage.

  2. Buat bucket Cloud Storage agar sesuai dengan nama domain yang Anda miliki dan ingin digunakan:

    gsutil mb gs://static-web.$DOMAIN
    

    Variabel DOMAIN yang ditentukan pada awal dokumen ini digunakan, seperti example.com. Contoh ini menyimpan file statis di static-web.example.com.

  3. Buat file lokal yang Anda salin ke bucket Cloud Storage pada langkah berikutnya:

    cat <<EOF > index.html
    <!doctype html>
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a test static web server with warm failover from Cloud Storage!</p>
    </body>
    </html>
    EOF
    
  4. Upload file HTML dasar ke bucket Cloud Storage:

    gsutil cp index.html gs://static-web.$DOMAIN
    
  5. Untuk mengizinkan pengguna melihat konten web statis, tetapkan izin yang sesuai di bucket Cloud Storage:

    gsutil iam ch allUsers:objectViewer gs://static-web.$DOMAIN
    
  6. Konfigurasikan bucket Cloud Storage untuk menayangkan file index.html sebagai halaman web default:

    gsutil web set -m index.html gs://static-web.$DOMAIN
    

Menambahkan bucket Cloud Storage ke load balancer

Dengan bucket Cloud Storage yang dibuat dan dikonfigurasi untuk menghosting konten web statis, load balancer memerlukan informasi tentang cara mengarahkan traffic ke dalamnya.

Pada bagian Membuat dan mengonfigurasi load balancer, Anda membuat layanan backend untuk grup instance terkelola. Layanan backend memiliki peta URL, dan proxy target HTTP membantu mengarahkan pengguna melalui load balancer ke VM.

Untuk bersiap mengarahkan traffic ke bucket Cloud Storage, konfigurasikan load balancer dengan backend dan peta URL baru untuk bucket penyimpanan. Jika perlu melakukan failover, perbarui load balancer untuk menggunakan konfigurasi ini.

  1. Tambahkan backend untuk bucket Cloud Storage:

    gcloud compute backend-buckets create \
        web-bucket-$NAME_SUFFIX \
        --gcs-bucket-name=static-web.$DOMAIN
    
  2. Buat peta URL yang memungkinkan traffic mengalir ke backend:

    gcloud compute url-maps create \
        web-map-http-bucket-$NAME_SUFFIX \
        --default-backend-bucket=web-bucket-$NAME_SUFFIX
    
  3. Tinjau deployment resource sebelum menyimulasikan kegagalan zona. Semua resource telah dibuat untuk mendukung lingkungan, seperti yang ditunjukkan pada gambar berikut:

    Load balancer eksternal mengarahkan traffic ke grup instance terkelola dan pengguna akan melihat pengalaman situs lengkap.

    • Load balancer mengarahkan traffic ke dua grup instance terkelola. Setiap grup instance terkelola berisi dua VM yang menjalankan situs dasar.
    • Bucket Cloud Storage dikonfigurasi untuk menghosting halaman statis jika terjadi gangguan pada grup instance terkelola.
    • Load balancer dikonfigurasi untuk menggunakan situs statis di Cloud Storage tetapi saat ini tidak mengarahkan traffic ke bucket penyimpanan.

Gagal membuka bucket Cloud Storage

Dalam lingkungan nyata, Anda mungkin mendapatkan pemberitahuan menggunakan Cloud Monitoring atau solusi pemantauan lainnya saat ada masalah dengan grup instance terkelola. Pemberitahuan ini akan meminta manusia memahami cakupan kegagalan sebelum Anda memperbarui load balancer untuk mengalihkan traffic ke situs statis yang dihosting Cloud Storage. Alternatifnya adalah menggunakan solusi pemantauan untuk otomatis merespons pemadaman layanan dengan grup instance terkelola.

Jika Anda gagal, Load Balancer Aplikasi eksternal akan mengarahkan traffic ke situs statis yang dihosting Cloud Storage, seperti yang ditunjukkan pada gambar berikut:

Load balancer kini mengarahkan pengguna ke situs statis yang dihosting di Cloud Storage dan menampilkan pengalaman yang lebih terbatas.

Saat Anda atau solusi pemantauan Anda menentukan tindakan yang paling sesuai adalah mengupdate load balancer untuk mengarahkan traffic ke bucket penyimpanan, perbarui target proxy HTTP untuk menggunakan peta URL yang Anda buat di bagian sebelumnya. Dalam dokumen ini, Anda akan memperbarui load balancer secara manual untuk mengalihkan traffic ke situs statis yang dihosting Cloud Storage.

  1. Perbarui target proxy HTTP yang ada agar dapat menggunakan peta URL untuk bucket Cloud Storage:

    gcloud compute target-http-proxies update \
        http-lb-proxy-$NAME_SUFFIX \
        --url-map=web-map-http-bucket-$NAME_SUFFIX
    
  2. Sekarang gunakan curl, atau buka browser web Anda, untuk mengakses alamat IP load balancer:

    curl $IP_ADDRESS
    

    Situs statis dari Cloud Storage ditampilkan, seperti ditunjukkan dalam contoh output berikut:

    <!doctype html>
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a test static web server with warm failover from Cloud Storage!</p>
    </body>
    </html>
    

    Mungkin perlu waktu beberapa menit bagi load balancer untuk memperbarui konfigurasi dan mengarahkan traffic ke bucket Cloud Storage dengan benar. Jika perlu, tunggu beberapa menit dan coba akses situs lagi.

Gagal kembali ke grup instance terkelola

Setelah masalah pada grup instance terkelola teratasi, Anda dapat gagal kembali ke konten dari grup instance terkelola yang di-load balanced dengan memperbarui lagi konfigurasi peta URL. Sekali lagi, manusia mungkin membuat keputusan ini menggunakan insight Cloud Monitoring untuk kondisi grup instance terkelola. Atau, Anda dapat menggunakan otomatisasi untuk merespons kondisi grup instance terkelola yang pulih. Dalam dokumen ini, Anda akan memperbarui konfigurasi load balancer secara manual.

  1. Perbarui target proxy HTTP untuk menggunakan kembali peta URL untuk grup instance terkelola:

    gcloud compute target-http-proxies update \
        http-lb-proxy-$NAME_SUFFIX \
        --url-map=web-map-http-$NAME_SUFFIX
    
  2. Gunakan curl lagi, atau buka browser web Anda, untuk mengakses alamat IP load balancer:

    curl $IP_ADDRESS
    

    Mungkin perlu waktu beberapa menit bagi load balancer untuk memperbarui konfigurasi dan mengarahkan traffic kembali dengan benar ke grup instance terkelola. Jika diperlukan, tunggu beberapa menit dan coba akses situs lagi.

    Situs utama dari grup instance terkelola ditampilkan, seperti yang ditunjukkan dalam contoh output berikut:

    <!doctype html>
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        p>Welcome to a Compute Engine website with warm failover to Cloud Storage!</p>
    </body>
    </html>
    

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.

Untuk menghapus masing-masing resource yang dibuat dalam dokumen ini, selesaikan langkah-langkah berikut:

  1. Hapus bucket Cloud Storage:

    gsutil rm -r gs://static-web.$DOMAIN
    
  2. Hapus konfigurasi load balancer:

    gcloud compute forwarding-rules delete \
        http-content-rule-$NAME_SUFFIX --global --quiet
    
    gcloud compute target-http-proxies delete \
        http-lb-proxy-$NAME_SUFFIX --quiet
    
    gcloud compute url-maps delete web-map-http-$NAME_SUFFIX --quiet
    
    gcloud compute url-maps delete web-map-http-bucket-$NAME_SUFFIX --quiet
    
    gcloud compute backend-services delete \
        web-backend-service-$NAME_SUFFIX --global --quiet
    
    gcloud compute backend-buckets delete web-bucket-$NAME_SUFFIX --quiet
    
  3. Hapus grup instance terkelola dan health check:

    gcloud compute instance-groups managed delete \
        instance-group-$NAME_SUFFIX-$REGION1 \
        --region=$REGION1 --quiet
    
    gcloud compute instance-groups managed delete \
        instance-group-$NAME_SUFFIX-$REGION2 \
        --region=$REGION2 --quiet
    
    gcloud compute health-checks delete http-basic-check-$NAME_SUFFIX --quiet
    
  4. Hapus template instance, image, VM dasar, dan persistent disk:

    gcloud compute instance-templates delete \
        template-$NAME_SUFFIX-$REGION1 --quiet
    
    gcloud compute instance-templates delete \
        template-$NAME_SUFFIX-$REGION2 --quiet
    
    gcloud compute images delete image-$NAME_SUFFIX --quiet
    
    gcloud compute images delete image-disk-$NAME_SUFFIX --quiet
    
    gcloud compute instances delete vm-base-$NAME_SUFFIX \
        --zone=$ZONE --quiet
    
  5. Hapus aturan Firewall

    gcloud compute firewall-rules delete \
        allow-health-check-$NAME_SUFFIX --quiet
    
    gcloud compute firewall-rules delete \
        allow-ssh-$NAME_SUFFIX --quiet
    
    gcloud compute firewall-rules delete \
        allow-http-$NAME_SUFFIX --quiet
    
  6. Hapus subnet dan VPC.

    gcloud compute networks subnets delete \
        subnet-$NAME_SUFFIX-$REGION1 --region=$REGION1 --quiet
    
    gcloud compute networks subnets delete \
        subnet-$NAME_SUFFIX-$REGION2 --region=$REGION2 --quiet
    
    gcloud compute networks delete network-$NAME_SUFFIX --quiet
    

Langkah selanjutnya