Menyiapkan VM menggunakan deployment Envoy manual

Dokumen ini ditujukan untuk administrator jaringan yang ingin menyiapkan Traffic Director secara manual. Proses manual adalah mekanisme lama yang hanya ditujukan untuk pengguna tingkat lanjut yang menyiapkan Traffic Director dengan API load balancing.

Sebaiknya Anda menyiapkan Traffic Director menggunakan API pemilihan rute layanan, bukan API load balancing lama. Jika Anda harus menggunakan API load balancing, sebaiknya gunakan deployment Envoy otomatis, bukan proses manual yang dijelaskan di halaman ini.

Sebelum mengikuti petunjuk dalam panduan ini, tinjau Persiapan untuk menyiapkan Traffic Director dengan Envoy dan pastikan Anda telah menyelesaikan tugas prasyarat yang dijelaskan dalam dokumen tersebut.

Panduan ini menunjukkan cara men-deploy bidang data secara manual yang terdiri dari proxy file bantuan Envoy dengan virtual machine (VM) Compute Engine, mengonfigurasinya menggunakan Traffic Director, dan memverifikasi penyiapan Anda untuk memastikannya berfungsi dengan benar. Proses ini mencakup:

  1. Membuat layanan pengujian.
  2. Men-deploy bidang data sederhana di Compute Engine menggunakan proxy Envoy.
  3. Menyiapkan Traffic Director menggunakan Compute Engine API, yang memungkinkan Traffic Director mengonfigurasi proxy file bantuan Envoy Anda.
  4. Login ke VM yang menjalankan proxy Envoy dan kirim permintaan ke backend yang di-load balanced 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.

Ringkasan proses konfigurasi

Bagian ini menjelaskan proses konfigurasi manual untuk layanan yang berjalan di VM Compute Engine. Proses konfigurasi untuk VM klien terdiri dari penyiapan proxy file bantuan dan intersepsi traffic di host VM Compute Engine. Kemudian, konfigurasikan load balancing menggunakan API Google Cloud Load Balancing.

Bagian ini memberikan informasi tentang cara mendapatkan dan memasukkan proxy Envoy dari sumber pihak ketiga yang tidak dikelola oleh Google.

Saat aplikasi mengirimkan traffic ke layanan yang dikonfigurasi di Traffic Director, traffic akan ditangkap dan dialihkan ke proxy file bantuan yang kompatibel dengan xDS API, lalu diseimbangkan ke backend sesuai dengan konfigurasi dalam komponen load balancing Google Cloud. Untuk informasi selengkapnya tentang jaringan host dan intersepsi traffic, baca Intersepsi traffic proxy sidecar di Traffic Director.

Untuk setiap host VM yang memerlukan akses ke layanan Traffic Director, lakukan langkah-langkah berikut:

  1. Tetapkan akun layanan ke VM.

  2. Tetapkan cakupan akses API VM untuk mengizinkan akses penuh ke Google Cloud API.

    • Saat Anda membuat VM, di bagian Identity and API access, klik Allow full access to all Cloud APIs.

      Buka halaman VM instances.

    • Dengan gcloud CLI, tentukan hal berikut:

      --scopes=https://www.googleapis.com/auth/cloud-platform.

  3. Mengizinkan koneksi keluar ke trafficdirector.googleapis.com (TCP, port 443) dari VM, agar proxy file bantuan dapat terhubung ke bidang kontrol Traffic Director melalui gRPC. Koneksi keluar ke port 443 diaktifkan secara default.

  4. Men-deploy proxy file bantuan yang kompatibel dengan xDS API (seperti Envoy), dengan konfigurasi bootstrap yang mengarah ke trafficdirector.googleapis.com:443 sebagai server xDS-nya. Untuk mendapatkan contoh file konfigurasi bootstrap, buka file traffic-director-xdsv3.tar.gz yang dikompresi, dan ubah file bootstrap_template.yaml sesuai dengan kebutuhan Anda.

  5. Mengalihkan traffic IP yang ditujukan ke layanan ke port pemroses intersepsi proxy file bantuan.

Membuat layanan pengujian Hello World

Bagian ini menunjukkan cara membuat layanan pengujian sederhana yang menampilkan nama host VM yang menyalurkan permintaan dari klien. Layanan pengujian tidak rumit. Ini adalah server web yang di-deploy di seluruh grup instance terkelola Compute Engine.

Membuat template instance

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

Konsol

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

    Buka Instance templates

  2. Klik Create instance template.
  3. Di kolom, masukkan informasi berikut:
    • Name: td-demo-hello-world-template
    • Boot disk: Debian GNU/Linux 10 (buster)
    • Akun layanan: Akun layanan default Compute Engine
    • Cakupan akses: Mengizinkan akses penuh ke semua Cloud API
  4. Klik Management, Security, Disks, Networking, Sole Tenancy.
  5. Pada tab Jaringan, di kolom Tag jaringan, tambahkan tag td-http-server.
  6. 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
    
  7. Klik Create.

gcloud

Buat 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

Di bagian ini, Anda 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 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 sebagai nama untuk 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 Don't autoscale.
  7. Di bagian Number of instances, tentukan setidaknya dua 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 telah 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 secara manual untuk Traffic Director. Grup instance terkelola membuat VM backend baru dengan menggunakan penskalaan otomatis.

Contoh ini menunjukkan cara:

  • Buat template VM dengan konfigurasi Envoy lengkap dan contoh layanan yang menyalurkan nama host-nya menggunakan protokol HTTP.
  • Konfigurasikan grup instance terkelola menggunakan template ini.

Membuat template instance

Pertama, buat template instance VM Compute Engine. Template ini secara otomatis mengonfigurasi proxy sidecar Envoy dan contoh layanan web Apache2 melalui parameter startup-script.

Konsol

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

    Buka Instance templates

  2. Klik Create instance template.
  3. Isi kolom sebagai berikut:

    • Nama: td-vm-template
    • Boot disk: Debian GNU/Linux 10 (buster)
    • Akun layanan: Akun layanan default Compute Engine
    • Cakupan akses: Mengizinkan akses penuh ke semua Cloud API
  4. Di bagian Firewall, pilih kotak di samping Allow HTTP traffic dan Allow HTTPS traffic.

  5. Klik Management, Security, Disks, Networking, Sole Tenancy.

  6. Di tab Management, salin skrip berikut ke kolom Startup script.

    #! /usr/bin/env bash
    
    # Set variables
    export ENVOY_USER="envoy"
    export ENVOY_USER_UID="1337"
    export ENVOY_USER_GID="1337"
    export ENVOY_USER_HOME="/opt/envoy"
    export ENVOY_CONFIG="${ENVOY_USER_HOME}/config.yaml"
    export ENVOY_PORT="15001"
    export ENVOY_ADMIN_PORT="15000"
    export ENVOY_TRACING_ENABLED="false"
    export ENVOY_XDS_SERVER_CERT="/etc/ssl/certs/ca-certificates.crt"
    export ENVOY_ACCESS_LOG="/dev/stdout"
    export ENVOY_NODE_ID="$(cat /proc/sys/kernel/random/uuid)~$(hostname -i)"
    export BOOTSTRAP_TEMPLATE="${ENVOY_USER_HOME}/bootstrap_template.yaml"
    export GCE_METADATA_SERVER="169.254.169.254/32"
    export INTERCEPTED_CIDRS="*"
    export GCP_PROJECT_NUMBER=PROJECT_NUMBER
    export VPC_NETWORK_NAME=NETWORK_NAME
    export GCE_ZONE=$(curl -sS -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone | cut -d"/" -f4)
    
    # Create system user account for Envoy binary
    sudo groupadd ${ENVOY_USER} \
     --gid=${ENVOY_USER_GID} \
     --system
    sudo adduser ${ENVOY_USER} \
     --uid=${ENVOY_USER_UID} \
     --gid=${ENVOY_USER_GID} \
     --home=${ENVOY_USER_HOME} \
     --disabled-login \
     --system
    
    # Download and extract the Traffic Director tar.gz file
    cd ${ENVOY_USER_HOME}
    sudo curl -sL https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz -o traffic-director-xdsv3.tar.gz
    sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/bootstrap_template.yaml \
     -C bootstrap_template.yaml \
     --strip-components 1
    sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/iptables.sh \
     -C iptables.sh \
     --strip-components 1
    sudo rm traffic-director-xdsv3.tar.gz
    
    # Generate Envoy bootstrap configuration
    cat "${BOOTSTRAP_TEMPLATE}" \
     | sed -e "s|ENVOY_NODE_ID|${ENVOY_NODE_ID}|g" \
     | sed -e "s|ENVOY_ZONE|${GCE_ZONE}|g" \
     | sed -e "s|VPC_NETWORK_NAME|${VPC_NETWORK_NAME}|g" \
     | sed -e "s|CONFIG_PROJECT_NUMBER|${GCP_PROJECT_NUMBER}|g" \
     | sed -e "s|ENVOY_PORT|${ENVOY_PORT}|g" \
     | sed -e "s|ENVOY_ADMIN_PORT|${ENVOY_ADMIN_PORT}|g" \
     | sed -e "s|XDS_SERVER_CERT|${ENVOY_XDS_SERVER_CERT}|g" \
     | sed -e "s|TRACING_ENABLED|${ENVOY_TRACING_ENABLED}|g" \
     | sed -e "s|ACCESSLOG_PATH|${ENVOY_ACCESS_LOG}|g" \
     | sed -e "s|BACKEND_INBOUND_PORTS|${BACKEND_INBOUND_PORTS}|g" \
     | sudo tee "${ENVOY_CONFIG}"
    
    # Install Envoy binary
    curl -sL "https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key" | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
    echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] https://deb.dl.getenvoy.io/public/deb/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list
    sudo apt update
    sudo apt -y install getenvoy-envoy
    
    # Run Envoy as systemd service
    sudo systemd-run --uid=${ENVOY_USER_UID} --gid=${ENVOY_USER_GID} \
     --working-directory=${ENVOY_USER_HOME} --unit=envoy.service \
     bash -c "/usr/bin/envoy --config-path ${ENVOY_CONFIG} | tee"
    
    # Configure iptables for traffic interception and redirection
    sudo ${ENVOY_USER_HOME}/iptables.sh \
     -p "${ENVOY_PORT}" \
     -u "${ENVOY_USER_UID}" \
     -g "${ENVOY_USER_GID}" \
     -m "REDIRECT" \
     -i "${INTERCEPTED_CIDRS}" \
     -x "${GCE_METADATA_SERVER}"
    
  7. Klik Buat untuk membuat template.

gcloud

Membuat template instance.

gcloud compute instance-templates create td-vm-template \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --tags=http-td-tag,http-server,https-server \
  --image-family=debian-10 \
  --image-project=debian-cloud \
  --metadata=startup-script='#! /usr/bin/env bash

# Set variables
export ENVOY_USER="envoy"
export ENVOY_USER_UID="1337"
export ENVOY_USER_GID="1337"
export ENVOY_USER_HOME="/opt/envoy"
export ENVOY_CONFIG="${ENVOY_USER_HOME}/config.yaml"
export ENVOY_PORT="15001"
export ENVOY_ADMIN_PORT="15000"
export ENVOY_TRACING_ENABLED="false"
export ENVOY_XDS_SERVER_CERT="/etc/ssl/certs/ca-certificates.crt"
export ENVOY_ACCESS_LOG="/dev/stdout"
export ENVOY_NODE_ID="$(cat /proc/sys/kernel/random/uuid)~$(hostname -i)"
export BOOTSTRAP_TEMPLATE="${ENVOY_USER_HOME}/bootstrap_template.yaml"
export GCE_METADATA_SERVER="169.254.169.254/32"
export INTERCEPTED_CIDRS="*"
export GCP_PROJECT_NUMBER=PROJECT_NUMBER
export VPC_NETWORK_NAME=NETWORK_NAME
export GCE_ZONE=$(curl -sS -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone | cut -d"/" -f4)

# Create system user account for Envoy binary
sudo groupadd ${ENVOY_USER} \
  --gid=${ENVOY_USER_GID} \
  --system
sudo adduser ${ENVOY_USER} \
  --uid=${ENVOY_USER_UID} \
  --gid=${ENVOY_USER_GID} \
  --home=${ENVOY_USER_HOME} \
  --disabled-login \
  --system
# Download and extract the Traffic Director tar.gz file
cd ${ENVOY_USER_HOME}
sudo curl -sL https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz -o traffic-director-xdsv3.tar.gz
sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/bootstrap_template.yaml \
  -C bootstrap_template.yaml \
  --strip-components 1
sudo tar -xvzf traffic-director-xdsv3.tar.gz traffic-director-xdsv3/iptables.sh \
  -C iptables.sh \
  --strip-components 1
sudo rm traffic-director-xdsv3.tar.gz

# Generate Envoy bootstrap configuration
cat "${BOOTSTRAP_TEMPLATE}" \
  | sed -e "s|ENVOY_NODE_ID|${ENVOY_NODE_ID}|g" \
  | sed -e "s|ENVOY_ZONE|${GCE_ZONE}|g" \
  | sed -e "s|VPC_NETWORK_NAME|${VPC_NETWORK_NAME}|g" \
  | sed -e "s|CONFIG_PROJECT_NUMBER|${GCP_PROJECT_NUMBER}|g" \
  | sed -e "s|ENVOY_PORT|${ENVOY_PORT}|g" \
  | sed -e "s|ENVOY_ADMIN_PORT|${ENVOY_ADMIN_PORT}|g" \
  | sed -e "s|XDS_SERVER_CERT|${ENVOY_XDS_SERVER_CERT}|g" \
  | sed -e "s|TRACING_ENABLED|${ENVOY_TRACING_ENABLED}|g" \
  | sed -e "s|ACCESSLOG_PATH|${ENVOY_ACCESS_LOG}|g" \
  | sed -e "s|BACKEND_INBOUND_PORTS|${BACKEND_INBOUND_PORTS}|g" \
  | sudo tee "${ENVOY_CONFIG}"

# Install Envoy binary
curl -sL "https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key" | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] https://deb.dl.getenvoy.io/public/deb/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list
sudo apt update
sudo apt -y install getenvoy-envoy

# Run Envoy as systemd service
sudo systemd-run --uid=${ENVOY_USER_UID} --gid=${ENVOY_USER_GID} \
  --working-directory=${ENVOY_USER_HOME} --unit=envoy.service \
  bash -c "/usr/bin/envoy --config-path ${ENVOY_CONFIG} | tee"

# Configure iptables for traffic interception and redirection
sudo ${ENVOY_USER_HOME}/iptables.sh \
  -p "${ENVOY_PORT}" \
  -u "${ENVOY_USER_UID}" \
  -g "${ENVOY_USER_GID}" \
  -m "REDIRECT" \
  -i "${INTERCEPTED_CIDRS}" \
  -x "${GCE_METADATA_SERVER}"
'

Membuat grup instance terkelola

Jika Anda tidak memiliki grup instance terkelola dengan layanan yang sedang berjalan, buat grup instance terkelola menggunakan template VM seperti yang ditampilkan di bagian sebelumnya. Contoh ini menggunakan template instance yang dibuat di bagian sebelumnya untuk mendemonstrasikan fungsi. Anda tidak perlu menggunakan template instance.

Konsol

  1. Di Konsol Google Cloud, buka halaman Instance groups.

    Buka Instance groups

  2. Klik Create an instance group. Secara default, Anda akan melihat halaman untuk membuat grup instance terkelola.
  3. Pilih Grup instance terkelola baru (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
  4. Masukkan td-vm-mig-us-central1 sebagai nama grup instance terkelola, lalu pilih zona us-central1-a.
  5. Di bagian Instance template, pilih template instance yang Anda buat.
  6. Tentukan 2 sebagai jumlah instance yang ingin Anda buat dalam grup.
  7. Klik Create.

gcloud

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

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

Mengonfigurasi Traffic Director dengan komponen load balancing Google Cloud

Petunjuk di bagian ini menunjukkan cara mengonfigurasi Traffic Director sehingga Envoy Anda melakukan proxy 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. Di konsol Google Cloud, buka halaman Health checks.

    Buka Health checks

  2. Klik Create health check.
  3. Untuk nama, masukkan td-vm-health-check.
  4. Untuk protokol, pilih HTTP.
  5. Klik Create.

gcloud

  1. Membuat health check:

    gcloud compute health-checks create http td-vm-health-check
    
  2. Buat aturan firewall:

    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 http-td-tag,http-server,https-server \
      --rules tcp
    

Membuat layanan backend

Jika menggunakan Google Cloud CLI, Anda harus menetapkan layanan backend 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 di bagian Membuat grup instance terkelola.

Konsol

  1. Di konsol Google Cloud, buka halaman Traffic Director.

    Buka 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 Backend type adalah Instance groups.
  7. Pilih grup instance terkelola yang Anda buat.
  8. Masukkan Nomor port yang benar.
  9. Pilih Utilization atau Rate sebagai Mode Penyeimbangan. Nilai defaultnya adalah Rate.
  10. Klik Done.
  11. Pilih health check yang Anda buat.
  12. Klik Simpan dan lanjutkan.
  13. Klik Create.

gcloud

  1. Buat layanan backend:

    gcloud compute backend-services create td-vm-service \
      --global \
      --load-balancing-scheme=INTERNAL_SELF_MANAGED \
      --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 pemilihan rute

Peta aturan perutean menentukan cara Traffic Director merutekan traffic di mesh Anda.

Gunakan petunjuk ini untuk membuat aturan rute, aturan penerusan, proxy target, dan alamat IP internal untuk konfigurasi Traffic Director Anda.

Traffic yang dikirim ke alamat IP internal 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 yang ditetapkan ke INTERNAL_SELF_MANAGED.

Anda dapat menetapkan alamat aturan penerusan ke 0.0.0.0. Jika Anda melakukannya, traffic akan dirutekan berdasarkan nama host HTTP dan informasi jalur yang dikonfigurasi di peta URL, terlepas dari alamat IP tujuan permintaan yang sebenarnya. Dalam hal ini, nama host layanan Anda, seperti yang dikonfigurasi dalam aturan host, harus unik dalam konfigurasi mesh layanan Anda. Artinya, Anda tidak dapat memiliki dua layanan yang berbeda, dengan kumpulan backend berbeda, yang keduanya menggunakan nama host yang sama.

Atau, Anda dapat mengaktifkan perutean berdasarkan tujuan VIP layanan yang sebenarnya. Jika Anda mengonfigurasi VIP layanan sebagai parameter address dari aturan penerusan, hanya permintaan yang ditujukan ke alamat ini yang dirutekan berdasarkan parameter HTTP yang ditentukan dalam peta URL.

Contoh ini menggunakan 10.0.0.1 sebagai parameter alamat, yang berarti bahwa perutean untuk layanan Anda dilakukan berdasarkan tujuan VIP layanan yang sebenarnya.

Konsol

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

  1. Di konsol Google Cloud, buka halaman Traffic Director.

    Buka 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 yang ditetapkan ke INTERNAL_SELF_MANAGED.

  8. Pada kolom Custom IP, ketik 10.0.0.1. Saat VM Anda mengirim ke alamat IP ini, proxy Envoy akan mencegatnya dan mengirimkannya ke endpoint layanan backend yang sesuai sesuai dengan aturan pengelolaan traffic yang ditetapkan 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 Save.

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

  12. Di bagian Host and path rules, pilih td-vm-service sebagai Service.

  13. Klik Add host and path rule.

  14. Pada Hosts, masukkan hello-world.

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

  16. Klik Save.

gcloud

  1. Buat peta URL yang menggunakan layanan backend:

    gcloud compute url-maps create td-vm-url-map \
       --default-service td-vm-service
    
  2. Buat pencocok jalur peta URL dan aturan host untuk mengarahkan traffic untuk layanan Anda berdasarkan nama host dan jalur. Contoh ini menggunakan service-test 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 --hosts service-test \
       --path-matcher-name td-vm-path-matcher \
       --hosts hello-world
    
  3. Buat 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 pada traffic 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 aturan penerusan VIP dicegat dan dialihkan ke proxy Envoy, yang kemudian mengarahkan permintaan Anda ke VM yang menghosting layanan Hello World.

Pertama, pastikan backend responsif dengan menggunakan langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman Traffic Director.

    Buka Traffic Director

    Ringkasan memberi tahu Anda apakah layanan responsif.

  2. Klik nama layanan. Halaman Detail layanan berisi informasi tentang kondisi backend.
  3. Jika backend tidak responsif, Anda dapat meresetnya dengan mengklik nama backend, lalu mengklik Reset di halaman detail instance VM.

gcloud

Gunakan perintah compute backend-services get-health untuk memverifikasi bahwa backend responsif:

gcloud compute backend-services get-health td-vm-service \
    --global \
    --format=get(name, healthStatus)

Setelah memverifikasi status respons backend Anda, login ke VM klien yang telah dikonfigurasi untuk menangkap traffic dan mengalihkannya ke Envoy. Kirim permintaan curl ke VIP yang terkait dengan peta aturan pemilihan rute Anda. Envoy memeriksa permintaan curl, menentukan layanan mana yang harus diselesaikan, dan mengirimkan permintaan ke backend yang terkait dengan layanan tersebut.

Konsol

  1. Di Konsol Google Cloud, buka halaman Instance groups.

    Buka Instance groups

  2. Pilih grup instance td-vm-mig-us-central1.
  3. 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 di grup instance terkelola Hello World. Hal ini karena Envoy menggunakan load balancing round robin, yakni algoritma load balancing default, saat mengirimkan traffic ke backend layanan Hello World.

Setelah konfigurasi selesai, setiap VM Compute Engine yang memiliki proxy file bantuan dapat mengakses layanan yang dikonfigurasi di Traffic Director menggunakan protokol HTTP.

Jika Anda mengikuti contoh spesifik dalam panduan ini dengan menggunakan template VM Compute Engine dengan server HTTP demonstrasi dan nama host layanan service-test, gunakan langkah-langkah berikut untuk memverifikasi konfigurasi:

  1. Login ke salah satu host VM yang memiliki proxy file bantuan yang terinstal.
  2. Jalankan perintah curl -H 'Host: service-test' 10.0.0.1. Permintaan ini menampilkan nama host backend grup instance terkelola yang menayangkan permintaan tersebut.

Pada langkah 2, perhatikan bahwa Anda dapat menggunakan alamat IP apa pun. Misalnya, perintah curl -I -H 'Host: service-test' 1.2.3.4 akan berfungsi di Langkah 2.

Hal ini karena aturan penerusan memiliki parameter alamat yang ditetapkan ke 0.0.0.0, yang menginstruksikan Traffic Director agar cocok berdasarkan host yang ditentukan dalam peta URL. Dalam contoh konfigurasi, nama host adalah service-test.

Langkah selanjutnya