Menambahkan grup instance ke load balancer


Google Cloud Load Balancing menggunakan grup instance, baik terkelola maupun tidak terkelola, untuk menyalurkan traffic. Bergantung pada jenis load balancer yang digunakan, Anda dapat menambahkan grup instance ke kumpulan target atau layanan backend. Untuk mempelajari load balancing lebih lanjut, lihat Memilih load balancer.

Untuk mempelajari grup instance lebih lanjut, baca Ringkasan grup instance.

Sebelum memulai

  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Batasan

  • Jika Anda ingin menggunakan load balancing dengan MIG regional, batasan berikut berlaku:
    • Anda tidak dapat menggunakan mode balancing maxRate.
    • Jika menggunakan skema load balancing HTTP(S) dengan MIG regional, Anda harus memilih mode balancing maxRatePerInstance atau maxUtilization.

Menambahkan grup instance terkelola ke layanan backend

Layanan backend diperlukan untuk membuat sebagian besar jenis load balancer.

Layanan backend dapat berisi beberapa backend. Grup instance merupakan suatu jenis backend. Instance dalam grup instance merespons traffic dari load balancer. Selanjutnya, layanan backend mengetahui instance yang dapat digunakan, seberapa banyak traffic yang dapat ditangani, dan seberapa banyak traffic yang saat ini ditangani. Selain itu, layanan backend memantau health check dan tidak mengirim koneksi baru ke instance yang tidak responsif.

Gunakan petunjuk ini untuk menambahkan grup instance terkelola ke layanan backend.

Konsol

  1. Buka halaman Load balancing di konsol Google Cloud.

    Buka halaman Load balancing

  2. Klik nama layanan backend yang ingin Anda tambahi grup instance terkelola.
  3. Klik Edit.
  4. Klik +Add backend.
  5. Pilih grup instance yang ingin ditambahkan.
  6. Edit setelan opsional yang ingin Anda ubah.
  7. Simpan perubahan Anda.

gcloud

Gunakan perintah add-backend:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP \
        [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \
        --balancing-mode=BALANCING_MODE

Parameter tambahan diperlukan bergantung pada mode balancing grup instance terkelola. Untuk mengetahui informasi selengkapnya, lihat perintah add-backend di SDK.

REST

Untuk menambahkan layanan backend menggunakan REST API, lihat backendServices.

Menambahkan grup instance terkelola ke kumpulan target

Kumpulan target adalah objek yang berisi satu atau beberapa instance virtual machine. Kumpulan target digunakan di Load Balancer Jaringan passthrough eksternal, tempat load balancer meneruskan permintaan pengguna ke kumpulan target yang terpasang. Instance yang merupakan bagian dari kumpulan target tersebut akan melayani permintaan ini dan menampilkan respons. Anda dapat menambahkan grup instance terkelola ke kumpulan target sehingga saat instance ditambahkan atau dihapus dari grup instance, kumpulan target juga otomatis diupdate dengan perubahan tersebut.

Sebelum Anda dapat menambahkan grup instance terkelola ke kumpulan target, kumpulan target harus ada. Untuk informasi selengkapnya, lihat dokumentasi untuk Menambahkan kumpulan target.

Untuk menambahkan grup instance terkelola yang sudah ada ke kumpulan target, ikuti petunjuk berikut. Hal ini akan menyebabkan semua instance VM yang merupakan bagian dari grup instance terkelola ditambahkan ke kumpulan target.

Konsol

  1. Buka halaman Target Pools di konsol Google Cloud.

    Buka halaman Target Pools

  2. Klik kumpulan target yang ingin Anda tambahi grup instance.
  3. Klik tombol Edit.
  4. Scroll ke bawah ke bagian VM instances, lalu klik Select instance groups.
  5. Pilih grup instance dari menu drop-down.
  6. Simpan perubahan Anda.

gcloud

Gunakan perintah set-target-pools:

gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \
        --target-pools TARGET_POOL,..

dengan:

  • INSTANCE_GROUP adalah nama grup instance.
  • TARGET_POOL,.. adalah nama dari satu atau beberapa kumpulan target tempat grup instance ini akan ditambahkan.

REST

Panggil metode setTargetPools untuk MIG regional atau MIG zona. Contoh:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools

dengan:

  • PROJECT_ID adalah project ID untuk permintaan ini.
  • REGION adalah region untuk grup instance.
  • INSTANCE_GROUP adalah nama grup instance.

Isi permintaan harus berisi daftar URI ke kumpulan target yang ingin Anda tambahkan grup ini. Contoh:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Menetapkan port bernama ke grup instance terkelola

Port bernama adalah key-value pair yang mewakili nama dan nomor port. Nama port mewakili nama layanan atau aplikasi. Nomor port mewakili port tempat layanan atau aplikasi berjalan.

Port bernama digunakan oleh Cloud Load Balancing. Load balancer yang bertindak sebagai proxy berlangganan ke satu port bernama dalam konfigurasi layanan backend-nya. Nama port diterjemahkan menjadi nomor port berdasarkan pemetaan port bernama dari setiap backend grup instance.

Misalnya, layanan backend dapat berlangganan port yang bernama http-port. Grup instance backend dapat memiliki port bernama http-port:80. Grup instance backend menginstruksikan load balancer untuk mengirim traffic ke VM dalam grup di port 80 menggunakan protokol (seperti TCP). Protokol ini ditetapkan dalam layanan backend load balancer.

Port bernama adalah metadata sederhana yang digunakan oleh load balancer proxy. Port bernama tidak mengontrol resource jaringan atau firewall di Compute Engine.

Beberapa nomor port untuk port bernama

Anda dapat menetapkan beberapa port untuk setiap nama layanan. Anda juga dapat menetapkan beberapa nama layanan untuk setiap port.

Perhatikan poin-poin berikut:

  • Traffic diseimbangkan antara semua port dengan nama port yang sama.
  • Sebuah layanan backend tertentu hanya dapat meneruskan traffic ke satu port bernama pada satu waktu.
  • Jika Anda menggunakan beberapa nomor port untuk port bernama, semua port harus ditujukan untuk aplikasi yang sama.

    Misalnya, http:80,http:8080 berfungsi, tetapi http:80,http:443 tidak berfungsi karena port 80 umumnya tidak mendukung TLS.

Anda dapat menetapkan beberapa port bernama dalam satu grup instance. Sebagai ilustrasi, pertimbangkan contoh layanan backend yang berlangganan port bernama http-port, dan yang memiliki dua grup instance backend:

  • instance-group-a dengan port bernama http-port:80
  • instance-group-b dengan port bernama http-port:79

Layanan backend ini mengirimkan traffic ke port 80 untuk VM di instance-group-a dan port 79 untuk VM di instance-group-b.

Saat Anda menambahkan grup instance yang sama ke beberapa layanan backend (untuk beberapa load balancer) dan grup instance menyalurkan port yang berbeda di setiap load balancer, jangan tambahkan semua nomor port ke satu port bernama. Sebagai gantinya, buat port bernama yang unik dan petakan port tersebut ke kumpulan port yang harus disalurkan oleh setiap layanan backend.

Sebagai contoh, misalnya Anda memiliki tiga aplikasi, masing-masing dengan load balancer-nya sendiri. Setiap aplikasi memiliki nomor port sendiri: 81 untuk app1, 82 untuk app2, dan 83 untuk app3. Dengan asumsi bahwa ketiga layanan backend menggunakan grup instance yang sama, tetapkan port bernama untuk grup instance ini sebagai [app1:81, app2:82, app3:83].

Port bernama dan health check

Agar port bernama dengan beberapa nomor port di layanan backend dapat berfungsi di Load Balancer Aplikasi eksternal atau Load Balancer Aplikasi internal, health check harus memiliki flag --use-serving-port, bukan nomor port tertentu. Opsi ini tidak tersedia di konsol Google Cloud. Untuk menetapkan --use-serving-port, Anda harus menggunakan Google Cloud CLI atau API.

Misalnya, Anda memiliki aplikasi yang melakukan load balancing pada traffic di tiga port yang berbeda (81, 82, 83) pada layanan backend yang sama dengan satu grup instance. Anda dapat menetapkan port untuk grup instance ini sebagai [app:81, 82, 83]. Health check dalam skenario ini harus memiliki tanda --use-serving-port.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi health check load balancing.

Port bernama dan aturan firewall

Port bernama tidak membuat atau mengubah aturan firewall Google Cloud. Untuk mengizinkan traffic ke VM backend, Anda tetap harus membuat aturan firewall yang diperlukan.

Port bernama dan layanan backend

Selain konfigurasi grup instance, Anda juga harus mengonfigurasi layanan backend. Misalnya, Anda menyetel port yang bernama pada grup instance dengan nama my-service-name dan port 8888:

gcloud compute instance-groups set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

Anda harus merujuk ke port bernama di konfigurasi layanan backend dengan --port-name pada layanan backend yang ditetapkan ke my-service-name:

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

Membuat port bernama

Konsol

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

    Buka halaman Instance Group

  2. Klik nama grup instance tempat Anda ingin menentukan port bernama. Halaman dengan properti grup instance akan terbuka.
  3. Klik Edit untuk mengubah grup instance terkelola ini.
  4. Di bagian Pemetaan port, klik Add port, lalu masukkan nama port yang diinginkan dan nomor port yang ingin dikaitkan dengan nama tersebut. Jika Anda memerlukan lebih banyak entri, klik Add port lagi.
  5. Klik Save untuk menyimpan perubahan dan menerapkan port bernama ke instance dalam grup instance terkelola.

gcloud

Untuk grup instance terkelola, tetapkan satu atau beberapa port bernama menggunakan perintah instance-groups managed set-named-ports. Untuk grup yang tidak dikelola, gunakan perintah instance-groups set-named-ports.

gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \
      --named-ports PORT_NAME:PORT,PORT_NAME:PORT

Contoh:

gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \
      --named-ports name1:80,name2:8080

Untuk menetapkan beberapa port ke setiap nama layanan atau beberapa nama untuk setiap layanan, buat lebih dari satu entri untuk setiap nama atau port. Misalnya, jika port 10, 20, dan 80 adalah untuk aplikasi yang sama, Anda dapat menetapkan name1 ke semua port tersebut. Selain itu, Anda dapat menetapkan dua nama, name2 dan name3 ke port 8080. Terakhir, Anda dapat menetapkan port 9000 ke name4, seperti pada contoh berikut:

gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

Periksa penetapan port bernama untuk grup instance terkelola menggunakan perintah get-named-ports:

gcloud compute instance-groups managed get-named-ports INSTANCE_GROUP
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

REST

instanceGroupManagers API tidak menawarkan metode setNamedPorts API. Sebagai gantinya, gunakan instanceGroups API untuk melakukan tugas ini.

Buat permintaan ke instanceGroups API dan sertakan nama grup instance. Dapatkan nilai fingerprint saat ini untuk grup instance dengan mendapatkan informasi tentang grup tertentu. Sertakan pasangan nilai fingerprint dan satu atau beberapa pasangan nilai namedPorts dalam isi permintaan:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroups/INSTANCE_GROUP/setNamedPorts

{
  "fingerprint": "42WmSpB8rSM=",
  "namedPorts": [
    {
       "name": "PORT_NAME",
       "port": PORT_NUMBER
    },
    {
       "name": "PORT_NAME",
       "port": PORT_NUMBER
    }
  ]
 }
 

Misalnya, jika port 10, 20, dan 80 adalah untuk aplikasi yang sama, Anda dapat menetapkan name1 ke semua port tersebut. Selain itu, Anda dapat menetapkan dua nama, name2 dan name3 ke port 8080. Terakhir, Anda dapat menetapkan port 9000 ke name4, seperti pada contoh berikut:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
   "fingerprint": "42WmSpB8rSM=",
   "namedPorts": [
      {
       "name": "name1",
       "port": 8080
      },
      {
       "name": "name2",
       "port": 9000
      }
   ]
}

Untuk menetapkan beberapa port ke setiap nama layanan, buat beberapa entri untuk nama layanan tersebut. Misalnya, Anda dapat menetapkan port 10, 20, dan 80 ke name1. Juga tetapkan port 8080 ke name2.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
   "fingerprint": "42WmSpB8rSM=",
   "namedPorts": [
      {
       "name": "name1",
       "port": 10
      },
      {
       "name": "name1",
       "port": 20
      }
      {
       "name": "name1",
       "port": 80
      }
      {
       "name": "name2",
       "port": 8080
      }
      {
       "name": "name3",
       "port": 80
      }
      {
       "name": "name4",
       "port": 8080
      }
   ]
}

Untuk mencantumkan port bernama yang telah ditetapkan ke grup instance terkelola, buat permintaan GET yang mengarah ke grup tersebut:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP

Langkah selanjutnya