Mengonfigurasi NTP di VM


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) Anda agar berperilaku dengan tepat jika terjadi lompatan detik.

Server NTP Google dan leap smearing

Detik kabisat untuk sistem operasi Unix biasanya diterapkan dengan mengulangi detik terakhir hari itu. Hal ini dapat menyebabkan masalah pada software yang mengharapkan stempel waktu untuk selalu 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 NTP Google internal.

Mengonfigurasi NTP untuk instance

Google Cloud tidak dapat memprediksi cara layanan NTP eksternal, seperti pool.ntp.org, akan menangani detik kabisat. 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 hanya satu sumber NTP eksternal daripada menggunakan campuran, tetapi layanan NTP eksternal, seperti pool.ntp.org, mungkin akan menggunakan lompatan untuk menangani detik kabisat. Akibatnya, VM Anda mungkin akan melihat stempel waktu yang berulang.

Pendekatan paling aman adalah mengonfigurasi VM Compute Engine Anda untuk menggunakan server NTP tunggal, yaitu server NTP internal yang disediakan oleh Google. Jangan mencampur server NTP eksternal dan server NTP Google, karena dapat menyebabkan perilaku yang tidak terduga. Untuk informasi selengkapnya tentang server NTP internal yang disediakan oleh Google, lihat FAQ NTP Publik Google.

Untuk memastikan VM Anda dikonfigurasi dengan benar, ikuti petunjuk berikut.

Linux (chrony)

Secara default, sebagian besar rilisan baru Linux 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.

  1. Gunakan ssh untuk terhubung ke instance Anda.

    Konsol

    Untuk menggunakan konsol guna terhubung ke VM menggunakan SSH, ikuti langkah-langkah berikut:

    1. Buka halaman VM Instances di Konsol Google Cloud.

      Buka instance VM

    2. Klik tombol SSH untuk VM yang ingin Anda konfigurasi.

      Tombol SSH.

    gcloud

    Untuk menggunakan Google Cloud CLI guna terhubung ke VM menggunakan SSH, jalankan perintah berikut:

    gcloud compute instances ssh VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda hubungkan.

  2. 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 Anda melihat satu data yang mengarah ke metadata.google atau metadata.google.internal, Anda tidak perlu melakukan perubahan apa pun. Jika Anda melihat beberapa sumber yang tercampur antara metadata.google dan sumber publik seperti pool.ntp.org, update sumber Anda untuk menghapus server NTP eksternal.

    Dalam contoh output, terdapat dua kumpulan data, satu mengarah ke metadata.google.internal dan satu lagi mengarah ke alamat eksternal. Karena ada beberapa sumber, Anda perlu mengupdate server NTP Anda untuk menghapus alamat 38.229.53.9, seperti yang dijelaskan di langkah berikut.

  3. 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 pilihan Anda. Temukan dan hapus semua baris yang diawali dengan server external_source_ip_or_name.

    Setelah mengedit file /etc/chrony/chrony.conf, mulai ulang layanan chrony. Perintah untuk memulai ulang mungkin berbeda-beda, bergantung pada distribusi Linux, seperti yang ditunjukkan dalam contoh berikut:

    sudo service chrony restart
    
    sudo systemctl restart chrony
    
  4. 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 yang lebih lama menggunakan ntpd untuk mengelola setelan NTP dan sinkronisasi waktunya. Untuk memastikan bahwa ntpd hanya menggunakan layanan NTP internal, periksa konfigurasi ntpd dan hapus server NTP eksternal.

  1. Gunakan ssh untuk terhubung ke instance Anda.

    Konsol

    Untuk menggunakan konsol guna terhubung ke VM menggunakan SSH, ikuti langkah-langkah berikut:

    1. Buka halaman VM Instances di Konsol Google Cloud.

      Buka instance VM

    2. Klik tombol SSH untuk VM yang ingin Anda konfigurasi.

      Tombol SSH.

    gcloud

    Untuk menggunakan Google Cloud CLI guna terhubung ke VM menggunakan SSH, jalankan perintah berikut:

    gcloud compute instances ssh VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda hubungkan.

  2. 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 Anda melihat satu data yang mengarah ke metadata.google atau metadata.google.internal, Anda tidak perlu melakukan perubahan apa pun. Jika Anda melihat beberapa sumber yang tercampur antara metadata.google dan sumber publik seperti pool.ntp.org, Anda harus mengupdate sumber untuk menghapus server NTP eksternal.

    Dalam contoh output, terdapat dua kumpulan data, satu mengarah ke metadata.google dan satu lagi mengarah ke alamat eksternal. Karena ada beberapa sumber, Anda perlu mengupdate server NTP untuk menghapus alamat *217.162.232.173, seperti yang dijelaskan pada langkah berikutnya.

  3. Konfigurasikan server NTP Anda untuk menghapus sumber eksternal.

    Untuk mengonfigurasi server NTP Anda, edit file /etc/ntp.conf menggunakan editor teks pilihan Anda. Temukan bagian konfigurasi servers, 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 mungkin berbeda berdasarkan distribusi Linux:

    sudo service ntp reload
    
  4. 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

  1. Buka halaman VM Instances di Konsol Google Cloud.

    Buka instance VM

  2. Klik tombol RDP di samping instance Windows yang ingin Anda hubungkan.

    Tombol SSH.

  3. Setelah login, klik kanan ikon PowerShell dan pilih Run as administrator.

    Ikon PowerShell.

  4. 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 Anda melihat satu data yang mengarah ke metadata.google atau metadata.google.internal, Anda tidak perlu melakukan perubahan apa pun. Jika Anda melihat beberapa sumber, yang tercampur antara metadata.google dan sumber publik, Anda perlu menghapus server eksternal. Ikuti panduan Windows untuk mengonfigurasi server NTP Anda.

  5. 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 Layanan Waktu Windows (hentikan dan batalkan pendaftaran w32tm).

    1. Hentikan Layanan Waktu Windows:

      net stop w32time
      
    2. Hapus Layanan Waktu Windows dari registry:

      w32tm /unregister
      
    3. Setelah Layanan Waktu Windows dihentikan dan dihapus dari registry, instal klien NTP Meinberg.

      Ikuti petunjuk konfigurasi seperti yang diberikan dalam dokumentasi Meinberg.

    4. Konfigurasikan server NTP untuk klien NTP Meinberg sebagai metadata.google.internal.

      Setelah Anda selesai mengonfigurasi NTP, tunggu antara 5 hingga 15 menit hingga jam sistem di VM stabil dengan server NTP.

      Untuk mengetahui informasi tentang alasan penggunaan w32tm tidak direkomendasikan, lihat dokumentasi Masalah Umum.

Menggunakan smearing lompatan dengan sistem yang berada 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, Anda tidak boleh menggabungkan layanan NTP leap smearing Google dengan layanan NTP lompatan publik.

Untuk menyinkronkan perangkat di luar Google Cloud ke waktu yang dikurangi, Anda dapat menggunakan NTP Publik Google untuk perangkat tersebut. NTP Publik Google menggunakan smearing detik kabisat yang sama dengan yang diberikan ke VM Compute Engine.

Langkah selanjutnya