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
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- 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
ataumaxUtilization
.
- Anda tidak dapat menggunakan mode balancing
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
- Buka halaman Load balancing di konsol Google Cloud.
- Klik nama layanan backend yang ingin Anda tambahi grup instance terkelola.
- Klik Edit.
- Klik +Add backend.
- Pilih grup instance yang ingin ditambahkan.
- Edit setelan opsional yang ingin Anda ubah.
- 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
- Buka halaman Target Pools di konsol Google Cloud.
- Klik kumpulan target yang ingin Anda tambahi grup instance.
- Klik tombol Edit.
- Scroll ke bawah ke bagian VM instances, lalu klik Select instance groups.
- Pilih grup instance dari menu drop-down.
- 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, tetapihttp: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 bernamahttp-port:80
instance-group-b
dengan port bernamahttp-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
- Di Konsol Google Cloud, buka halaman Instance groups.
- Klik nama grup instance tempat Anda ingin menentukan port bernama. Halaman dengan properti grup instance akan terbuka.
- Klik Edit untuk mengubah grup instance terkelola ini.
- 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.
- 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
- Cobalah tutorial, Menggunakan load balancing untuk aplikasi dengan ketersediaan tinggi.
- Buat template instance yang dapat Anda gunakan untuk grup instance terkelola.
- Buat grup instance terkelola regional.
- Aktifkan autohealing untuk grup instance terkelola Anda.
- Aktifkan penskalaan otomatis untuk grup instance terkelola Anda.