Sdílet prostřednictvím


Synchronizace času pro virtuální počítače s Windows v Azure

Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Windows Uniform Scale Sets ✔️

Synchronizace času je důležitá pro korelaci zabezpečení a událostí. Někdy se používá pro implementaci distribuovaných transakcí. Přesnost času mezi několika počítačovými systémy se dosahuje prostřednictvím synchronizace. Synchronizace může být ovlivněna několika věcmi, včetně restartování a síťového provozu mezi časovým zdrojem a počítačem, který čas načítá.

Azure je teď podporován infrastrukturou s Windows Serverem 2016. Windows Server 2016 má vylepšené algoritmy používané ke správnému času a podmínce místních hodin pro synchronizaci se standardem UTC. Windows Server 2016 také vylepšil službu VMICTimeSync, která určuje, jak se virtuální počítače synchronizují s hostitelem pro přesný čas. Vylepšení zahrnují přesnější počáteční čas spuštění virtuálního počítače nebo obnovení virtuálního počítače a opravu latence přerušení u ukázek poskytovaných službou Windows Time (W32time).

Poznámka:

Rychlý přehled služby Windows Time najdete v tomto videu s přehledem vysoké úrovně.

Další informace najdete v tématu Přesný čas pro Windows Server 2016.

Přehled

Přesnost hodin počítače se měří podle toho, jak blízko jsou hodiny počítače standardem utc (Coordinated Universal Time). UTC je definován nadnárodním vzorkem přesných atomických hodin, které mohou být v 300 letech vypnuty pouze o jednu sekundu. Čtení UTC ale přímo vyžaduje specializovaný hardware. Místo toho se časové servery synchronizují do standardu UTC a jsou přístupné z jiných počítačů, aby poskytovaly škálovatelnost a robustnost. Každý počítač má spuštěnou službu synchronizace času, která ví, jaké časové servery se mají používat, a pravidelně kontroluje, jestli je potřeba opravit hodiny počítače, a v případě potřeby upravit čas.

Hostitelé Azure se synchronizují s interními časovými servery Microsoftu, které zabírají čas ze zařízení Stratum 1 vlastněných Microsoftem s gps anténami. Virtuální počítače v Azure můžou záviset na jejich hostiteli a předávat přesný čas (čas hostitele) na virtuálním počítači nebo virtuální počítač může přímo získat čas z časového serveru nebo kombinace obojího.

Interakce virtuálních počítačů s hostitelem můžou mít také vliv na hodiny. Během údržby zachování paměti se virtuální počítače pozastaví až na 30 sekund. Například před zahájením údržby se hodiny virtuálního počítače zobrazí 10:00:00 a trvá 28 sekund. Po obnovení virtuálního počítače by se hodiny na virtuálním počítači stále zobrazovaly 10:00:00, což by bylo 28 sekund vypnuté. Aby to bylo správné, služba VMICTimeSync monitoruje, co se děje na hostiteli, a vyzývá k tomu, aby se změny na virtuálních počítačích změnily, aby se kompenzovaly.

Služba VMICTimeSync funguje buď v ukázkovém, nebo synchronizačním režimu a bude mít vliv jenom na hodiny vpřed. V ukázkovém režimu, který vyžaduje spuštění W32time, služba VMICTimeSync dotazuje hostitele každých 5 sekund a poskytuje časové vzorky do W32time. Přibližně každých 30 sekund trvá služba W32time nejnovější časovou ukázku a používá ji k ovlivnění hodin hosta. Režim synchronizace se aktivuje, pokud byl host obnoven nebo pokud se hodiny hosta posunují za hodinami hostitele déle než 5 sekund. V případech, kdy je služba W32time správně spuštěná, by k druhému případu nikdy nemělo dojít.

Bez synchronizace času by se hodiny na virtuálním počítači hromadily chyby. Pokud existuje jenom jeden virtuální počítač, nemusí být účinek významný, pokud úloha nevyžaduje vysoce přesné uchovávání času. Ve většině případů ale máme více vzájemně propojených virtuálních počítačů, které používají čas ke sledování transakcí a čas musí být konzistentní během celého nasazení. Když se čas mezi virtuálními počítači liší, můžete vidět následující efekty:

  • Ověřování se nezdaří. Protokoly zabezpečení, jako je Kerberos nebo technologie závislá na certifikátech, závisí na době konzistentní v rámci systémů.
  • Je velmi těžké zjistit, co se stalo v systému, pokud se protokoly (nebo jiná data) neshodují včas. Stejná událost by vypadala jako v různých časech, což ztěžuje korelaci.
  • Pokud jsou hodiny vypnuté, může se fakturace vypočítat nesprávně.

Nejlepších výsledků pro nasazení Windows se dosahuje pomocí Windows Serveru 2016 jako hostovaného operačního systému, což zajistí, že budete moct používat nejnovější vylepšení synchronizace času.

Možnosti konfigurace

Existují tři možnosti konfigurace synchronizace času pro virtuální počítače s Windows hostované v Azure:

Použít výchozí

Ve výchozím nastavení jsou image virtuálních počítačů s operačním systémem Windows nakonfigurované pro synchronizaci w32time ze dvou zdrojů:

  • Zprostředkovatel NtpClient, který získává informace z time.windows.com.
  • Služba VMICTimeSync, která slouží ke komunikaci času hostitele s virtuálními počítači a provádění oprav po pozastavení virtuálního počítače kvůli údržbě. Hostitelé Azure používají zařízení Stratum 1 vlastněná Microsoftem k zachování přesného času.

w32time by preferoval poskytovatele času v následujícím pořadí priority: úroveň stratum, kořen zpoždění, rozptyl kořene, časový posun. Ve většině případů by služba w32time na virtuálním počítači Azure preferovala čas hostitele kvůli vyhodnocení, kdy by se daly porovnat oba časové zdroje.

U počítačů připojených k doméně vytváří samotná doména hierarchii synchronizace času, ale kořen doménové struktury stále potřebuje nějakou dobu trvat a následující aspekty by stále platily.

Pouze hostitel

Vzhledem k tomu, že time.windows.com je veřejný server NTP, synchronizace času s ním vyžaduje odesílání provozu přes internet, různá zpoždění paketů můžou negativně ovlivnit kvalitu synchronizace času. Odebrání time.windows.com přepnutím na synchronizaci jen pro hostitele může někdy zlepšit výsledky synchronizace času.

Přepnutí na synchronizaci času jen pro hostitele dává smysl, pokud při použití výchozí konfigurace dochází k problémům se synchronizací času. Vyzkoušejte synchronizaci pouze hostitele a zjistěte, jestli by se tím zlepšila synchronizace času na virtuálním počítači.

Externí časový server

Pokud máte specifické požadavky na synchronizaci času, můžete také použít externí časové servery. Externí časové servery můžou poskytovat konkrétní čas, což může být užitečné pro testovací scénáře, zajištění jednotnosti času u počítačů hostovaných v datacentrech jiných společností než Microsoft nebo zpracování přestupných sekund speciálním způsobem.

Externí servery můžete kombinovat se službou VMICTimeSync a VMICTimeProvider a poskytovat výsledky podobné výchozí konfiguraci.

Zkontrolujte konfiguraci.

Zkontrolujte, jestli je zprostředkovatel času NtpClient nakonfigurovaný tak, aby používal explicitní servery NTP (NTP) nebo synchronizaci času domény (NT5DS).

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

Pokud virtuální počítač používá protokol NTP, zobrazí se následující výstup:

Value Name                 Value Type          Value Data
Type                       REG_SZ              NTP

Pokud chcete zjistit, jaký časový server používá zprostředkovatel času NtpClient, na příkazovém řádku se zvýšenými oprávněními zadejte:

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

Pokud virtuální počítač používá výchozí hodnotu, výstup bude vypadat takto:

NtpServer                  REG_SZ              time.windows.com,0x8

Pokud chcete zjistit, jaký zprostředkovatel času se aktuálně používá.

w32tm /query /source

Tady je výstup, který byste viděli a co by to znamenalo:

  • time.windows.com – ve výchozí konfiguraci by w32time získal čas z time.windows.com. Kvalita synchronizace času závisí na připojení k internetu a má vliv na zpoždění paketů. Jedná se o obvyklý výstup, který byste získali na fyzickém počítači.
  • Zprostředkovatel synchronizace času IC virtuálního počítače – virtuální počítač synchronizuje čas z hostitele. Jedná se o obvyklý výstup, který byste získali na virtuálním počítači běžícím v Azure.
  • Váš doménový server – aktuální počítač je v doméně a doména definuje hierarchii synchronizace času.
  • Jiný server – w32time byl explicitně nakonfigurovaný tak, aby získal čas z jiného serveru. Kvalita synchronizace času závisí na této kvalitě časového serveru.
  • Místní hodiny CMOS – hodiny nejsou synchronizované. Tento výstup můžete získat, pokud w32time neměl dostatek času ke spuštění po restartování nebo když nejsou dostupné všechny nakonfigurované zdroje času.

Opt in for host-only time sync

Azure neustále pracuje na zlepšování synchronizace času na hostitelích a může zaručit, že veškerá infrastruktura synchronizace času je v datacentrech vlastněných Microsoftem kolace. Pokud máte problémy se synchronizací času s výchozím nastavením, které preferují použití time.windows.com jako primárního zdroje času, můžete k vyjádření souhlasu se synchronizací času jen pro hostitele použít následující příkazy.

Označte zprostředkovatele VMIC jako povolený.

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

Označte zprostředkovatele NTPClient jako zakázaný.

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

Restartujte službu w32time.

net stop w32time && net start w32time

Virtuální počítače s Windows Serverem 2012 a R2

Windows Server 2012 a Windows Server 2012 R2 mají různá výchozí nastavení pro synchronizaci času. Ve výchozím nastavení je w32time nakonfigurovaný způsobem, který dává přednost nízké režii služby v průběhu přesného času.

Pokud chcete přesunout nasazení Windows Serveru 2012 a 2012 R2 tak, aby používala novější výchozí hodnoty, které dávají přednost přesnému času, můžete použít následující nastavení.

Aktualizujte intervaly dotazování w32time a aktualizace tak, aby odpovídaly nastavení Windows Serveru 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

Aby w32time bylo možné používat nové intervaly dotazování, musí být ntpServery označené jako používané. Pokud jsou servery opatřeny poznámkami s maskou 0x1 bitflag, které by tento mechanismus přepsaly a w32time použily SpecialPollInterval by se místo toho. Ujistěte se, že zadané servery NTP používají 0x8 příznak nebo vůbec žádný příznak:

Zkontrolujte, jaké příznaky se používají pro servery NTP.

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

Další kroky

Níže najdete odkazy na další podrobnosti o synchronizaci času: