Dela via


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. Tidsnoggrannhet mellan flera datorsystem uppnås genom synkronisering. Synkronisering 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 förbättrade också VMICTimeSync-tjänsten som styr hur virtuella datorer synkroniserar med värden för korrekt tid. Förbättringar inkluderar mer exakt initial tid vid vm-start eller återställning av virtuell dator och korrigering av avbrottssvarstid för exempel som tillhandahålls till Windows-tid (W32time).

Kommentar

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

Mer information finns i Exakt 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 atomiska klockor 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 tid 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 att värden skickar rätt tid (värdtid) 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 visar till exempel vm-klockan 10:00:00 och varar i 28 sekunder. När den virtuella datorn har återuppstängts visas klockan på den virtuella datorn fortfarande 10:00:00, vilket skulle vara 28 sekunders avstängning. För att åtgärda 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 5:e 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 driver mer än 5 sekunder bakom värdens klocka. I 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. När det bara finns en virtuell dator kanske effekten inte är betydande om inte arbetsbelastningen kräver mycket exakt tidsåtgång. 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 skulle föredra 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 etablerar själva domänen tidssynkroniseringshierarkin, men skogsroten måste fortfarande ta tid någonstans ifrån och följande överväganden skulle fortfarande innehålla sant.

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 får problem med tidssynkronisering med hjälp av standardkonfigurationen. Testa 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 tidssynkroniseringskrav 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 tidsprovidern NtpClient har konfigurerats 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

För att se vilken tidsserver NtpClient-tidsprovidern använder, vid en upphöjd kommandotolktyp:

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

Om den virtuella datorn använder standardvärdet 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örseningar. Det här är de vanliga utdata som du får 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 har uttryckligen konfigurerats för att hämta tiden från den andra servern. Tidssynkroniseringskvaliteten beror på den här tidsserverkvaliteten.
  • Lokal CMOS-klocka – klockan är osynkroniserad. Du kan få 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 att endast använda tidssynkronisering 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

Virtuella Windows Server 2012- och 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 framför 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 uppdateringsintervallen så att de matchar inställningarna för 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

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: