Dokumen ini menjelaskan cara memigrasikan project yang ada dari DNS global ke DNS zona. DNS zona meningkatkan keandalan dengan mengisolasi gangguan dalam zona, sehingga mencegah gangguan pada layanan penting seperti pembuatan instance dan penyembuhan otomatis.
Sebelum memulai
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses yang digunakan untuk memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API.
Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
Memigrasikan project untuk menggunakan DNS zona:
Project Editor (
roles/resourcemanager.projectEditor
) pada project -
Memigrasikan VM ke DNS zona dalam project:
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) pada project -
Jika VM Anda menggunakan akun layanan:
Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) di akun layanan atau project -
Periksa nama DNS global dan metadata VM:
compute.projects.get
-
Tetapkan metadata pada VM:
compute.instances.setMetadata
-
Tetapkan metadata di seluruh project:
compute.projects.setCommonInstanceMetadata
-
Jika VM Anda menggunakan akun layanan:
iam.serviceAccounts.actAs
- Periksa apakah project Anda menggunakan DNS global secara default
- Menentukan kesiapan migrasi project Anda menggunakan analisis kueri
- Memigrasikan project yang kompatibel dengan DNS zona
- Memperbaiki kueri yang tidak kompatibel
- Pantau log DNS global untuk mengonfirmasi kesiapan migrasi.
- Migrasikan project yang tersisa ke DNS zona
- Memeriksa apakah perubahan pada DNS zona memengaruhi project Anda
Di konsol Google Cloud , buka halaman Metadata Compute Engine.
Di tab Metadata, lihat setelan
vmdnssetting
, jika ada. Nilai yang ditetapkan menunjukkan apakah project menggunakan DNS global secara default.GlobalDefault
: project mengaktifkan DNS global.ZonalOnly
: project mengaktifkan DNS zona. Project ini tidak perlu dimigrasikan.
Jika setelan metadata
vmdnssetting
tidak tercantum, maka periksa apakah organisasi Anda menggunakan DNS Global secara default.GLOBAL_DEFAULT
: project mengaktifkan DNS global.ZONAL_ONLY
: project mengaktifkan DNS zona. Project ini tidak perlu dimigrasikan.GLOBAL_DEFAULT
: project mengaktifkan DNS global.ZONAL_ONLY
: project mengaktifkan DNS zona. Project ini tidak perlu dimigrasikan.zonal_dns_ready
(Kueri yang kompatibel): Metrik ini menampilkan jumlah total kueri dalam jangka waktu 100 hari yang dapat diselesaikan dengan sukses menggunakan DNS zonal.zonal_dns_risky
(Kueri yang tidak kompatibel): Metrik ini menunjukkan jumlah total kueri yang tidak dapat diselesaikan menggunakan DNS zonal. Kueri ini biasanya melibatkan komunikasi lintas region atau skenario lain yang menyebabkan resolusi zona gagal. Yang penting, jika metrik ini memiliki nilai selain nol, project Anda belum siap untuk migrasi. Anda harus mengatasi kueri yang tidak kompatibel ini sebelum beralih ke DNS zonal.-
Di konsol Google Cloud , buka halaman leaderboard Metrics explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.
Di sisi kanan toolbar yang berisi kolom Pilih metrik, klik Editor kode, MQL, atau PromQL.
Jika kolom input kueri tidak berjudul MQL Query, maka di sudut kanan bawah kolom input kueri, untuk Language, pilih MQL.
Di kolom input kueri, masukkan teks berikut persis seperti yang ditampilkan:
fetch compute.googleapis.com/Location | metric 'compute.googleapis.com/global_dns/request_count' | every 1d | within 7d
Klik tombol Run query.
Konsol Google Cloud menampilkan diagram dua metrik (
zonal_dns_ready
danzonal_dns_risky
) serta jumlah kueri yang dibuat selama jangka waktu untuk setiap metrik.Periksa nilai untuk metrik
zonal_dns_risky
.- Jika nilainya adalah
0
, berarti project siap dimigrasikan ke DNS zonal. Anda dapat memigrasikan project, seperti yang dijelaskan dalam Memigrasikan project yang siap untuk DNS zona. - Jika nilainya adalah angka bukan nol, seperti
0.02k
seperti yang ditunjukkan pada screenshot sebelumnya, berarti ada beberapa kueri yang mungkin tidak berfungsi setelah Anda bermigrasi ke DNS zonal. Project belum siap untuk migrasi. Lanjutkan dengan langkah-langkah di Memperbaiki kueri yang tidak kompatibel.
- Jika nilainya adalah
Klik tombol Gunakan Zonal DNS di konsol Google Cloud .
Saat Anda melihat halaman Instance VM untuk project Anda, jika project Anda siap untuk migrasi (kompatibel dengan kueri DNS zona), banner akan menyertakan rekomendasi untuk Menggunakan DNS Zona. Rekomendasi ini didasarkan pada penggunaan DNS internal dalam project, tetapi terbatas pada 30 hari terakhir.
Jika Anda mengklik tombol Use Zonal DNS, metadata project akan diperbarui untuk menggunakan DNS zona.
Opsional: Lihat dan kueri metadata VM untuk mengonfirmasi perubahan metadata.
Ubah metadata project secara manual untuk menggunakan DNS zona.
Aktifkan DNS zona untuk instance Anda dengan menetapkan entri metadata
vmDnsSetting
untuk project. Setelah Anda menyetel entri metadata ini, instance compute Anda hanya dapat diakses berdasarkan nama DNS zonanya (VM_NAME.ZONE.c.PROJECT_ID.internal) saat menggunakan jalur penelusuran. Instance masih mempertahankan jalur penelusuran zona dan global, tetapi nama DNS globalnya, yang tidak menyertakan ZONE sebagai bagian dari nama DNS internal, tidak lagi berfungsi. Hanya instance di region dan project yang sama yang dapat mengakses satu sama lain menggunakan nama global saat setelan ini diterapkan.Konsol
Untuk memperbarui setelan di tingkat project, di konsolGoogle Cloud , buka halaman Metadata Compute Engine.
Klik
Edit.Jika kunci dengan nilai
VmDnsSetting
ada, ubah nilainya menjadiZonalOnly
.Jika kunci dengan nilai
VmDnsSetting
tidak ada, klik Tambahkan item.- Pada kolom Kunci, masukkan
VmDnsSetting
. - Di kolom Nilai, masukkan
ZonalOnly
.
- Pada kolom Kunci, masukkan
Untuk menyelesaikan pengubahan entri metadata kustom, klik Simpan.
gcloud
Untuk memperbarui setelan metadata untuk project saat ini, gunakan perintah
project-info add-metadata
.gcloud compute project-info add-metadata \ --metadata vmDnsSetting=ZonalOnly
Opsional: Untuk memverifikasi setelan metadata project, gunakan perintah berikut:
gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Ganti PROJECT_ID dengan nama project yang akan dikueri.
REST
Untuk memperbarui setelan metadata di tingkat project, buat permintaan
POST
menggunakan metode projects.setCommonInstanceMetadata.Opsional: Untuk melakukan penguncian optimis, Anda dapat menyediakan sidik jari secara opsional.
Sidik jari adalah string karakter acak yang dihasilkan oleh Compute Engine. Sidik jari berubah setelah setiap permintaan, dan jika Anda memberikan sidik jari yang tidak cocok, permintaan Anda akan ditolak.
Jika Anda tidak memberikan sidik jari, pemeriksaan konsistensi tidak akan dilakukan, dan permintaan
projects.setCommonInstanceMetadata
akan berhasil. Jika Anda menggunakan metodeinstances.setMetadata
, sidik jari akan selalu diperlukan.Untuk mendapatkan sidik jari saat ini dari sebuah project, panggil metode
project.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Outputnya mirip dengan hal berikut ini:
{ "name": "myproject", "commonInstanceMetadata": { "kind": "compute#metadata", "fingerprint": "FikclA7UBC0=", ... } }
Buat permintaan
POST
ke metodeprojects.setCommonInstanceMetadata
untuk menetapkan pasangan nilai kunci metadata:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "fingerprint": "FikclA7UBC0=", "items": [ { "key": "vmDnsSetting", "value": "ZonalOnly" } ] }
Ganti
PROJECT_ID
dengan project ID Anda.
Setelah mengonfigurasi entri metadata
vmDnsSetting
untuk project, muat ulang lease DHCP di setiap instance dalam project tersebut. Anda dapat memuat ulang lease dengan memulai ulang instance, atau dengan menunggu hingga lease berakhir, atau dengan menjalankan salah satu perintah berikut:Instance Linux
sudo dhclient -v -r
Instance Windows
ipconfig /renew
- Melakukan panggilan ke instance virtual di project lain
- Melakukan panggilan ke instance komputasi di region lain
Gunakan Logs Explorer untuk mengakses dan membuat kueri penggunaan DNS global untuk instance komputasi project Anda.
Pilih project.
Terapkan filter nama resource dan log:
- Klik Resource.
- Dalam dialog Select resource, pilih VM Instance, lalu klik Apply.
- Klik Log name.
Dalam dialog Select log names, pilih gdnsusage, lalu klik Apply.
Atau, Anda dapat memasukkan kode berikut ke dalam kolom kueri:
resource.type="gce_instance" log_name="projects/PROJECT_ID/logs/compute.googleapis.com%2Fgdnsusage"
Di panel Query results, setiap kueri memiliki kolom
jsonPayload
. Setiap kolomjsonPayload
berisi informasi berikut:- Nama VM sumber, project ID-nya, dan nama zona.
- Nama VM tujuan, project ID, dan nama zonanya.
Pesan debug yang memberikan informasi tentang cara memperbarui kueri DNS global yang tidak dapat diselesaikan menggunakan nama DNS zona. Ini adalah kueri yang dianggap memblokir migrasi yang harus Anda debug dan perbaiki.
"To use Zonal DNS, update the Global DNS query sent from the source VM VM_NAME.c.PROJECT_ID.internal to the following zonal FQDN: VM_NAME.ZONE.c.PROJECT_ID.internal"
Jumlah kueri yang menunjukkan jumlah kueri pemblokiran migrasi yang dikirim VM sumber ke VM tujuan untuk hari tersebut.
Screenshot berikut menunjukkan informasi kolom
jsonPayload
di halaman konsol Logs Explorer.Gunakan informasi di
jsonPayload
yang Anda peroleh di langkah sebelumnya untuk menentukan FQDN yang akan digunakan untuk memperbarui kueri DNS global secara manual agar menggunakan DNS zona, dan siapkan project untuk migrasi. Kasus penggunaan paling umum untuk tempat memperbarui FQDN dan menyelesaikan kompatibilitas adalah sebagai berikut:- Nama DNS internal dari server metadata: Tidak ada tindakan yang diperlukan karena nama DNS yang ditampilkan akan segera berubah menjadi FQDN zonal setelah migrasi ke DNS zonal. Jika nama DNS di-cache, Anda hanya perlu melakukan satu panggilan lagi untuk memperbarui nilai cache.
- Nama DNS internal yang digunakan untuk mengakses VM di region lain: Jika Anda memiliki aplikasi yang menggunakan nama DNS internal untuk VM di region yang berbeda, Anda dapat mengubah kebijakan DHCP atau file konfigurasi untuk menyertakan zona di region lain.
- FQDN global hard code: Jika Anda memiliki aplikasi yang menggunakan nama FQDN global hard code untuk VM, Anda dapat memperbarui panggilan dalam aplikasi untuk menggunakan nama DNS internal atau FQDN zona. Anda dapat melakukan perubahan ini melalui perubahan kode atau perubahan konfigurasi di Terraform.
- VM dalam project layanan yang menggunakan jaringan VPC Bersama: Untuk me-resolve nama DNS VM dalam project layanan yang menggunakan jaringan VPC Bersama, Anda harus menggunakan FQDN zona VM.
Setelah Anda memperbarui kueri DNS global untuk menggunakan DNS zona, lakukan hal berikut:
Gunakan halaman Logs Explorer untuk membuat kueri penggunaan DNS global lagi. Setelah Anda memperbaiki semua kueri DNS global yang memblokir, tidak akan ada log debug yang ditampilkan di hasil kueri.
Periksa ulang metrik pemantauan untuk melihat apakah semua kueri DNS yang tidak kompatibel telah dihapus.
- Buat dasbor: Visualisasikan pola kueri DNS global yang tidak kompatibel untuk mendapatkan insight tentang perilaku komunikasi aplikasi Anda.
- Log gabungan: Analisis log DNS di seluruh organisasi Anda untuk mengidentifikasi tren yang lebih luas dan potensi area yang perlu ditingkatkan.
Komunikasi instance command line
Tugas: Coba ping salah satu instance dari instance lain menggunakan gcloud CLI.
gcloud compute ssh VM-A --command "ping VM-B"
Potensi Error: "Could not resolve host"—Error ini berarti
VM-A
tidak dapat menemukan alamat IP untukVM-B
.Penyelesaian: Perbarui nama host yang Anda gunakan untuk
VM-B
ke nama domain yang sepenuhnya memenuhi syarat (FQDN), yang mencakup nama zona:INSTANCE_NAME.ZONE.c.PROJECT_ID.internal
Komunikasi instance dalam layanan Compute Engine
Tugas: Jika Anda menggunakan health check untuk grup instance terkelola (MIG) yang mengandalkan nama DNS internal, periksa apakah health check berhasil.
Kemungkinan Error: "Pemeriksaan kondisi gagal"—Hal ini menunjukkan bahwa pemeriksaan kondisi tidak dapat mencapai targetnya karena masalah resolusi DNS.
Penyelesaian: Pastikan pemeriksaan kondisi menggunakan FQDN instance target, termasuk nama zona.
Kasus penggunaan spesifik per aplikasi
Banyak aplikasi mengandalkan DNS internal untuk tugas seperti berikut:
- Menghubungkan ke database (misalnya, Cloud SQL)
Berinteraksi dengan antrean pesan (misalnya, Pub/Sub)
Kemungkinan Error: Error ini bervariasi bergantung pada aplikasi, tetapi mungkin mencakup:
- "Tidak dapat terhubung ke SERVICE_NAME"
- "Waktu koneksi habis"
- "No such host is known" (Tidak ada host seperti itu)
Penyelesaian: Periksa konfigurasi aplikasi Anda untuk memastikan aplikasi tersebut menggunakan FQDN (termasuk nama zona) saat mereferensikan layanan.
Tambahkan berikut ini ke metadata project:
vmDnsSetting=GlobalDefault
.Untuk mengetahui informasi tentang cara menetapkan nilai metadata project, lihat Menetapkan dan menghapus metadata kustom.
Pastikan tidak ada instance dalam project yang memiliki nilai metadata
vmDnsSetting
yang ditetapkan keZonalOnly
.gcloud compute instances describe INSTANCE_NAME --flatten="metadata[]"
Ganti INSTANCE_NAME dengan nama instance yang akan diperiksa.
Perbarui lease DHCP di setiap instance. Anda dapat memuat ulang lease dengan memulai ulang instance, menunggu hingga lease berakhir, atau dengan menjalankan salah satu perintah berikut di sistem operasi tamu:
- Instance Linux:
sudo dhclient -v -r
- Instance Windows Server:
ipconfig /renew
- Instance Linux:
Perbarui metadata instance untuk menyertakan
vmDnsSetting=GlobalDefault
.Untuk mengetahui informasi tentang cara menetapkan nilai metadata instance komputasi, lihat Menetapkan dan menghapus metadata kustom.
Untuk memaksa perubahan konfigurasi DNS, mulai ulang jaringan instance menggunakan salah satu perintah berikut:
Untuk Container-Optimized OS atau Ubuntu:
sudo systemctl restart systemd-networkd
Untuk CentOS, RedHat EL, Fedora CoreOS, atau Rocky Linux:
sudo systemctl restart network
atau
sudo systemctl restart NetworkManager.service
Untuk Debian:
sudo systemctl restart networking
Untuk sistem Linux dengan
nmcli
:sudo nmcli networking off sudo nmcli networking on
Untuk Windows:
ipconfig /renew
Tetapkan setelan metadata project
vmDnsSetting
keGlobalDefault
di project yang memiliki container dan VM.Mulai ulang container agar setelan DNS-nya kembali ke status awal.
- Tinjau Google Cloud hierarki resource untuk mendapatkan informasi tentang hubungan antara organisasi, folder, dan project.
- Pelajari lebih lanjut DNS internal untuk Compute Engine.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk memigrasikan project agar menggunakan DNS zonal, minta administrator Anda untuk memberi Anda peran IAM berikut:
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk memigrasikan project agar menggunakan DNS zonal. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk memigrasikan project agar menggunakan DNS zona:
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Memigrasikan project Anda ke DNS zona
Untuk memigrasikan project agar menggunakan DNS zona, selesaikan tugas berikut:
Periksa apakah project Anda menggunakan DNS global secara default
Periksa project Anda untuk melihat apakah project tersebut perlu dimigrasikan dari penggunaan DNS global ke DNS zona. Anda hanya perlu memigrasikan project yang dikonfigurasi untuk menggunakan DNS global sebagai default untuk nama DNS internal yang dibuat dalam project.
Konsol
gcloud
Jalankan perintah gcloud CLI berikut untuk memeriksa nilai
vmDnsSetting
.gcloud compute project-info describe --project=PROJECT_ID --flatten="vmDnsSetting"
Ganti PROJECT_ID dengan nama project.
Nilai yang ditampilkan menunjukkan apakah project menggunakan DNS global secara default.
REST
Periksa nilai
vmDnsSetting
menggunakan metodeprojects.get
. Contoh ini menggunakan parameter kuerifields
untuk hanya menyertakan kolom yang ingin Anda lihat.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID?fields=id,name,vmDnsSetting
Ganti PROJECT_ID dengan project ID.
Nilai
vmDnsSetting
menunjukkan apakah project menggunakan DNS global secara default.Menggunakan analisis kueri untuk menentukan kesiapan migrasi project
Untuk menilai apakah project dapat dimigrasikan ke DNS zona tanpa perubahan kode atau mengubah cara penggunaan DNS global, Google Cloud menganalisis histori kueri DNS Anda. Analisis ini memberikan metrik berikut yang menunjukkan kompatibilitas project dengan DNS zona:
Untuk melihat metrik ini, gunakan Metrics Explorer di konsol Google Cloud .
Memigrasikan project yang kompatibel dengan DNS zona
Gunakan salah satu opsi berikut untuk memigrasikan project yang siap dialihkan ke DNS zona:
Memperbaiki kueri yang tidak kompatibel
Project yang belum siap dimigrasikan berarti setidaknya satu kueri DNS yang tidak kompatibel dilakukan dalam jangka waktu tertentu, seperti 30 hari terakhir. Kueri yang tidak kompatibel mungkin memiliki atribut berikut:
Jika project Anda memiliki kueri yang tidak kompatibel, banner berikut akan muncul di halaman VM instances di konsol Google Cloud :
Untuk memperbaiki semua kueri yang tidak kompatibel, sebaiknya gunakan nama domain yang sepenuhnya memenuhi syarat (FQDN) zonal dari instance sumber dalam kueri. Pendekatan ini memastikan resolusi kueri tetap tidak terganggu setelah memigrasikan project ke DNS zona.
Untuk mengatasi kueri yang tidak kompatibel, lakukan langkah-langkah berikut:
Melihat log DNS global di Logs Explorer
Logs Explorer terutama menampilkan log DNS global untuk project dengan kueri yang tidak kompatibel dengan DNS zona. Log ini membantu Anda mengidentifikasi dan menganalisis kueri bermasalah tersebut sebelum melakukan migrasi.
Anda juga dapat menggunakan Logs Explorer untuk kueri yang tidak kompatibel ini untuk melakukan hal berikut:
Memeriksa apakah perubahan pada DNS zona memengaruhi project Anda
Setelah bermigrasi ke DNS zonal, Anda harus memverifikasi bahwa aplikasi dan layanan Anda masih berfungsi dengan benar. Karena DNS zona mengubah cara nama DNS internal diselesaikan, beberapa aplikasi mungkin mengalami masalah jika mengandalkan nama DNS global.
Bagian berikut menjelaskan cara memeriksa potensi dampak dan cara menyelesaikannya:
Mengembalikan ke penggunaan DNS global
Anda dapat mengurungkan migrasi ke DNS zona dengan mengubah jenis DNS internal default kembali ke DNS global. Anda dapat melakukannya di tingkat organisasi, project, instance, atau container.
Mengembalikan ke penggunaan DNS global untuk project
Untuk mengembalikan project agar menggunakan DNS global, selesaikan langkah-langkah berikut.
Mengembalikan ke penggunaan DNS global untuk instance
Untuk mengembalikan instance tertentu agar menggunakan DNS global, selesaikan langkah-langkah berikut.
Mengembalikan ke penggunaan DNS global untuk container
Jika Anda menjalankan aplikasi atau workload di container, di Google Kubernetes Engine, atau di lingkungan fleksibel App Engine, konfigurasi DNS di setelan container Anda mungkin tidak otomatis diupdate sampai Anda memulai ulang container. Untuk menonaktifkan DNS zona di aplikasi container ini, selesaikan langkah-langkah berikut.
Memecahkan masalah proses migrasi DNS global ke DNS zona
Jika Anda mengalami masalah dengan proses migrasi, lihat panduan pemecahan masalah.
Langkah berikutnya
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-14 UTC.
-