Menyiapkan VM Compute Engine menggunakan deployment Envoy otomatis

Sebelum mengikuti petunjuk dalam panduan ini, tinjau Menyiapkan penyiapan Traffic Director dan pastikan Anda telah menyelesaikan tugas prasyarat yang dijelaskan dalam dokumen tersebut. Dokumen ini berlaku untuk API lama. Jika Anda melakukan deployment dengan API pemilihan rute layanan baru, yang sedang dalam tahap pratinjau, baca bagian Penyiapan Traffic Director untuk proxy Envoy dengan layanan HTTP

Panduan ini menunjukkan cara men-deploy bidang data secara otomatis yang terdiri dari proxy file bantuan Envoy, mengonfigurasinya menggunakan Traffic Director, dan memverifikasi penyiapan Anda untuk memastikannya berfungsi dengan benar. Proses ini mencakup hal berikut:

  1. Mengaktifkan Cloud OS Config API.
  2. Membuat layanan pengujian.
  3. Men-deploy bidang data sederhana di Compute Engine menggunakan proxy Envoy (Envoy versi 1.18.4, yang hanya mendukung xDS v3).
  4. Menyiapkan Traffic Director menggunakan API Compute Engine, yang memungkinkan Traffic Director mengonfigurasi proxy file bantuan Envoy Anda.
  5. Login ke VM yang menjalankan proxy Envoy dan kirim permintaan ke backend load balancing melalui proxy Envoy.

Contoh konfigurasi dalam dokumen ini adalah untuk tujuan demonstrasi. Untuk lingkungan produksi, Anda mungkin perlu men-deploy komponen tambahan, berdasarkan lingkungan dan persyaratan Anda.

Mengaktifkan Cloud OS Config API

Pastikan Anda mengaktifkan Cloud OS Config API. Jika tidak melakukannya, Anda tidak dapat menginstal komponen yang diperlukan di VM.

Untuk melakukan ini:

Konsol

  1. Di Konsol Google Cloud, buka APIs & services.
    Buka halaman API Library
  2. Pilih project yang benar.
  3. Di kotak penelusuran, masukkan Cloud OS Config API dan tekan Enter.
  4. Pilih Cloud OS Config API.
  5. Klik Enable.

gcloud

gcloud services enable osconfig.googleapis.com

Membuat layanan pengujian Hello World

Bagian ini menunjukkan cara membuat layanan pengujian sederhana yang menampilkan nama host VM yang menayangkan permintaan dari klien. Layanan pengujian ini sederhana; layanan ini merupakan server web yang di-deploy di seluruh grup instance terkelola Compute Engine.

Membuat template instance untuk layanan pengujian Hello World

Template instance yang Anda buat mengonfigurasi server web apache2 contoh menggunakan parameter startup-script.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Templates.

    Buka Template Instance

  2. Klik Create instance template.
  3. Di kolom, masukkan informasi berikut:
    • Name: td-demo-hello-world-template
    • Boot disk: Pilih sistem operasi dan versinya.
    • Akun layanan: Akun layanan default Compute Engine
    • Cakupan akses: Izinkan akses penuh ke semua Cloud API
  4. Klik Management, Security, Disks, Networking, Sole Tenancy. 1 Di tab Networking, di kolom Tag jaringan, tambahkan tag td-http-server.
  5. Di tab Management, salin skrip berikut ke kolom Startup Script.

    #!/bin/bash
    sudo apt-get update -y
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
    
  6. Klik Create.

gcloud

Anda dapat memilih di antara banyak versi sistem operasi. Contoh ini menggunakan nilai default Debian 10.

Untuk membuat template instance:

gcloud compute instance-templates create td-demo-hello-world-template \
  --machine-type=n1-standard-1 \
  --boot-disk-size=20GB \
  --image-family=debian-10  \
  --image-project=debian-cloud \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --tags=td-http-server \
  --metadata=startup-script="#! /bin/bash
sudo apt-get update -y
sudo apt-get install apache2 -y
sudo service apache2 restart
sudo mkdir -p /var/www/html/
echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"

Membuat grup instance terkelola untuk layanan Hello World

Di bagian ini, Anda akan menetapkan bahwa grup instance terkelola selalu memiliki dua instance layanan pengujian. Ini adalah untuk tujuan demonstrasi. Traffic Director mendukung grup instance terkelola dengan penskalaan otomatis.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Groups.

    Buka halaman Instance Groups

  2. Klik Create grup instance.
  3. Pilih New managed instance group (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
  4. Masukkan td-demo-hello-world-mig untuk nama grup instance terkelola, lalu pilih zona us-central1-a.
  5. Di bagian Instance template, pilih td-demo-hello-world-template, yang merupakan template instance yang Anda buat.
  6. Di bagian Autoscaling mode, pilih Off:do not autoscale.
  7. Di bagian Maximum number of instances, tentukan minimal dua instance sebagai jumlah instance yang ingin Anda buat dalam grup.
  8. Klik Create.

gcloud

Gunakan gcloud CLI untuk membuat grup instance terkelola dengan template instance yang Anda buat sebelumnya.

gcloud compute instance-groups managed create td-demo-hello-world-mig \
  --zone us-central1-a \
  --size=2 \
  --template=td-demo-hello-world-template

Membuat template instance dan grup instance terkelola tempat Envoy di-deploy

Gunakan petunjuk di bagian ini untuk membuat template instance dan grup instance terkelola untuk Traffic Director dengan proxy Envoy yang di-deploy secara otomatis. Grup instance terkelola membuat VM backend baru dengan menggunakan penskalaan otomatis.

Komponen software yang berjalan di VM Anda

Komponen berikut diinstal pada VM Anda saat Anda membuat template instance dengan --service-proxy=enabled.

  • Proxy Envoy, yang dikonfigurasi oleh Traffic Director, didownload dari bucket Cloud Storage khusus. Bucket ini berisi build proxy Envoy yang disediakan Google.
  • Agen proxy layanan, yang menginisialisasi proxy Envoy dan komponen proxy. Agen proxy layanan menyiapkan intersepsi traffic dan memantau kondisi proxy Envoy saat VM berjalan. Agen proxy layanan juga didownload dari bucket Cloud Storage.

Satu-satunya versi Envoy yang tersedia adalah biner Envoy terbaru yang dihosting di lokasi Cloud Storage khusus. Versi Envoy ini didukung di Compute Engine Debian, CentOS 7/8, dan RHEL 7/8. Selama autohealing dan peningkatan skala, grup instance terkelola menginstal Envoy versi terbaru di VM. Dalam beberapa kasus, versi ini mungkin lebih baru daripada Envoy yang di-deploy ke instance VM yang dibuat sebelumnya. Hal ini dapat mengakibatkan inkonsistensi pada versi yang diinstal di seluruh VM dalam grup instance terkelola. Versi yang tidak konsisten tersebut berfungsi bersama dengan benar. Jika ada update keamanan pada Envoy, sebaiknya Anda mengupgrade grup instance terkelola menggunakan rolling replace.

Membuat template instance

Template instance menentukan konfigurasi instance VM yang dibuat dalam grup instance terkelola. Tanda yang Anda teruskan ke template instance akan menginstal Envoy dan mengonfigurasi instance VM Anda agar siap untuk Traffic Director.

Anda dapat menggunakan Debian 10/11, CentOS 7/8, atau RHEL 7/8 untuk image boot disk di template instance.

Untuk membuat template instance seperti itu:

  gcloud compute instance-templates create td-vm-template-auto \
    --image-family=[ debian-10 | centos-7 | centos-8 | rhel-7 | rhel-8 ]  \
    --image-project=[ debian-cloud | centos-cloud |rhel-cloud ] \
    --service-proxy=enabled
 

Untuk menyesuaikan deployment Envoy Anda, lihat Panduan referensi deployment Envoy Otomatis.

Membuat grup instance terkelola

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Groups.

    Buka Instance Groups

  2. Klik Buat grup instance.
  3. Masukkan td-vm-mig-us-central1 untuk nama grup instance terkelola, lalu pilih zona us-central1-a.
  4. Di bagian Group type, pilih Managed instance group.
  5. Di bagian Instance template, pilih td-vm-template-auto, template instance yang Anda buat.
  6. Tentukan 2 sebagai jumlah instance yang ingin Anda buat dalam grup.
  7. Klik Buat untuk membuat grup baru.

gcloud

Gunakan gcloud CLI untuk membuat grup instance terkelola dengan template instance yang Anda buat sebelumnya.

 gcloud compute instance-groups managed create td-vm-mig-us-central1 \
    --zone us-central1-a --size=2 --template=td-vm-template-auto

Mengonfigurasi Traffic Director dengan komponen load balancing Google Cloud

Petunjuk di bagian ini menunjukkan cara mengonfigurasi Traffic Director sehingga proxy Envoy Anda melakukan load balancing traffic keluar di dua instance backend. Anda mengonfigurasi komponen berikut:

Membuat health check

Gunakan petunjuk berikut untuk membuat health check. Untuk mengetahui informasi selengkapnya, lihat Membuat health check.

Konsol

  1. Buka halaman Health check di Konsol Google Cloud.
    Buka halaman Health check
  2. Klik Create Health Check.
  3. Untuk nama, masukkan td-vm-health-check.
  4. Untuk protokol, pilih HTTP.
  5. Klik Create.

gcloud

  1. Buat health check.

    gcloud compute health-checks create http td-vm-health-check
    

Membuat aturan firewall

Gunakan petunjuk berikut untuk membuat aturan firewall yang diperlukan untuk pemeriksaan health check. Untuk mengetahui informasi lebih lanjut, lihat Aturan firewall untuk health check.

Konsol

  1. Buka halaman Firewall policies di Konsol Google Cloud.
    Buka halaman Kebijakan firewall
  2. Klik Create firewall rule.
  3. Di halaman Create a firewall rule, berikan informasi berikut:
    • Name: fw-allow-health-checks
    • Network: Pilih jaringan VPC.
    • Prioritas: Masukkan angka untuk prioritas atau 1000 secara default.
    • Arah traffic: Pilih ingress.
    • Tindakan pada kecocokan: Pilih izinkan.
    • Targets: Pilih Specified target tags, lalu masukkan td-http-server di kotak teks Target tags.
    • Source filter: Pilih jenis rentang IP yang benar.
    • Rentang IP sumber: 35.191.0.0/16,130.211.0.0/22
    • Filter tujuan: Pilih jenis IP.
    • Protocols and ports: Klik Specified ports and protocol, lalu centang jenis tcp di port 80

gcloud

  1. Buat aturan firewall untuk health check.

    gcloud compute firewall-rules create fw-allow-health-checks \
      --action ALLOW \
      --direction INGRESS \
      --source-ranges 35.191.0.0/16,130.211.0.0/22 \
      --target-tags td-http-server \
      --rules tcp:80
    

Membuat layanan backend

Membuat layanan backend. Jika menggunakan Google Cloud CLI, Anda harus menetapkannya sebagai layanan backend global dengan skema load balancing INTERNAL_SELF_MANAGED. Tambahkan health check dan grup instance terkelola atau tidak terkelola ke layanan backend. Perhatikan bahwa contoh ini menggunakan grup instance terkelola dengan template VM Compute Engine yang menjalankan contoh layanan HTTP yang dibuat dalam Membuat grup instance terkelola.

Konsol

  1. Buka halaman Traffic Director di konsol Google Cloud.

    Buka halaman Traffic Director

  2. Pada tab Services, klik Create Service.

  3. Klik Lanjutkan.

  4. Untuk nama layanan, masukkan td-vm-service.

  5. Pilih jaringan VPC yang benar.

  6. Pastikan Jenis backend adalah Grup instance.

  7. Pilih td-demo-hello-world-mig, yang merupakan grup instance terkelola yang Anda buat dan berisi backend untuk layanan pengujian Hello World.

  8. Masukkan Nomor transfer yang benar.

  9. Pilih Pemanfaatan atau Tarif sebagai Mode penyeimbangan. Nilai defaultnya adalah Rate.

  10. Klik Done.

  11. Pilih health check yang Anda buat, atau klik Create another health check dan pastikan untuk memilih HTTP sebagai protokol.

  12. Di Waktu tunggu pengosongan koneksi, tetapkan nilai ke 30 detik atau lebih lama.

  13. Klik Lanjutkan.

  14. Klik Create.

gcloud

  1. Membuat layanan backend.

    gcloud compute backend-services create td-vm-service \
     --global \
     --load-balancing-scheme=INTERNAL_SELF_MANAGED \
     --connection-draining-timeout=30s \
     --health-checks td-vm-health-check
    
  2. Tambahkan backend ke layanan backend.

    gcloud compute backend-services add-backend td-vm-service \
      --instance-group td-demo-hello-world-mig \
      --instance-group-zone us-central1-a \
      --global
    

Membuat peta aturan perutean

Peta aturan perutean menentukan cara Traffic Director mengarahkan traffic di mesh Anda. Sebagai bagian dari peta aturan perutean, Anda mengonfigurasi alamat IP virtual (VIP) dan kumpulan aturan pengelolaan traffic terkait, seperti perutean berbasis host. Saat aplikasi mengirimkan permintaan ke VIP, proxy Envoy:

  1. Mengganggu permintaan.
  2. Mengevaluasi sesuai dengan aturan pengelolaan lalu lintas di peta URL.
  3. Memilih layanan backend berdasarkan nama host dalam permintaan.
  4. Memilih backend atau endpoint yang dikaitkan dengan layanan backend yang dipilih.
  5. Mengirim traffic ke backend atau endpoint tersebut.

Untuk informasi lebih lanjut tentang pengelolaan traffic, lihat Pengelolaan traffic lanjutan.

Konsol

Di Konsol Google Cloud, pembuatan proxy target digabungkan dengan pembuatan aturan penerusan. Saat Anda membuat aturan penerusan, Google Cloud akan otomatis membuat proxy HTTP target dan melampirkannya ke peta URL.

  1. Buka halaman Traffic Director di konsol Google Cloud.

    Buka halaman Traffic Director

  2. Pada tab Routing rule maps, klik Create Routing Rule Map.

  3. Masukkan nama.

  4. Klik Tambahkan Aturan Penerusan.

  5. Untuk nama aturan penerusan, masukkan td-vm-forwarding-rule.

  6. Pilih jaringan Anda.

  7. Pilih Internal IP. Traffic yang dikirim ke alamat IP ini dicegat oleh proxy Envoy dan dikirim ke layanan yang sesuai sesuai dengan aturan host dan jalur.

    Aturan penerusan dibuat sebagai aturan penerusan global dengan load-balancing-scheme ditetapkan ke INTERNAL_SELF_MANAGED.

  8. Pada bidang IP Khusus, ketik 10.0.0.1. Saat VM Anda mengirim ke alamat IP ini, proxy Envoy mencegatnya dan mengirimkannya ke endpoint layanan backend yang sesuai sesuai dengan aturan pengelolaan traffic yang ditentukan dalam peta URL.

    Setiap aturan penerusan dalam jaringan VPC harus memiliki port dan alamat IP unik per jaringan VPC. Jika Anda membuat lebih dari satu aturan penerusan dengan alamat IP dan port yang sama di jaringan VPC tertentu, hanya aturan penerusan pertama yang valid. Atribut lainnya akan diabaikan. Jika 10.0.0.1 tidak tersedia di jaringan Anda, pilih alamat IP lain.

  9. Pastikan Port disetel ke 80.

  10. Klik Simpan.

  11. Di bagian Routing rules, pilih Simple host and path rule.

  12. Di bagian Aturan host dan jalur, pilih td-vm-service sebagai Layanan.

  13. Klik Tambahkan aturan host dan jalur.

  14. Pada Host, masukkan hello-world.

  15. Di Service, pilih td-vm-service.

  16. Klik Simpan.

gcloud

  1. Buat peta URL yang menggunakan layanan backend td-vm-service sebagai default.

    gcloud compute url-maps create td-vm-url-map \
       --default-service td-vm-service
    
  2. Buat pencocok jalur dan aturan host untuk mengarahkan traffic untuk layanan Anda berdasarkan nama host dan jalur. Contoh ini menggunakan td-vm-service sebagai nama layanan dan pencocok jalur default yang cocok dengan semua permintaan jalur untuk host ini (/*).

    gcloud compute url-maps add-path-matcher td-vm-url-map \
       --default-service td-vm-service \
       --path-matcher-name td-vm-path-matcher
    
    gcloud compute url-maps add-host-rule td-vm-url-map \
       --path-matcher-name=td-vm-path-matcher \
       --hosts=hello-world
    
  3. Membuat proxy HTTP target.

    gcloud compute target-http-proxies create td-vm-proxy \
       --url-map=td-vm-url-map
    
  4. Membuat aturan penerusan.

    Aturan penerusan harus bersifat global dan harus dibuat dengan nilai load-balancing-scheme yang ditetapkan ke INTERNAL_SELF_MANAGED.

    gcloud compute forwarding-rules create td-vm-forwarding-rule \
       --global \
       --load-balancing-scheme=INTERNAL_SELF_MANAGED \
       --address=10.0.0.1 \
       --target-http-proxy=td-vm-proxy \
       --ports=80 \
       --network=default
    

Pada tahap ini, Traffic Director dikonfigurasi untuk melakukan load balancing terhadap traffic untuk layanan yang ditentukan dalam peta URL di seluruh backend dalam grup instance terkelola.

Memverifikasi konfigurasi

Di bagian terakhir panduan penyiapan Traffic Director untuk VM Compute Engine ini, Anda menguji bahwa traffic yang dikirim dari VM klien yang ditujukan ke VIP aturan penerusan dicegat dan dialihkan ke proxy Envoy, yang kemudian merutekan permintaan Anda ke VM yang menghosting layanan Hello World.

Untuk melakukannya, login ke VM klien yang telah dikonfigurasi untuk menangkap traffic dan mengalihkannya ke Envoy. Anda mengirim permintaan curl ke VIP yang terkait dengan peta aturan perutean Anda. Envoy memeriksa permintaan curl, menentukan layanan mana yang harus di-resolve, dan mengirim permintaan ke backend yang terkait dengan layanan tersebut.

  1. Di konsol Google Cloud, buka halaman Instance Groups.

    Buka halaman Instance Groups

  2. Pilih grup instance td-vm-mig-us-central1.
  3. Di bagian VM summary, di bagian Connect, klik SSH.
  4. Setelah Anda login ke VM klien, gunakan alat curl untuk mengirim permintaan ke layanan Hello World melalui Envoy:
curl -H "Host: hello-world" http://10.0.0.1/

Jika Anda memberikan perintah ini berulang kali, Anda akan melihat respons HTML berbeda yang berisi nama host backend dalam grup instance terkelola Hello World. Hal ini karena Envoy menggunakan load balancing round robin, algoritma load balancing default, saat mengirimkan traffic ke backend layanan Hello World.

Langkah selanjutnya