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 – Jednotné škálovací sady

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

Azure teď využívá infrastrukturu běžící Windows Server 2016. Windows Server 2016 má vylepšené algoritmy, které slouží k opravě času a podmínce, aby se místní hodiny synchronizovaly se standardem UTC. Windows Server 2016 také vylepšili službu VMICTimeSync, která řídí způsob synchronizace virtuálních počítačů s hostitelem pro zajištění přesného času. Vylepšení zahrnují přesnější počáteční čas při spuštění virtuálního počítače nebo obnovení virtuálního počítače a opravu latence přerušení pro vzorky poskytnuté pro čas Windows (W32time).

Poznámka

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

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

Přehled

Přesnost hodin počítače se měří na základě vzdálenosti hodin počítače od časového standardu UTC (Coordinated Universal Time). UTC je definován nadnárodním vzorkem přesných atomových hodin, které mohou být za 300 let 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čů za účelem zajištění škálovatelnosti a odolnosti. Každý počítač má spuštěnou službu synchronizace času, která ví, jaké časové servery použít, a pravidelně kontroluje, jestli je potřeba opravit počítačové hodiny, a v případě potřeby čas upravuje.

Hostitelé Azure se synchronizují s interními časovými servery Microsoftu, které využívají čas ze zařízení Stratum 1 vlastněných Microsoftem pomocí antén GPS. Virtuální počítače v Azure můžou buď záviset na hostiteli, který virtuálnímu počítači předá přesný čas (čas hostitele), nebo virtuální počítač může získat čas přímo z časového serveru nebo kombinací obojího.

Na hodiny můžou mít vliv také interakce virtuálního počítače s hostitelem. Během údržby se zachováním paměti se virtuální počítače pozastaví až na 30 sekund. Například před zahájením údržby se u hodin virtuálního počítače zobrazí 10:00:00 a trvá 28 sekund. Po obnovení virtuálního počítače budou hodiny na virtuálním počítači stále zobrazovat 10:00:00, což bude 28 sekund. Opravíte to tak, že služba VMICTimeSync monitoruje, co se děje na hostiteli, a vyzve ke změnám, které se mají provést na virtuálních počítačích.

Služba VMICTimeSync funguje v ukázkovém nebo synchronizačním režimu a ovlivňuje pouze hodiny dopředu. 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 vzorky času do W32time. Přibližně každých 30 sekund služba W32time přebírá nejnovější vzorek času a používá ji k ovlivnění hodin hosta. Režim synchronizace se aktivuje, pokud byl host obnoven nebo pokud se hodiny hosta posunou o více než 5 sekund za hodinami hostitele. V případech, kdy je služba W32time správně spuštěná, by k druhému případu nikdy nemělo dojít.

Pokud by synchronizace času nefungovala, hodiny na virtuálním počítači by se hromadily chyby. Pokud je k dispozici pouze jeden virtuální počítač, nemusí být účinek významný, pokud úloha nevyžaduje vysoce přesné sledování času. Ve většině případů ale máme několik vzájemně propojených virtuálních počítačů, které používají čas ke sledování transakcí a musí být konzistentní v celém nasazení. Pokud se čas mezi virtuálními počítači liší, můžete zaznamenat následující účinky:

  • Ověřování se nezdaří. Protokoly zabezpečení, jako je Kerberos nebo technologie závislé na certifikátech, spoléhají na to, že jsou v systémech konzistentní časově.
  • Je velmi těžké zjistit, co se v systému stalo, pokud se protokoly (nebo jiná data) neshodují včas. Stejná událost by vypadala, jako by k ní došlo 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í systému Windows dosáhnete použitím Windows Server 2016 jako hostovaného operačního systému, který zajišťuje, že můžete využít nejnovější vylepšení časové synchronizace.

Možnosti konfigurace

Existují tři možnosti konfigurace časové synchronizace 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 Windows nakonfigurované na w32time tak, aby se synchronizovaly ze dvou zdrojů:

  • Zprostředkovatel NtpClient, který získává informace z time.windows.com.
  • Služba VMICTimeSync, která slouží ke komunikaci času hostitele virtuálním počítačům 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 udržování přesného času.

w32time preferuje poskytovatele času v následujícím pořadí podle priority: úroveň vrstvy, kořenové zpoždění, kořenový rozptyl, časový posun. Ve většině případů by w32time na virtuálním počítači Azure preferoval čas hostitele kvůli vyhodnocení, které by bylo možné porovnat oba zdroje času.

U počítačů připojených k doméně doména sama vytváří hierarchii synchronizace času, ale kořenový adresář doménové struktury stále odněkud potřebuje nějakou dobu a platí i následující aspekty.

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, může různá zpoždění paketů negativně ovlivnit kvalitu synchronizace času. Odebrání time.windows.com přepnutím na synchronizaci pouze na hostiteli může někdy zlepšit výsledky synchronizace času.

Přepnutí na synchronizaci času pouze na hostiteli má smysl, pokud při použití výchozí konfigurace dochází k problémům se synchronizací času. Vyzkoušejte synchronizaci pouze na hostiteli 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, existuje také možnost 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 s počítači hostovanými v datacentrech jiných společností než Microsoft nebo zpracování přestupných sekund zvláštní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 zprostředkovatel času NtpClient používá, zadejte na příkazovém řádku se zvýšenými oprávněními:

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

Chcete-li zjistit, jakého poskytovatele času se aktuálně používá.

w32tm /query /source

Tady je výstup, který byste mohli vidět 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 je ovlivněna zpožděním paketů. Toto je obvyklý výstup, který získáte 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. Toto je obvyklý výstup, který získáte na virtuálním počítači spuštěné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ě nakonfigurován tak, aby získával čas z jiného serveru. Kvalita synchronizace času závisí na kvalitě tohoto časového serveru.
  • Místní hodiny CMOS – hodiny nejsou synchronizované. Tento výstup můžete získat, pokud služba w32time nemá dostatek času ke spuštění po restartování nebo pokud nejsou k dispozici všechny nakonfigurované zdroje času.

Výslovný souhlas s časovou synchronizací pouze na hostiteli

Azure neustále pracuje na vylepšování synchronizace času na hostitelích a může zaručit, že infrastruktura synchronizace všech časů bude v datacentrech vlastněných Microsoftem kolokovaná. Pokud máte problémy s časovou synchronizací u výchozího nastavení, které preferuje použití time.windows.com jako primárního zdroje času, můžete použít následující příkazy a přihlásit se k synchronizaci času pouze na hostiteli.

Označte poskytovatele VMIC jako povoleného.

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ého.

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 Windows Server 2012 a R2

Windows Server 2012 a Windows Server 2012 R2 mají různá výchozí nastavení pro synchronizaci času. W32time je ve výchozím nastavení nakonfigurovaný způsobem, který dává přednost nízké režii služby před přesným časem.

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

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

Aby w32time bylo možné používat nové intervaly dotazování, musí být servery NtpServer označeny jako jejich použití. Pokud jsou servery anotovány maskou 0x1 bitflag, tento mechanismus by se přepsal a w32time místo toho by se použil SpecialPollInterval . 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: