Banyak sistem software yang bergantung pada pengurutan peristiwa yang cermat mengandalkan jam sistem yang stabil dan konsisten. Log sistem yang ditulis oleh sebagian besar layanan menyertakan stempel waktu, yang membantu men-debug masalah yang terjadi di antara berbagai komponen sistem Anda. Untuk membantu menjaga agar jam sistem tetap sinkron, instance Compute Engine telah dikonfigurasi untuk menggunakan protokol waktu jaringan (NTP).
Selain menjaga sinkronisasi waktu server, NTP sangat membantu pada kasus yang jarang terjadi seperti detik kabisat. Detik kabisat adalah penyesuaian satu detik yang dilakukan pada waktu UTC untuk memperhitungkan perubahan rotasi bumi. Detik kabisat tidak terjadi dengan interval rutin, karena kecepatan rotasi Bumi bervariasi tidak teratur sebagai respons terhadap peristiwa iklim dan geologi. Detik kabisat sebelumnya telah memengaruhi berbagai layanan dan aplikasi di web secara jelas. Server NTP membantu memastikan bahwa semua server melaporkan waktu yang sama saat terjadi detik kabisat.
Dokumen ini menjelaskan cara mengonfigurasi server NTP di virtual machine (VM) agar berperilaku dengan baik jika terjadi lompatan detik.
Server NTP Google dan leap smearing
Detik kabisat untuk sistem operasi Unix biasanya diimplementasikan dengan mengulangi detik terakhir dalam satu hari. Hal ini dapat menyebabkan masalah pada software yang mengharapkan stempel waktu hanya bertambah. Untuk mengatasi masalah ini, server waktu di Google Cloud "smear" detik tambahan selama dua puluh empat jam—dua belas sebelum dan dua belas setelah peristiwa detik kabisat—sehingga komputer tidak melihat detik tambahan sekaligus sebagai stempel waktu yang berulang. Tindakan ini mengurangi risiko dalam sistem yang bergantung pada stempel waktu yang konsisten. Sebaiknya semua instance virtual machine (VM) Compute Engine dikonfigurasi untuk menggunakan layanan Google NTP internal.
Mengonfigurasi NTP untuk instance
Google Cloud tidak dapat memprediksi cara layanan NTP eksternal, seperti pool.ntp.org
, akan menangani lompatan detik. Jika memungkinkan, sebaiknya Anda tidak menggunakan sumber NTP eksternal dengan VM Compute Engine. Lebih
buruk lagi, menggunakan layanan NTP Google dan layanan eksternal dapat mengakibatkan
perubahan yang tidak dapat diprediksi dalam waktu sistem. Lebih baik menggunakan satu sumber NTP eksternal daripada menggunakan campuran, tetapi layanan NTP eksternal, seperti pool.ntp.org
, kemungkinan akan menggunakan stepping untuk menangani lompatan detik. Akibatnya,
VM Anda mungkin melihat stempel waktu yang berulang.
Pendekatan yang paling aman adalah dengan mengonfigurasi VM Compute Engine agar menggunakan satu server NTP, yaitu server NTP internal yang disediakan oleh Google. Jangan mencampur server NTP eksternal dan server NTP Google, karena dapat menyebabkan perilaku yang tidak diharapkan.
Untuk memastikan VM Anda dikonfigurasi dengan benar, ikuti petunjuk berikut.
Linux (chrony)
Secara default, sebagian besar rilis Linux baru menggunakan
chrony
untuk mengelola
setelan NTP dan sinkronisasi waktu. Untuk memastikan bahwa
chrony
hanya menggunakan layanan NTP internal, periksa konfigurasi chrony
dan hapus server NTP eksternal.
Gunakan
ssh
untuk terhubung ke instance Anda.Konsol
Untuk menggunakan konsol agar terhubung ke VM menggunakan SSH, ikuti langkah-langkah berikut:
Buka halaman VM Instances di Konsol Google Cloud.
Klik tombol SSH untuk VM yang ingin dikonfigurasi.
gcloud
Untuk menggunakan Google Cloud CLI agar dapat terhubung ke VM menggunakan SSH, jalankan perintah berikut:
gcloud compute instances ssh VM_NAME
Ganti
VM_NAME
dengan nama VM yang Anda hubungkan.Pada instance Anda, jalankan
chronyc sources
untuk memeriksa status konfigurasi NTP Anda saat ini:$ chronyc sources
Outputnya terlihat mirip dengan yang berikut ini:
210 Number of sources = 2 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* metadata.google.internal 2 6 377 4 -14us[ -28us] +/- 257us ^- 38.229.53.9 2 6 37 4 -283us[ -297us] +/- 28ms
Jika melihat satu data yang mengarah ke
metadata.google
ataumetadata.google.internal
, Anda tidak perlu melakukan perubahan apa pun. Jika Anda melihat beberapa sumber, yang merupakan campuran antarametadata.google
dan sumber publik sepertipool.ntp.org
, update sumber Anda untuk menghapus server NTP eksternal.Dalam contoh output ini, ada dua data, satu data mengarah ke
metadata.google.internal
dan data lainnya yang mengarah ke alamat eksternal. Karena ada beberapa sumber, Anda perlu memperbarui server NTP untuk menghapus alamat38.229.53.9
, seperti yang dijelaskan pada langkah berikutnya.Konfigurasikan server NTP Anda untuk menghapus server NTP eksternal.
Untuk menghapus server NTP tambahan dari daftar, edit file
/etc/chrony/chrony.conf
menggunakan editor teks favorit Anda. Temukan dan hapus semua baris yang diawali denganserver external_source_ip_or_name
.Setelah mengedit file
/etc/chrony/chrony.conf
, mulai ulang layananchrony
. Perintah untuk memulai ulang dapat bervariasi bergantung pada distribusi Linux, seperti ditunjukkan dalam contoh berikut:sudo service chrony restart
sudo systemctl restart chrony
Verifikasi konfigurasi Anda dengan menjalankan kembali perintah
chronyc sources
:$ chronyc sources
Output-nya akan terlihat seperti berikut:
210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* metadata.google.internal 2 7 377 98 -1343ns[-1588ns] +/- 396us
Linux (ntpd)
Sebagian besar distribusi Linux lama menggunakan
ntpd
untuk mengelola setelan NTP
dan sinkronisasi waktu. Untuk memastikan bahwa ntpd
hanya menggunakan layanan NTP
internal, periksa konfigurasi ntpd
dan hapus server NTP
eksternal.
Gunakan
ssh
untuk terhubung ke instance Anda.Konsol
Untuk menggunakan konsol agar terhubung ke VM menggunakan SSH, ikuti langkah-langkah berikut:
Buka halaman VM Instances di Konsol Google Cloud.
Klik tombol SSH untuk VM yang ingin dikonfigurasi.
gcloud
Untuk menggunakan Google Cloud CLI agar dapat terhubung ke VM menggunakan SSH, jalankan perintah berikut:
gcloud compute instances ssh VM_NAME
Ganti
VM_NAME
dengan nama VM yang Anda hubungkan.Pada instance Anda, jalankan
ntpq -p
untuk memeriksa status konfigurasi NTP saat ini:$ ntpq -p
Outputnya terlihat mirip dengan ini:
remote refid st t when poll reach delay offset jitter ============================================================================== *metadata.google 255.28.23.83 2 u 27 64 1 0.634 -2.537 2.285 *217.162.232.173 130.149.17.8 2 u 191 1024 176 79.245 3.589 27.454
Jika melihat satu data yang mengarah ke
metadata.google
ataumetadata.google.internal
, Anda tidak perlu melakukan perubahan apa pun. Jika Anda melihat beberapa sumber yang tercampur antarametadata.google
dan sumber publik sepertipool.ntp.org
, Anda harus mengupdate sumber untuk menghapus server NTP eksternal.Dalam contoh output ini, ada dua data, satu data mengarah ke
metadata.google
dan data lainnya yang mengarah ke alamat eksternal. Karena ada beberapa sumber, Anda harus mengupdate server NTP untuk menghapus alamat*217.162.232.173
, seperti yang dijelaskan di langkah berikutnya.Konfigurasikan server NTP Anda untuk menghapus sumber eksternal.
Untuk mengonfigurasi server NTP, edit file
/etc/ntp.conf
menggunakan editor teks favorit Anda. Temukan bagianservers
konfigurasi, dan hapus semua sumber NTP non-Google, misalnya:vim /etc/ntp.conf
# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example ... server metadata.google.internal iburst
Setelah mengedit file
/etc/ntp.conf
Anda, mulai ulang layanan NTP. Perintah untuk memulai ulang dapat bervariasi berdasarkan distribusi Linux:sudo service ntp reload
Verifikasi konfigurasi Anda dengan menjalankan kembali perintah
ntpq -p
:ntpq -p
remote refid st t when poll reach delay offset jitter ============================================================================== *metadata.google 255.28.23.83 2 u 27 64 1 0.634 -2.537 2.285
Windows
Buka halaman VM Instances di Konsol Google Cloud.
Klik tombol RDP di samping instance Windows yang ingin Anda hubungkan.
Setelah login, klik kanan ikon PowerShell dan pilih Run as administrator.
Setelah command prompt dimuat, jalankan perintah berikut untuk melihat konfigurasi NTP saat ini:
w32tm /query /configuration
[Configuration] ... Type: NTP (Local) NtpServer: metadata.google.internal, ...
Jika melihat satu data yang mengarah ke
metadata.google
ataumetadata.google.internal
, Anda tidak perlu melakukan perubahan apa pun. Jika Anda melihat beberapa sumber, yang bercampur antarametadata.google
dan sumber publik, Anda harus menghapus server eksternal. Ikuti panduan Windows untuk mengonfigurasi server NTP.Untuk memastikan kompatibilitas software yang paling luas di VM Windows, Google merekomendasikan agar Anda menggunakan driver gVNIC untuk memastikan akurasi NTP sub-milidetik dengan
metadata.google
.Jika Anda harus menggunakan VirtIO dengan VM Windows, untuk mendapatkan akurasi sub-milidetik dengan server NTP, Google merekomendasikan agar Anda tidak menggunakan Windows Time Service (menghentikan dan membatalkan pendaftaran
w32tm
).Hentikan Windows Time Service:
net stop w32time
Hapus Windows Time Service dari registry:
w32tm /unregister
Setelah Layanan Windows Time dihentikan dan dihapus dari registry, instal klien NTP Meinberg.
Ikuti petunjuk konfigurasi seperti yang diberikan dalam dokumentasi Meinberg.
Konfigurasikan server NTP untuk klien NTP Meinberg sebagai
metadata.google.internal
.Setelah Anda selesai mengonfigurasi NTP, tunggu antara 5 dan 15 menit agar jam sistem di VM menjadi stabil dengan server NTP.
Untuk mengetahui informasi tentang alasan penggunaan w32tm tidak direkomendasikan, lihat dokumentasi Masalah Umum.
Menggunakan lompatan besar dengan sistem di luar Google Cloud
Fitur leap smearing di server NTP Google adalah cara mudah untuk mengelola risiko mengenai pemutaran ulang sistem yang sensitif terhadap waktu selama satu detik. Layanan NTP lainnya mungkin memberikan hasil pengerjaan yang dapat diterima sebagian besar sistem perangkat lunak. Namun, penting bagi Anda untuk tidak mencampurkan layanan NTP lompatan Google dengan layanan langkah NTP publik.
Untuk menyinkronkan perangkat di luar Google Cloud untuk menyebarkan waktu, Anda dapat menggunakan Google Public NTP untuk perangkat tersebut. Google Public NTP menggunakan lompatan kedua yang sama seperti yang diberikan ke VM Compute Engine.
Langkah selanjutnya
- Pelajari lebih lanjut tentang kepatuhan Standar Keamanan Data PCI.
- Tinjau FAQ Google Public NTP.