Sinkronisasi waktu untuk VM Windows di Azure

Berlaku untuk: ✔️ Windows VM ✔️ Kumpulan skala fleksibel ✔️ Kumpulan skala seragam

Sinkronisasi waktu penting untuk keamanan dan korelasi peristiwa. Sinkronisasi waktu terkadang digunakan untuk implementasi transaksi terdistribusi. Akurasi waktu antar-beberapa sistem komputer dicapai melalui sinkronisasi. Sinkronisasi dapat dipengaruhi oleh beberapa hal, termasuk reboot dan lalu lintas antara sumber waktu dan komputer yang mengambil waktu.

Azure saat ini didukung oleh infrastruktur yang menjalankan Windows Server 2016. Windows Server 2016 memiliki algoritma yang ditingkatkan, yang digunakan untuk mengoreksi waktu dan mengondisikan jam lokal untuk disinkronkan dengan Waktu Universal Terkoordinasi. Windows Server 2016 juga meningkatkan layanan VMICTimeSync yang mengatur bagaimana VM disinkronkan dengan host untuk waktu yang akurat. Peningkatan mencakup waktu awal yang lebih akurat pada permulaan VM atau pemulihan VM dan koreksi latensi interupsi untuk contoh yang disediakan bagi Waktu Windows (W32time).

Catatan

Untuk gambaran singkat tentang layanan Waktu Windows, lihat video ringkasan tingkat tinggi ini.

Untuk informasi selengkapnya, lihat Waktu yang akurat untuk Windows Server 2016.

Gambaran Umum

Akurasi untuk jam komputer diukur pada seberapa dekat jam komputer dengan standar Waktu Universal Terkoordinasi (UTC). UTC ditentukan oleh sampel jam atom akurat multinasional yang hanya dapat meleset selama satu detik dalam 300 tahun. Namun, membaca UTC secara langsung membutuhkan perangkat keras khusus. Sebaliknya, server waktu disinkronkan ke UTC dan diakses dari komputer lain untuk memberikan skalabilitas dan ketahanan. Setiap komputer memiliki layanan sinkronisasi waktu yang berjalan dan mengetahui server jam mana yang akan digunakan lalu secara berkala memeriksa apakah jam komputer perlu dikoreksi dan menyesuaikan waktu jika diperlukan.

Host Azure disinkronkan ke server waktu Microsoft internal yang mengambil waktu mereka dari perangkat Stratum 1 milik Microsoft, dengan antena GPS. Komputer virtual di Azure dapat mengandalkan host untuk meneruskan waktu yang akurat (waktu host) ke VM atau VM dapat langsung mendapatkan waktu dari server waktu, atau kombinasi keduanya.

Interaksi komputer virtual dengan host juga dapat memengaruhi jam. Selama pemeliharaan penyimpanan memori, VM dijeda hingga 30 detik. Misalnya, sebelum pemeliharaan dimulai, jam VM menunjukkan 10:00:00 AM dan berlangsung selama 28 detik. Setelah VM dilanjutkan, jam pada VM masih akan menunjukkan 10:00:00 AM, yang akan menjadi tidak tepat selama 28 detik. Untuk mengoreksi selisih ini, layanan VMICTimeSync memantau apa yang terjadi pada host dan meminta agar perubahan dibuat di VM untuk mengkompensasi kesalahan ini.

Layanan VMICTimeSync beroperasi dalam mode sampel atau sinkronisasi dan hanya akan memengaruhi jam ke depannya. Dalam mode sampel, yang mengharuskan W32time berjalan, layanan VMICTimeSync melakukan polling setiap 5 detik dan menyediakan sampel waktu bagi W32time. Sekitar setiap 30 detik, layanan W32time mengambil sampel waktu terbaru dan menggunakannya untuk memengaruhi jam tamu. Mode sinkronisasi diaktifkan jika tamu telah dilanjutkan atau jika jam tamu meleset lebih dari 5 detik di belakang jam host. Dalam beberapa kasus di mana layanan W32time berjalan dengan baik, kasus terakhir seharusnya tidak pernah terjadi.

Jika sinkronisasi waktu tidak bekerja, jam pada VM akan mengakumulasi kesalahan. Ketika hanya ada satu VM, efeknya mungkin tidak signifikan kecuali beban kerja memerlukan pencatatan waktu yang sangat akurat. Namun dalam kebanyakan kasus, kita memiliki beberapa VM yang saling tersambung yang menggunakan waktu untuk melacak transaksi dan waktu harus konsisten di seluruh penyebaran. Ketika waktu antar-VM berbeda, Anda bisa melihat efek berikut:

  • Autentikasi akan gagal. Protokol keamanan seperti Kerberos atau teknologi yang bergantung pada sertifikat mengandalkan waktu yang konsisten di seluruh sistem.
  • Sangat sulit untuk mencari tahu apa yang telah terjadi dalam sistem jika log (atau data lain) memiliki waktu yang berbeda. Peristiwa yang sama akan terlihat seperti terjadi pada waktu yang berbeda, sehingga mempersulit korelasi.
  • Jika jam mati, kemungkinan akan terjadi kesalahan dalam penghitungan tagihan.

Hasil terbaik untuk penyebaran Windows dicapai dengan menggunakan Windows Server 2016 sebagai sistem operasi tamu, yang memastikan bahwa Anda dapat menggunakan peningkatan terbaru dalam sinkronisasi waktu.

Opsi konfigurasi

Ada tiga opsi untuk mengonfigurasi sinkronisasi waktu untuk VM Windows Anda yang di-host di Azure:

Gunakan server default

Secara default gambar Windows OS VM dikonfigurasi untuk w32time guna sinkronisasi dari dua sumber:

  • Penyedia NtpClient, yang mendapatkan informasi dari time.windows.com.
  • Layanan VMICTimeSync, digunakan untuk mengkomunikasikan waktu host ke VM dan membuat koreksi setelah VM dijeda untuk pemeliharaan. Host Azure menggunakan perangkat Stratum 1 milik Microsoft untuk memastikan waktu tetap akurat.

w32time akan lebih mengutamakan penyedia waktu dalam urutan prioritas berikut: tingkat stratum, penundaan akar, dispersi akar, offset waktu. Dalam kebanyakan kasus, w32time pada Azure VM akan lebih mengutamakan waktu host karena evaluasi yang akan dilakukan untuk membandingkan kedua sumber waktu.

Untuk mesin yang tergabung dengan domain, domain itu sendiri menetapkan hierarki sinkronisasi waktu, tetapi akar siratan masih perlu mengambil waktu dari suatu tempat dan pertimbangan berikut masih akan berlaku.

Khusus host

Karena time.windows.com adalah server NTP publik, waktu sinkronisasi menggunakan server ini membutuhkan pengiriman lalu lintas melalui internet, berbagai keterlambatan paket dapat berdampak negatif pada kualitas sinkronisasi waktu. Menghapus time.windows.com dengan beralih ke sinkronisasi khusus host terkadang dapat meningkatkan hasil sinkronisasi waktu Anda.

Beralih ke sinkronisasi waktu khusus host sesuai dilakukan jika Anda mengalami masalah sinkronisasi waktu menggunakan konfigurasi default. Cobalah sinkronisasi khusus host untuk melihat apakah sinkronisasi tersebut dapat meningkatkan sinkronisasi waktu pada VM.

Server waktu eksternal

Jika Anda memiliki persyaratan sinkronisasi waktu tertentu, ada juga opsi untuk menggunakan server waktu eksternal. Server waktu eksternal dapat menyediakan waktu tertentu, yang mungkin berguna untuk skenario pengujian, memastikan keseragaman waktu dengan mesin yang di-host di pusat data non-Microsoft, atau menangani detik kabisat dengan cara khusus.

Anda dapat menggabungkan server eksternal dengan layanan VMICTimeSync dan VMICTimeProvider untuk menyediakan hasil yang mirip dengan konfigurasi default.

Periksa konfigurasi Anda

Periksa apakah penyedia waktu NtpClient dikonfigurasi untuk menggunakan server NTP eksplisit (NTP) atau sinkronisasi waktu domain (NT5DS).

w32tm /dumpreg /subkey:Parameters | findstr /i "type"

Jika VM menggunakan NTP, Anda akan melihat output berikut:

Value Name                 Value Type          Value Data
Type                       REG_SZ              NTP

Untuk melihat server jam apa yang digunakan oleh penyedia waktu NtpClient, pada perintah yang lebih tinggi ketik:

w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"

Jika VM menggunakan default, output akan terlihat seperti ini:

NtpServer                  REG_SZ              time.windows.com,0x8

Untuk melihat penyedia waktu apa yang sedang digunakan saat ini.

w32tm /query /source

Berikut adalah output yang dapat Anda lihat dan apa artinya:

  • time.windows.com - dalam konfigurasi default, w32time akan mendapatkan waktu dari time.windows.com. Kualitas sinkronisasi waktu tergantung pada konektivitas internet ke sinkronisasi dan dipengaruhi oleh keterlambatan paket. Ini adalah output yang biasanya akan Anda dapatkan pada mesin fisik.
  • Penyedia Sinkronisasi Waktu IC Mesin Virtual - Mesin Virtual menyinkronkan waktu dari host. Ini adalah output yang biasanya akan Anda dapatkan pada mesin virtual yang berjalan di Azure.
  • Server domain Anda - mesin saat ini berada di domain dan domain menentukan hierarki sinkronisasi waktu.
  • Beberapa server lain - w32time secara eksplisit dikonfigurasi untuk mendapatkan waktu dari server lain tersebut. Kualitas sinkronisasi waktu tergantung pada kualitas server waktu ini.
  • Jam CMOS Lokal - jam tidak disinkronkan. Anda bisa mendapatkan output ini jika w32time belum memiliki cukup waktu untuk memulai setelah reboot atau ketika semua sumber waktu yang dikonfigurasi tidak tersedia.

Pilih sinkronisasi waktu khusus host

Azure terus berupaya meningkatkan sinkronisasi waktu pada host dan dapat menjamin bahwa semua infrastruktur sinkronisasi waktu dikolokasikan di pusat data milik Microsoft. Jika memiliki masalah sinkronisasi waktu dengan pengaturan default yang lebih mengutamakan penggunaan time.windows.com sebagai sumber waktu utamanya, Anda dapat menggunakan perintah berikut untuk memilih sinkronisasi waktu khusus host.

Tandai penyedia VMIC sebagai diaktifkan.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\VMICTimeProvider /v Enabled /t REG_DWORD /d 1 /f

Tandai penyedia NTPClient sebagai dinonaktifkan.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpClient /v Enabled /t REG_DWORD /d 0 /f

Mulai ulang Layanan w32time.

net stop w32time && net start w32time

Windows Server 2012 dan R2 VM

Windows Server 2012 dan Windows Server 2012 R2 memiliki pengaturan default yang berbeda untuk sinkronisasi waktu. W32time secara default dikonfigurasikan dengan cara yang lebih mengutamakan biaya operasional rendah pada layanan dibandingkan ketepatan waktu.

Jika Anda ingin memindahkan penyebaran Windows Server 2012 dan 2012 R2 Anda untuk menggunakan default yang lebih baru yang lebih mengutamakan ketepatan waktu, Anda dapat menerapkan pengaturan berikut ini.

Perbarui polling w32time dan perbarui interval agar sesuai dengan pengaturan Windows Server 2016.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v MinPollInterval /t REG_DWORD /d 6 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v MaxPollInterval /t REG_DWORD /d 10 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v UpdateInterval /t REG_DWORD /d 100 /f
w32tm /config /update

Agar w32time dapat menggunakan interval polling baru, NtpServers harus ditandai saat menggunakannya. Jika server dianotasikan dengan 0x1 bitflag mask, server tersebut akan mengganti mekanisme ini dan w32time akan menggunakan SpecialPollInterval sebagai gantinya. Pastikan server NTP yang ditentukan menggunakan bendera 0x8 atau tanpa bendera sama sekali:

Periksa bendera apa yang sedang digunakan untuk server NTP.

w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"

Langkah berikutnya

Di bawah ini adalah tautan untuk detail lebih lanjut tentang sinkronisasi waktu: