Tidssynkronisering för virtuella Windows-datorer i Azure

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Windows-datorer ✔️ ✔️ Enhetliga skalningsuppsättningar

Tidssynkronisering är viktigt för säkerhet och händelsekorrelation. Ibland används den för implementering av distribuerade transaktioner. Tidsprecision mellan flera datorsystem uppnås genom synkronisering. Synkroniseringen kan påverkas av flera saker, inklusive omstarter och nätverkstrafik mellan tidskällan och datorn som hämtar tiden.

Azure backas nu upp av infrastruktur som kör Windows Server 2016. Windows Server 2016 har förbättrade algoritmer som används för att korrigera tid och villkor för att den lokala klockan ska synkroniseras med UTC. Windows Server 2016 också förbättrat VMICTimeSync-tjänsten som styr hur virtuella datorer synkroniseras med värden för korrekt tid. Förbättringar inkluderar mer exakt inledande tid vid vm-start eller återställning av virtuella datorer och korrigering av avbrottssvarstid för exempel som tillhandahålls till Windows-tid (W32time).

Anteckning

En snabb översikt över Tjänsten Windows-tid finns i den här översiktsvideon på hög nivå.

Mer information finns i Korrekt tid för Windows Server 2016.

Översikt

Noggrannheten för en datorklocka mäts på hur nära datorklockan är enligt utc-tidsstandarden (Coordinated Universal Time). UTC definieras av ett multinationellt urval av exakta atomklockor som bara kan stängas av med en sekund på 300 år. Men att läsa UTC direkt kräver specialiserad maskinvara. I stället synkroniseras tidsservrar till UTC och nås från andra datorer för att ge skalbarhet och robusthet. Varje dator har tidssynkroniseringstjänsten igång som vet vilken tid servrar ska använda och kontrollerar regelbundet om datorklockan behöver korrigeras och justerar tiden om det behövs.

Azure-värdar synkroniseras med interna Microsoft-tidsservrar som tar sin tid från Microsoft-ägda Stratum 1-enheter med GPS-antenner. Virtuella datorer i Azure kan antingen vara beroende av sin värd för att skicka den korrekta tiden (värdtiden) till den virtuella datorn eller så kan den virtuella datorn få direkt tid från en tidsserver eller en kombination av båda.

Interaktioner mellan virtuella datorer och värden kan också påverka klockan. Under minnesbevarande underhåll pausas virtuella datorer i upp till 30 sekunder. Innan underhåll påbörjas visas till exempel klockan 10:00:00 och varar i 28 sekunder. När den virtuella datorn återupptas skulle klockan på den virtuella datorn fortfarande visas 10:00:00, vilket skulle vara 28 sekunder av. För att korrigera detta övervakar VMICTimeSync-tjänsten vad som händer på värden och uppmanar till att ändringar ska ske på de virtuella datorerna för att kompensera.

VMICTimeSync-tjänsten fungerar antingen i exempel- eller synkroniseringsläge och påverkar bara klockan framåt. I exempelläge, som kräver att W32time körs, avsöker VMICTimeSync-tjänsten värden var femte sekund och tillhandahåller tidsexempel till W32time. Ungefär var 30:e sekund tar W32time-tjänsten det senaste tidsexemplet och använder det för att påverka gästklockan. Synkroniseringsläget aktiveras om en gäst har återupptagits eller om en gästklocka ligger mer än 5 sekunder efter värdens klocka. I de fall där W32time-tjänsten körs korrekt bör det senare fallet aldrig inträffa.

Utan tidssynkronisering skulle klockan på den virtuella datorn ackumulera fel. Om det bara finns en virtuell dator kanske effekten inte är betydande om inte arbetsbelastningen kräver mycket exakt tidshållning. Men i de flesta fall har vi flera sammankopplade virtuella datorer som använder tid för att spåra transaktioner och tiden måste vara konsekvent under hela distributionen. När tiden mellan virtuella datorer skiljer sig kan du se följande effekter:

  • Autentiseringen misslyckas. Säkerhetsprotokoll som Kerberos eller certifikatberoende teknik förlitar sig på att tiden är konsekvent mellan systemen.
  • Det är mycket svårt att ta reda på vad som har hänt i ett system om loggar (eller andra data) inte kommer överens i tid. Samma händelse skulle se ut som om den inträffade vid olika tidpunkter, vilket gör korrelationen svår.
  • Om klockan är avstängd kan faktureringen beräknas felaktigt.

De bästa resultaten för Windows-distributioner uppnås med hjälp av Windows Server 2016 som gästoperativsystem, vilket säkerställer att du kan använda de senaste förbättringarna i tidssynkronisering.

Konfigurationsalternativ

Det finns tre alternativ för att konfigurera tidssynkronisering för dina virtuella Windows-datorer i Azure:

Använd standardinställningen

Som standard konfigureras virtuella Windows OS-avbildningar för w32time för synkronisering från två källor:

  • NtpClient-providern, som hämtar information från time.windows.com.
  • VMICTimeSync-tjänsten används för att kommunicera värdtiden till de virtuella datorerna och göra korrigeringar när den virtuella datorn har pausats för underhåll. Azure-värdar använder Microsoft-ägda Stratum 1-enheter för att hålla rätt tid.

w32time föredrar tidsprovidern i följande prioritetsordning: stratumnivå, rotfördröjning, rotspridning, tidsförskjutning. I de flesta fall skulle w32time på en virtuell Azure-dator föredra värdtid på grund av utvärdering som den skulle göra för att jämföra båda tidskällorna.

För domänanslutna datorer upprättar själva domänen tidssynkroniseringshierarkin, men skogsroten måste fortfarande ta tid från någonstans och följande överväganden skulle fortfarande vara sanna.

Endast värd

Eftersom time.windows.com är en offentlig NTP-server kräver synkroniseringstiden att trafik skickas via Internet, och varierande paketfördröjningar kan påverka tidssynkroniseringens kvalitet negativt. Om du tar bort time.windows.com genom att växla till synkronisering med endast värd kan du ibland förbättra dina tidssynkroniseringsresultat.

Att växla till tidssynkronisering endast för värd är meningsfullt om du upplever problem med tidssynkronisering med standardkonfigurationen. Prova synkroniseringen med endast värd för att se om det skulle förbättra tidssynkroniseringen på den virtuella datorn.

Extern tidsserver

Om du har specifika krav för tidssynkronisering finns det också ett alternativ för att använda externa tidsservrar. Externa tidsservrar kan ge specifik tid, vilket kan vara användbart för testscenarier, säkerställa tidsuniformitet med datorer som finns i datacenter utanför Microsoft eller hantera skottsekunder på ett speciellt sätt.

Du kan kombinera externa servrar med VMICTimeSync-tjänsten och VMICTimeProvider för att ge resultat som liknar standardkonfigurationen.

Kontrollera konfigurationen

Kontrollera om NtpClient-tidsprovidern är konfigurerad för att använda explicita NTP-servrar (NTP) eller domäntidssynkronisering (NT5DS).

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

Om den virtuella datorn använder NTP visas följande utdata:

Value Name                 Value Type          Value Data
Type                       REG_SZ              NTP

Om du vill se vilken tidsserver som NtpClient-tidsprovidern använder, vid en upphöjd kommandotolktyp:

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

Om den virtuella datorn använder standardinställningen ser utdata ut så här:

NtpServer                  REG_SZ              time.windows.com,0x8

För att se vilken tidsprovider som används för närvarande.

w32tm /query /source

Här är utdata som du kan se och vad det skulle innebära:

  • time.windows.com – i standardkonfigurationen skulle w32time få tid från time.windows.com. Tidssynkroniseringskvaliteten beror på internetanslutningen till den och påverkas av paketfördröjningar. Det här är de vanliga utdata som du skulle få på en fysisk dator.
  • VM IC-tidssynkroniseringsprovider – den virtuella datorn synkroniserar tiden från värden. Det här är de vanliga utdata som du får på en virtuell dator som körs i Azure.
  • Domänservern – den aktuella datorn finns i en domän och domänen definierar tidssynkroniseringshierarkin.
  • En annan server – w32time konfigurerades uttryckligen för att hämta tiden från den andra servern. Tidssynkroniseringskvaliteten beror på den här tidens serverkvalitet.
  • Lokal CMOS-klocka – klockan är osynkroniserad. Du kan hämta dessa utdata om w32time inte har haft tillräckligt med tid för att starta efter en omstart eller när alla konfigurerade tidskällor inte är tillgängliga.

Anmäl dig för tidssynkronisering endast för värd

Azure arbetar ständigt med att förbättra tidssynkroniseringen på värdar och kan garantera att hela tidssynkroniseringsinfrastrukturen är indelad i Microsoft-ägda datacenter. Om du har problem med tidssynkronisering med standardkonfigurationen som föredrar att använda time.windows.com som primär tidskälla kan du använda följande kommandon för att välja tidssynkronisering endast för värd.

Markera VMIC-providern som aktiverad.

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

Markera NTPClient-providern som inaktiverad.

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

Starta om w32time-tjänsten.

net stop w32time && net start w32time

Windows Server 2012 och virtuella R2-datorer

Windows Server 2012 och Windows Server 2012 R2 har olika standardinställningar för tidssynkronisering. W32time konfigureras som standard på ett sätt som föredrar låga omkostnader för tjänsten över exakt tid.

Om du vill flytta dina Windows Server 2012- och 2012 R2-distributioner för att använda de nyare standardvärdena som föredrar exakt tid kan du använda följande inställningar.

Uppdatera w32time-avsökningen och uppdatera intervallen så att de matchar Windows Server 2016 inställningar.

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

För w32time att kunna använda de nya avsökningsintervallen måste NtpServers markeras som att de används. Om servrar kommenteras med bitflag-masken 0x1 skulle det åsidosätta den här mekanismen och w32time använda SpecialPollInterval i stället. Kontrollera att angivna NTP-servrar antingen använder 0x8 flaggan eller ingen flagga alls:

Kontrollera vilka flaggor som används för NTP-servrarna.

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

Nästa steg

Nedan visas länkar till mer information om tidssynkronisering: