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. 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 jaringan antara sumber waktu dan komputer yang menyinkronkan waktu.

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 dengan server waktu internal Microsoft yang mengambil waktu dari perangkat Stratum 1 yang dimiliki oleh Microsoft dan dilengkapi 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 terpaut 28 detik. Untuk memperbaikinya, layanan VMICTimeSync memantau apa yang terjadi pada host dan meminta perubahan terjadi pada VM untuk mengkompensasi.

Layanan VMICTimeSync beroperasi dalam mode sampel atau sinkronisasi dan hanya akan memengaruhi jam ke depan. Pada mode sampel, yang mengharuskan W32time berjalan, layanan "VMICTimeSync" secara otomatis melakukan polling host setiap 5 detik dan menyediakan sampel waktu untuk W32time. Sekitar setiap 30 detik, layanan W32time mengambil sampel waktu terbaru dan menggunakannya untuk memengaruhi jam tamu. Mode sinkronisasi diaktifkan jika tamu telah kembali aktif atau jika jam tamu tertinggal lebih dari 5 detik dibandingkan jam host. Dalam kasus di mana layanan W32time berjalan dengan benar, kasus terakhir tidak boleh terjadi.

Jika sinkronisasi waktu tidak bekerja, jam pada VM akan mengakumulasi kesalahan. Ketika hanya ada satu VM, efeknya mungkin tidak signifikan kecuali beban kerja membutuhkan timekeeping yang sangat akurat. Namun dalam kebanyakan kasus, kita memiliki beberapa mesin virtual (VM) yang saling terhubung yang menggunakan waktu untuk melacak transaksi, dan waktu harus konsisten di seluruh penerapan. 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) tidak setuju tepat waktu. 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 Anda dapat menggunakan peningkatan terbaru dalam sinkronisasi waktu.

Opsi konfigurasi

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

Gunakan default

Secara default, citra VM OS Windows dikonfigurasi agar w32time disinkronkan dari dua sumber:

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

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

Untuk komputer yang bergabung dengan domain, domain itu sendiri menetapkan hierarki penyelarasan waktu, tetapi induk hutan masih perlu mengambil waktu dari suatu sumber dan pertimbangan berikut ini masih akan berlaku.

Khusus host

Karena time.windows.com adalah server NTP publik, waktu sinkronisasi dengannya memerlukan pengiriman lalu lintas melalui internet, berbagai penundaan 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 masuk akal jika Anda mengalami masalah sinkronisasi waktu menggunakan konfigurasi default. Cobalah sinkronisasi khusus host untuk melihat apakah itu akan 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 yang tepat, yang dapat berguna untuk skenario pengujian, memastikan keseragaman waktu dengan mesin yang dihosting di pusat data non-Microsoft, atau menangani detik lompatan secara khusus.

Anda dapat menggabungkan server eksternal dengan layanan VMICTimeSync dan VMICTimeProvider untuk memberikan 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 waktu apa yang digunakan penyedia waktu NtpClient, ketik pada prompt perintah yang ditingkatkan:

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 dan dipengaruhi oleh keterlambatan paket. Ini adalah output biasa yang akan Anda dapatkan pada mesin fisik.
  • Penyedia Sinkronisasi Waktu VM IC - VM melakukan sinkronisasi waktu dengan host. Ini adalah output biasa yang akan Anda dapatkan di komputer virtual yang berjalan di Azure.
  • Server domain Anda - komputer 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 boot ulang atau ketika semua sumber waktu yang dikonfigurasi tidak tersedia.

Mengaktifkan sinkronisasi waktu hanya untuk host

Azure terus berupaya meningkatkan sinkronisasi waktu pada host dan dapat menjamin bahwa semua infrastruktur sinkronisasi waktu dikolokasikan di pusat data milik Microsoft. Jika Anda memiliki masalah sinkronisasi waktu dengan penyiapan default yang lebih suka menggunakan time.windows.com sebagai sumber waktu utama, 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

VM Windows Server 2012 dan R2

Windows Server 2012 dan Windows Server 2012 R2 memiliki pengaturan default yang berbeda untuk sinkronisasi waktu. W32time secara default dikonfigurasi dengan cara yang lebih memilih overhead rendah dari layanan selama waktu yang tepat.

Jika Anda sekalian ingin mengubah konfigurasi Windows Server 2012 dan 2012 R2 untuk menggunakan default baru yang memprioritaskan waktu yang tepat, Anda dapat menerapkan pengaturan berikut.

Perbarui polling w32time dan interval pembaruan 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, NtpServer perlu ditandai sebagai menggunakannya. Jika server diberi anotasi dengan masker bitflag 0x1, maka hal tersebut akan menggantikan mekanisme ini dan w32time akan menggunakan SpecialPollInterval sebagai gantinya. Pastikan bahwa server NTP yang ditentukan menggunakan 0x8 bendera atau tidak ada bendera sama sekali:

Periksa bendera apa yang 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: