Jika Anda ingin membuat instance mesin virtual (VM) yang identik dan independen dari satu sama lain dalam jumlah besar, buat VM secara massal menggunakan Google Cloud CLI atau Compute Engine API. Anda dapat membuat VM ini di semua zona dalam satu region atau didistribusikan di seluruh zona tertentu.
Untuk mengetahui detail selengkapnya dan batasan-batasan terkait, lihat Tentang pembuatan VM secara massal.
Sebelum memulai
- Untuk VM dan resource terkait apa pun yang ingin Anda buat, pastikan Anda memiliki kuota yang cukup dan izin yang diperlukan.
-
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:
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
-
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk membuat VM secara massal, minta administrator untuk memberi Anda peran IAM Admin Instance Compute (v1) (roles/compute.instanceAdmin.v1
) pada project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat VM secara massal. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat VM secara massal:
-
compute.instances.create
pada project -
Untuk menggunakan image kustom guna membuat VM:
compute.images.useReadOnly
pada image -
Untuk menggunakan snapshot guna membuat VM:
compute.snapshots.useReadOnly
di snapshot -
Untuk menggunakan template instance untuk membuat VM:
compute.instanceTemplates.useReadOnly
di template instance -
Untuk menetapkan jaringan lama ke VM:
compute.networks.use
pada project -
Untuk menentukan alamat IP statis untuk VM:
compute.addresses.use
di project -
Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama:
compute.networks.useExternalIp
di project -
Untuk menentukan subnet untuk VM Anda:
compute.subnetworks.use
pada project atau subnet yang dipilih -
Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC:
compute.subnetworks.useExternalIp
pada project atau di subnet yang dipilih -
Untuk menetapkan metadata instance VM untuk VM:
compute.instances.setMetadata
di project -
Untuk menetapkan tag untuk VM:
compute.instances.setTags
di VM -
Untuk menetapkan label VM:
compute.instances.setLabels
di VM -
Untuk menetapkan akun layanan yang akan digunakan VM:
compute.instances.setServiceAccount
di VM -
Untuk membuat disk baru bagi VM:
compute.disks.create
di project -
Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis:
compute.disks.use
pada disk -
Untuk memasang disk yang ada dalam mode hanya baca:
compute.disks.useReadOnly
pada disk
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Membuat VM secara massal di suatu region
Untuk membuat VM secara massal dalam satu region, gunakan gcloud CLI atau Compute Engine API.
Jika Anda menentukan sendiri jenis mesin atau dukungan untuk hardware tambahan seperti GPU atau SSD lokal, Compute Engine akan menempatkan VM di zona dalam region yang mendukung jenis mesin dan hardware tambahan tersebut.
gcloud
Untuk membuat VM secara massal di suatu region, gunakan perintah gcloud compute
instances bulk create
berikut:
gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-shape=TARGET_SHAPE ]
Ganti kode berikut:
NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (
#
) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaanvm-#
untuk pola nama akan menghasilkan VM dengan namavm-1
,vm-2
, dan seterusnya, hingga jumlah VM yang ditentukan oleh--count
, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.
PREDEFINED_NAMES: daftar nama yang telah ditentukan untuk dibuat oleh VM. Jika Anda menggunakan flag ini dan menetapkan
COUNT
,COUNT
harus sama dengan jumlah nama yang diberikan.REGION: region untuk membuat VM.
COUNT: jumlah VM yang akan dibuat. Jumlah ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh
NAME_PATTERN
. Atau, jika menggunakan--predefined-names
, Anda tidak perlu menentukanCOUNT
, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan bergantung pada cara Anda menetapkan tanda ini:
Nilai Deskripsi Belum disetel Nilai defaultnya adalah COUNT
. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan olehCOUNT
, permintaan akan gagal dan tidak ada VM yang akan dibuat.1
Compute Engine membuat VM sebanyak mungkin, hingga COUNT
.Lebih dari 1
dan kurang dariCOUNT
Compute Engine membuat minimal MIN_COUNT
VM hingga maksimumCOUNT
VM. JikaMIN_COUNT
VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam suatu region. Gunakan daftar key-value pair, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah
allow
, yang merupakan default, dandeny
. Berikut adalah contoh nilai untuk flag ini:--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan flag
--location-policy
untuk menetapkan zona. Tabel berikut menunjukkan nilai yang valid untuk flag ini:Nilai Deskripsi any_single_zone
Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya. balanced
Berupaya mendistribusikan VM secara merata di semua zona dalam region. any
Mengizinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.
REST
Untuk membuat VM secara massal di suatu region, gunakan metode instances.bulkInsert
berikut:
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_SHAPE" ... }
Ganti kode berikut:
PROJECT_ID: ID project.
REGION: region untuk membuat VM.
NAME_PATTERN: pola nama untuk VM. Tentukan ini atau
perInstanceProperties
. Gunakan urutan karakter hash (#
) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaanvm-#
untuk pola nama akan menghasilkan VM dengan namavm-1
,vm-2
, dan seterusnya, hingga jumlah VM yang ditentukan oleh--count
, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: daftar nama bawaan untuk dibuat VM. Tentukan ini atau
namePattern
. Jika menggunakan flag ini dan menentukanCOUNT
,COUNT
harus sama dengan jumlah nama yang diberikan.COUNT: jumlah VM yang akan dibuat. Jumlah ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh
NAME_PATTERN
. Atau, jika menggunakanperInstanceProperties
, Anda tidak perlu menentukanCOUNT
, tetapi jika melakukannya, nilainya harus sama dengan jumlah nama yang diberikan.MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan bergantung pada cara Anda menetapkan tanda ini:
Nilai Deskripsi Belum disetel Nilai defaultnya adalah COUNT
. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan olehCOUNT
, permintaan akan gagal dan tidak ada VM yang akan dibuat.1
Compute Engine membuat VM sebanyak mungkin, hingga COUNT
.Lebih dari 1
dan kurang dariCOUNT
Compute Engine membuat minimal MIN_COUNT
VM hingga maksimumCOUNT
VM. JikaMIN_COUNT
VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam suatu region. Gunakan daftar key-value pair, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah
ALLOW
, yang merupakan default, danDENY
. Berikut adalah contoh nilai untuk kolom ini:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan kolom
locationPolicy
untuk menentukan zona. Tabel berikut menunjukkan nilai yang valid untuk kolom ini:Nilai Deskripsi ANY_SINGLE_ZONE
Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya. BALANCED
Berupaya mendistribusikan VM secara merata di semua zona dalam region. ANY
Mengizinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.
Membuat VM secara massal dalam satu zona
Untuk membuat VM secara massal dalam satu zona, gunakan gcloud CLI atau Compute Engine API.
gcloud
Untuk membuat VM secara massal di zona tertentu, gunakan perintah gcloud compute
instances bulk create
berikut.
gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
Ganti kode berikut:
NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (
#
) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaanvm-#
untuk pola nama akan menghasilkan VM dengan namavm-1
,vm-2
, dan seterusnya, hingga jumlah VM yang ditentukan oleh--count
, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.
PREDEFINED_NAMES: daftar nama yang telah ditentukan untuk dibuat oleh VM. Jika Anda menggunakan flag ini dan menetapkan
COUNT
,COUNT
harus sama dengan jumlah nama yang diberikan.ZONE: zona tempat VM dibuat.
COUNT: jumlah VM yang akan dibuat. Jumlah ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh
NAME_PATTERN
. Atau, jika menggunakan--predefined-names
, Anda tidak perlu menentukanCOUNT
, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan bergantung pada cara Anda menetapkan tanda ini:
Nilai Deskripsi Belum disetel Nilai defaultnya adalah COUNT
. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan olehCOUNT
, permintaan akan gagal dan tidak ada VM yang akan dibuat.1
Compute Engine membuat VM sebanyak mungkin, hingga COUNT
.Lebih dari 1
dan kurang dariCOUNT
Compute Engine membuat minimal MIN_COUNT
VM hingga maksimumCOUNT
VM. JikaMIN_COUNT
VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.
REST
Untuk membuat VM secara massal dalam satu zona, gunakan metode instances.bulkInsert
berikut.
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }
Ganti kode berikut:
PROJECT_ID: ID project.
ZONE: zona tempat VM dibuat.
NAME_PATTERN: pola nama untuk VM. Tentukan ini atau
perInstanceProperties
. Gunakan urutan karakter hash (#
) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaanvm-#
untuk pola nama akan menghasilkan VM dengan namavm-1
,vm-2
, dan seterusnya, hingga jumlah VM yang ditentukan oleh--count
, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: daftar nama bawaan untuk dibuat VM. Tentukan ini atau
namePattern
. Jika menggunakan flag ini dan menentukanCOUNT
,COUNT
harus sama dengan jumlah nama yang diberikan.COUNT: jumlah VM yang akan dibuat. Jumlah ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh
NAME_PATTERN
. Atau, jika menggunakanperInstanceProperties
, Anda tidak perlu menentukanCOUNT
, tetapi jika melakukannya, nilainya harus sama dengan jumlah nama yang diberikan.MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan bergantung pada cara Anda menetapkan tanda ini:
Nilai Deskripsi Belum disetel Nilai defaultnya adalah COUNT
. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan olehCOUNT
, permintaan akan gagal dan tidak ada VM yang akan dibuat.1
Compute Engine membuat VM sebanyak mungkin, hingga COUNT
.Lebih dari 1
dan kurang dariCOUNT
Compute Engine membuat minimal MIN_COUNT
VM hingga maksimumCOUNT
VM. JikaMIN_COUNT
VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.
Membuat VM dengan nama host kustom secara massal
Anda dapat membuat VM dengan nama host kustom secara massal dalam suatu region atau zona menggunakan gcloud CLI atau Compute Engine API.
Anda harus mengonfigurasi data DNS secara manual untuk nama host kustom. Untuk mengetahui informasi selengkapnya, lihat batasan-batasan.
Jika Anda tidak menentukan nama host, Compute Engine akan menetapkan nama host untuk VM sebagai salah satu dari berikut ini:
VM_NAME.c.PROJECT_ID.internal
saat Anda mengaktifkan DNS globalVM_NAME.ZONE.c.PROJECT_ID.internal
saat Anda mengaktifkan DNS zona
Untuk mengetahui informasi selengkapnya, lihat nama DNS internal.
gcloud
Untuk membuat VM secara massal dengan nama host kustom di region tertentu, gunakan perintah gcloud beta compute instances bulk create
berikut.
gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-shape=TARGET_SHAPE ]
Ganti kode berikut:
NAME_PATTERN: pola nama untuk VM. Gunakan urutan karakter hash (
#
) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaanvm-#
untuk pola nama akan menghasilkan VM dengan namavm-1
,vm-2
, dan seterusnya, hingga jumlah VM yang ditentukan oleh--count
, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.
PREDEFINED_NAMES: daftar nama yang telah ditentukan untuk dibuat oleh VM. Jika Anda menggunakan flag ini dan menetapkan
COUNT
,COUNT
harus sama dengan jumlah nama yang diberikan.[VM_NAME=HOSTNAME, ...]: daftar key-value pair dari nama bawaan untuk VM dan nama host domain yang sepenuhnya memenuhi syarat yang ingin Anda tetapkan untuk VM. Nama host kustom harus sesuai dengan persyaratan RFC 1035 untuk nama host yang valid.
REGION: zona tempat VM dibuat.
COUNT: jumlah VM yang akan dibuat. Jumlah ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh
NAME_PATTERN
. Atau, jika menggunakan--predefined-names
, Anda tidak perlu menentukanCOUNT
, tetapi jika menggunakannya, jumlahnya harus sama dengan jumlah nama yang diberikan.MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan bergantung pada cara Anda menetapkan tanda ini:
Nilai Deskripsi Belum disetel Nilai defaultnya adalah COUNT
. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan olehCOUNT
, permintaan akan gagal dan tidak ada VM yang akan dibuat.1
Compute Engine membuat VM sebanyak mungkin, hingga COUNT
.Lebih dari 1
dan kurang dariCOUNT
Compute Engine membuat minimal MIN_COUNT
VM hingga maksimumCOUNT
VM. JikaMIN_COUNT
VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam suatu region. Gunakan daftar key-value pair, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah
ALLOW
, yang merupakan default, danDENY
. Berikut adalah contoh nilai untuk kolom ini:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan kolom
locationPolicy
untuk menentukan zona. Tabel berikut menunjukkan nilai yang valid untuk kolom ini:Nilai Deskripsi ANY_SINGLE_ZONE
Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya. BALANCED
Berupaya mendistribusikan VM secara merata di semua zona dalam region. ANY
Mengizinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.
REST
Untuk membuat VM dengan nama host kustom secara massal di region tertentu, gunakan metode instances.bulkInsert
berikut:
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_SHAPE" ... }
Ganti kode berikut:
PROJECT_ID: ID project.
REGION: region untuk membuat VM.
NAME_PATTERN: pola nama untuk VM. Tentukan ini atau
perInstanceProperties
. Gunakan urutan karakter hash (#
) untuk Compute Engine agar diganti dengan urutan angka. Misalnya, penggunaanvm-#
untuk pola nama akan menghasilkan VM dengan namavm-1
,vm-2
, dan seterusnya, hingga jumlah VM yang ditentukan oleh--count
, yang harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh pola nama.Saat menggunakan pola nama, Compute Engine mencoba menghindari konflik nama dengan memeriksa nama VM yang ada yang dibuat dari permintaan sebelumnya.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: daftar nama bawaan untuk dibuat VM. Tentukan ini atau
namePattern
. Jika menggunakan flag ini dan menentukanCOUNT
,COUNT
harus sama dengan jumlah nama yang diberikan.HOSTNAME_1, HOSTNAME_2, ...: nama host domain yang sepenuhnya memenuhi syarat yang ingin Anda tetapkan untuk VM. Nama host kustom harus sesuai dengan persyaratan RFC 1035 untuk nama host yang valid.
Misalnya, untuk membuat dua VM
vm-1
danvm-2
dengan nama host khususmy-host1234.example.com
dantest.example.com
, tentukan propertihostname
diperInstanceProperties
sebagai berikut:{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT: jumlah VM yang akan dibuat. Jumlah ini harus kurang dari atau sama dengan jumlah VM yang diizinkan oleh
NAME_PATTERN
. Atau, jika menggunakanperInstanceProperties
, Anda tidak perlu menentukanCOUNT
, tetapi jika melakukannya, nilainya harus sama dengan jumlah nama yang diberikan.MIN_COUNT: jumlah minimum VM yang akan dibuat. Tabel berikut menjelaskan perilaku permintaan bergantung pada cara Anda menetapkan tanda ini:
Nilai Deskripsi Belum disetel Nilai defaultnya adalah COUNT
. Jika Compute Engine tidak dapat membuat jumlah VM yang ditentukan olehCOUNT
, permintaan akan gagal dan tidak ada VM yang akan dibuat.1
Compute Engine membuat VM sebanyak mungkin, hingga COUNT
.Lebih dari 1
dan kurang dariCOUNT
Compute Engine membuat minimal MIN_COUNT
VM hingga maksimumCOUNT
VM. JikaMIN_COUNT
VM tidak dapat dibuat, permintaan akan gagal dan tidak ada VM yang dibuat.LOCATION_POLICY: zona yang akan disertakan atau dikecualikan dalam suatu region. Gunakan daftar key-value pair, dengan zona sebagai kunci dan kebijakan sebagai nilai. Nilai yang valid untuk kebijakan ini adalah
ALLOW
, yang merupakan default, danDENY
. Berikut adalah contoh nilai untuk kolom ini:"locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: distribusi VM di seluruh zona yang ditentukan. Gunakan kolom
locationPolicy
untuk menentukan zona. Tabel berikut menunjukkan nilai yang valid untuk kolom ini:Nilai Deskripsi ANY_SINGLE_ZONE
Menerapkan penempatan VM dalam satu zona, dan memprioritaskan penggunaan pemesanan yang tidak digunakan. Gunakan metode ini untuk menghindari traffic keluar jaringan lintas zona atau untuk mengurangi latensi jaringan. Ini adalah nilai defaultnya. BALANCED
Berupaya mendistribusikan VM secara merata di semua zona dalam region. ANY
Mengizinkan distribusi VM di beberapa zona dalam satu region. Memilih zona yang memiliki resource tersedia dan yang memaksimalkan pemesanan zona yang tidak digunakan.
Memeriksa status permintaan untuk membuat VM secara massal
Saat Anda membuat permintaan mutasi, Compute Engine menampilkan resource operation
yang dapat Anda polling untuk mendapatkan status operasi. Untuk mengetahui informasi
selengkapnya, lihat Menangani respons API.
Untuk mendapatkan status permintaan penyisipan massal, kirim permintaan GET
HTTP
ke resource operation
:
GET compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
Untuk mendapatkan status permintaan penyisipan massal regional, kirim permintaan berikut:
GET compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
Ganti kode berikut:
PROJECT_ID
: ID project tempat Anda membuat VMREGION
: region tempat Anda membuat VMZONE
: zona tempat Anda membuat VMOPERATION_ID
: ID operasi penyisipan massal
Objek instancesBulkInsertOperationMetadata
dalam respons berisi detail operasi berikut:
status
: statusnya adalah salah satu dari berikut:CREATING
: Pembuatan VM sedang berlangsungROLLING_BACK
: permintaan gagal dan sedang di-roll backDONE
: Pembuatan atau rollback VM berhasil diselesaikan
targetVmCount
: jumlah VM yang akan dibuat di zona yang ditentukancreatedVmCount
: jumlah VM yang sudah dibuat di zona yang ditentukanfailedToCreateVmCount
: jumlah VM yang gagal dibuat di zona yang ditentukandeletedVmCount
: jumlah VM yang dihapus sebagai bagian dari roll back dari operasi yang gagal
Kolom progress
dalam respons menunjukkan persentase penyelesaian
operasi.
Status operasi penyisipan massal adalah RUNNING
hingga Compute Engine berhasil membuat setidaknya jumlah minimum VM dan tidak ada lagi pembuatan atau rollback permintaan VM yang terjadi.
Saat operasi penyisipan massal sedang berlangsung, Anda akan melihat respons yang mirip dengan berikut ini:
{
"kind" : "compute#operation",
"id": "4653028658507445766",
"name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
"operationType": "bulkInsert",
"targetLink": "https://googleapis.com/compute/v1/projects/my-project"
"targetId": 4653028658507445766,
"status": "RUNNING",
"progress": 2,
"user": "example@google.com",
"insertTime": "2023-04-23T09:57:13.474-07:00",
"startTime": "2023-04-23T09:57:13.474-07:00",
"selfLink": "https://googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
"operationGroupId": "4653028658507445766",
"metadata":
"instances_bulk_insert_operation_metadata": {
"per_location_status": {
"zones/us-central1-a": {
"status": "CREATING",
"targetVmCount": 50,
"createdVmCount": 1
}
}
}
}
Dalam contoh ini, satu instance berhasil dibuat dan operasi selesai 2%.
Operasi tersebut menampilkan status DONE
saat Compute Engine berhasil membuat setidaknya jumlah minimum VM yang ditentukan oleh minCount
, atau saat Compute Engine menyelesaikan rollback permintaan.
Setelah berhasil membuat jumlah VM yang diminta, Anda akan mendapatkan respons yang serupa dengan berikut ini:
{
"endTime": "2023-04-23T09:58:13.474-07:00",
"id": "5053101474378293244",
"insertTime": "2023-04-23T09:57:13.474-07:00",
"instancesBulkInsertOperationMetadata": {
"perLocationStatus": {
"zones/us-central1-a": {
"status": "DONE",
"createdVmCount": 50,
"targetVmCount": 50
}
}
},
"kind": "compute#operation",
"name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
"operationGroupId": "4653028658507445766",
"operationType": "bulkInsert",
"progress": 100,
"selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c",
"startTime": "2023-09-11T16:21:55.629-07:00",
"status": "DONE",
"targetId": "625521788110",
"targetLink": "https://www.googleapis.com/compute/v1/projects/my-project",
"user": "example@google.com",
"zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a"
}
Untuk mengetahui informasi selengkapnya, lihat dokumentasi untuk objek instancesBulkInsertOperationMetadata
.
Memeriksa status VM tunggal
Untuk memeriksa status VM tunggal yang dibuat dari permintaan untuk membuat VM secara massal, gunakan gcloud CLI atau Compute Engine API.
gcloud
Dari
Operation
yang ditampilkan oleh permintaan, dapatkan nilai propertioperationGroupId
.Gunakan properti
operationGroupId
sebagai filter dengan perintahgcloud compute operations list
untuk menelusuri VM yang terkait dengan permintaan regional atau zona di semua operasi dan semua zona dalam project untuk VM yang terkait dengan permintaan regional atau zona:gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
Dapatkan properti VM lainnya dengan melakukan salah satu tindakan berikut:
Dari daftar operasi,
targetLink
merepresentasikan jalur VM. Gunakan perintahgcloud compute instances describe
dengan jalur ini sebagai nama VM untuk mendapatkan properti VM:gcloud compute instances describe VM_NAME
Gunakan perintah
gcloud compute instances list
dengan filter yang menyertakan nama VM dari daftar operasi:gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Gunakan perintah
gcloud compute instances list
untuk mendapatkan properti VM dari semua zona dan region, dan filter menurut label yang unik untuk instance atau menurut namanya:gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
REST
Dari
Operation
yang ditampilkan oleh permintaan, dapatkan nilai propertioperationGroupId
.Gunakan properti
operationGroupId
sebagai filter untuk mendapatkan daftar operasi VM yang terkait dengan permintaan regional atau zona:Jika Anda mengirim permintaan regional, gunakan metode
globalOperations.aggregatedList
untuk melakukan penelusuran di semua operasi dan semua zona dalam project:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
Jika Anda mengirim permintaan zona, gunakan metode
zoneOperations.get
untuk mencantumkan operasi di zona tersebut:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert?filter=(operationGroupId=OPERATION_GROUP_ID)
Dapatkan properti VM lainnya dengan melakukan salah satu tindakan berikut:
Dari daftar operasi,
targetLink
merepresentasikan jalur VM. Gunakan metodeinstances.get
dengan jalur ini sebagai nama VM untuk mendapatkan semua properti VM:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
Gunakan metode
instances.get
dengan filter yang menyertakan nama VM dari daftar operasi:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Gunakan metode
instances.aggregatedList
untuk mendapatkan properti VM di semua zona dan region, serta filter menurut label yang unik untuk instance atau menurut namanya:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
Contoh kode semu
Contoh kode semu berikut menunjukkan cara menyesuaikan permintaan untuk membuat VM secara massal.
Membuat VM secara massal di satu region dari kumpulan region
Kode semu berikut menjelaskan cara membuat 1.000 VM di satu region dari sekumpulan region. Saat mencoba membuat VM secara massal di satu region dari serangkaian region, permintaan tersebut akan memeriksa kapasitas terlebih dahulu. Jika kapasitas tidak cukup, permintaan akan langsung gagal dan mencoba lagi dengan region berikutnya dalam kumpulan.
Tentukan jumlah VM yang akan dibuat dalam suatu zona.
nTarget = 1000
Tentukan region untuk mencoba membuat VM.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
Lakukan iterasi melalui region, dan coba buat VM di setiap region hingga berhasil.
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
Membuat VM secara massal di satu zona pada jenis mesin
Kode semu berikut menjelaskan cara membuat beberapa VM di zona pada jenis mesin tertentu. Saat mencoba membuat VM secara massal pada jenis mesin yang sama, permintaan tersebut akan memeriksa ketersediaan jenis mesin tersebut terlebih dahulu. Jika jumlah jenis mesin tidak cukup, permintaan akan langsung gagal dan mencoba lagi dengan jenis mesin berikutnya.
Tentukan jumlah VM yang akan dibuat dan region tempat VM akan dibuat.
nTarget = 1000 region = "us-central1"
Tentukan kelompok mesin yang akan digunakan untuk membuat VM.
acceptableMachineFamilies = ["n2","c2","e2","n1"]
Lakukan iterasi melalui serangkaian jenis mesin dan coba buat VM pada jenis mesin hingga berhasil.
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
Membuat lebih dari 5.000 VM dalam satu zona
Saat membuat VM secara massal, Anda hanya dapat membuat 5.000 VM pada setiap permintaan. Kode semu berikut menjelaskan cara membuat lebih dari 5.000 VM di satu zona dengan membuat beberapa permintaan.
Tentukan jumlah VM yang akan dibuat, penghitung untuk memantau jumlah total VM yang dibuat, region untuk membuat VM, dan variabel untuk menyimpan zona tempat Compute Engine membuat VM.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
Kirim permintaan awal untuk membuat 5.000 VM, simpan zona yang ditampilkan oleh permintaan, dan perbarui penghitung jumlah VM yang dibuat.
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
Terus ajukan permintaan untuk membuat hingga 5.000 VM pada satu waktu di zona hingga Compute Engine membuat jumlah VM yang ditentukan.
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
Membuat VM secara massal dan melihat statusnya
Prosedur berikut menunjukkan cara membuat grup VM dengan nama bawaan, lalu melihat statusnya:
Tentukan jumlah VM yang akan dibuat, zona tempat dibuatnya VM, dan struktur data untuk menyimpan nama VM.
nTarget = 1000 targetZone = "us-central-1a" names = []
Buat nama berpola untuk VM dan tambahkan nama tersebut ke struktur data.
for n in range(0, 1000): names.push("instance-%d".format(n))
Buat VM, dan gunakan
perInstanceProperties
untuk menentukan namanya.call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
Dapatkan detail VM menggunakan metode
instances.list
dengan filter untuk nama-nama VM yang akan menampilkan detailnya.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
Langkah selanjutnya
Setelah membuat VM secara massal, lakukan salah satu atau kedua hal berikut untuk menyederhanakan pengelolaan VM tersebut:
Tambahkan VM ke grup instance yang tidak dikelola. Menambahkan VM ke grup instance yang tidak dikelola akan memungkinkan Anda menggunakan Cloud Monitoring. Grup instance tidak terkelola tidak menyediakan load balancing atau pengelolaan siklus proses VM.
Gunakan label. Label memungkinkan Anda untuk mengatur resource menggunakan key-value pair.