Dokumen ini menjelaskan cara memigrasikan project yang ada dari DNS global ke DNS zonal. DNS zona meningkatkan keandalan dengan mengisolasi pemadaman dalam zona, mencegah gangguan pada layanan penting seperti pembuatan instance dan pemulihan otomatis.
Sebelum memulai
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses yang digunakan untuk memverifikasi identitas Anda agar dapat mengakses Google Cloud layanan dan API.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Memigrasikan project untuk menggunakan DNS zona:
Project Editor (
roles/resourcemanager.projectEditor
) pada project tersebut -
Memigrasikan VM ke DNS zona dalam project:
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) di 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
-
Menetapkan metadata pada VM:
compute.instances.setMetadata
-
Menetapkan metadata di seluruh project:
compute.projects.setCommonInstanceMetadata
-
Jika VM Anda menggunakan akun layanan:
iam.serviceAccounts.actAs
- Memeriksa 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.
- Memigrasikan 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 telah mengaktifkan DNS global.ZonalOnly
: project telah mengaktifkan DNS zona. Project ini tidak perlu dimigrasikan.
Jika setelan metadata
vmdnssetting
tidak tercantum, periksa apakah organisasi Anda menggunakan DNS Global secara default.GLOBAL_DEFAULT
: project telah mengaktifkan DNS global.ZONAL_ONLY
: project telah mengaktifkan DNS zona. Project ini tidak perlu dimigrasikan.GLOBAL_DEFAULT
: project telah mengaktifkan DNS global.ZONAL_ONLY
: project telah mengaktifkan DNS zona. Project ini tidak perlu dimigrasikan.zonal_dns_ready
(Kueri yang kompatibel): Metrik ini mewakili jumlah total kueri dalam jangka waktu 100 hari yang berhasil di-resolve menggunakan DNS zonal.zonal_dns_risky
(Kueri yang tidak kompatibel): Metrik ini mewakili jumlah total kueri yang tidak dapat diselesaikan menggunakan DNS zonal. Kueri ini biasanya melibatkan komunikasi lintas region atau skenario lain saat resolusi zona gagal. Yang terpenting, jika metrik ini memiliki nilai yang bukan nol, project Anda belum siap untuk dimigrasikan. 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 Select a metric, klik Code editor, MQL, atau PromQL.
Jika kolom input kueri tidak berjudul Kueri MQL, di sudut kanan bawah kolom input kueri, untuk Bahasa, 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 sesuai yang dibuat selama jangka waktu untuk setiap metrik.Periksa nilai untuk metrik
zonal_dns_risky
.- Jika nilainya
0
, project siap dimigrasikan ke DNS zonal. Anda dapat memigrasikan project, seperti yang dijelaskan dalam Memigrasikan project yang siap ke DNS zona. - Jika nilainya bukan nol, seperti
0.02k
seperti yang ditunjukkan dalam screenshot sebelumnya, ada beberapa kueri yang mungkin tidak berfungsi setelah Anda bermigrasi ke DNS zonal. Project belum siap untuk dimigrasikan. Lanjutkan dengan langkah-langkah di Memperbaiki kueri yang tidak kompatibel.
- Jika nilainya
Klik tombol Use Zonal DNS di konsol Google Cloud.
Saat Anda melihat halaman Instance VM untuk project, jika project Anda sudah 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 buat 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 menetapkan entri metadata ini, instance compute Anda hanya dapat diakses oleh 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 saling mengakses menggunakan nama global saat setelan ini diterapkan.Konsol
Untuk memperbarui setelan di tingkat project, di konsol Google 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 Value, masukkan
ZonalOnly
.
- Pada kolom Kunci, masukkan
Untuk menyelesaikan perubahan 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 untuk 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 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 key-value pair 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 komputasi 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.
- Pada 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-nya, dan nama zona.
Pesan debug yang memberikan informasi tentang cara mengupdate kueri DNS global yang tidak dapat di-resolve menggunakan nama DNS zona. Kueri ini dianggap sebagai kueri pemblokir 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 yang paling umum untuk tempat memperbarui FQDN dan menyelesaikan kompatibilitas adalah sebagai berikut:- Nama DNS internal dari server metadata: Tidak diperlukan tindakan karena nama DNS yang ditampilkan akan segera berubah menjadi FQDN zona setelah migrasi ke DNS zona. 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 memiliki aplikasi yang menggunakan nama DNS internal untuk VM di region yang berbeda, Anda dapat mengubah kebijakan atau file konfigurasi DHCP untuk menyertakan zona di region lain.
- FQDN global hard code: Jika 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 dalam hasil kueri.
Periksa kembali 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: Menganalisis log DNS di seluruh organisasi untuk mengidentifikasi tren yang lebih luas dan potensi area yang perlu ditingkatkan.
Komunikasi instance command line
Tugas: Coba lakukan ping pada satu instance dari instance lain menggunakan gcloud CLI.
gcloud compute ssh VM-A --command "ping VM-B"
Potensi Error: "Tidak dapat me-resolve host"—Artinya,
VM-A
tidak dapat menemukan alamat IP untukVM-B
.Solusi: Perbarui nama host yang Anda gunakan untuk
VM-B
ke nama domain yang sepenuhnya memenuhi syarat (FQDN), yang menyertakan 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 lulus.
Error yang Mungkin Terjadi: "Pemeriksaan kesehatan gagal"—Hal ini menunjukkan bahwa pemeriksaan kesehatan tidak dapat mencapai targetnya karena masalah resolusi DNS.
Penyelesaian: Pastikan health check menggunakan FQDN instance target, termasuk nama zona.
Kasus penggunaan khusus aplikasi
Banyak aplikasi mengandalkan DNS internal untuk tugas seperti berikut:
- Menghubungkan ke database (misalnya, Cloud SQL)
Berinteraksi dengan antrean pesan (misalnya, Pub/Sub)
Potensi Error: Hal ini bervariasi bergantung pada aplikasi, tetapi dapat mencakup:
- "Tidak dapat terhubung ke SERVICE_NAME"
- "Waktu tunggu koneksi habis"
- "Tidak ada host seperti itu yang diketahui"
Solusi: Periksa konfigurasi aplikasi Anda untuk memastikan aplikasi tersebut menggunakan FQDN (termasuk nama zona) saat mereferensikan layanan.
Tambahkan hal berikut ke metadata project:
vmDnsSetting=GlobalDefault
.Untuk mengetahui informasi tentang cara menetapkan nilai metadata project, lihat Menetapkan dan menghapus metadata kustom.
Verifikasi bahwa 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.
Muat ulang 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
pada project yang memiliki penampung dan VM.Mulai ulang penampung agar setelan DNS-nya kembali ke status awal.
- Tinjau Google Cloud hierarki resource untuk mengetahui informasi tentang hubungan antara organisasi, folder, dan project.
- Pelajari DNS internal untuk Compute Engine lebih lanjut.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam Google Cloud dokumentasi autentikasi.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna memigrasikan project agar menggunakan DNS zonal, minta administrator 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:
Memeriksa 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 apa pun 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 akan 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 beralih ke DNS zona:
Memperbaiki kueri yang tidak kompatibel
Project yang belum siap dimigrasikan berarti setidaknya ada satu kueri DNS yang tidak kompatibel yang dibuat 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 zonal.
Untuk mengatasi kueri yang tidak kompatibel, lakukan hal 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 guna melakukan hal berikut:
Memeriksa apakah perubahan pada DNS zona memengaruhi project Anda
Setelah bermigrasi ke DNS zonal, Anda harus memastikan 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 dampaknya dan cara menyelesaikannya:
Kembali menggunakan 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 penampung.
Kembali menggunakan DNS global untuk project
Untuk mengembalikan project agar menggunakan DNS global, selesaikan langkah-langkah berikut.
Kembali menggunakan DNS global untuk instance
Untuk mengembalikan instance tertentu agar menggunakan DNS global, selesaikan langkah-langkah berikut.
Kembali menggunakan DNS global untuk penampung
Jika Anda menjalankan aplikasi atau beban kerja dalam 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 zonal di aplikasi penampung 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-02-20 UTC.
-