Tijdsynchronisatie voor Windows-VM's in Azure
Van toepassing op: ✔️ Flexibele schaalsets ✔️ voor Windows-VM's ✔️ Uniform-schaalsets
Tijdsynchronisatie is belangrijk voor beveiligings- en gebeurteniscorrelatie. Soms wordt het gebruikt voor de implementatie van gedistribueerde transacties. De nauwkeurigheid van de tijd tussen meerdere computersystemen wordt bereikt via synchronisatie. Synchronisatie kan worden beïnvloed door meerdere dingen, waaronder opnieuw opstarten en netwerkverkeer tussen de tijdsbron en de computer die de tijd ophaalt.
Azure wordt nu ondersteund door een infrastructuur met Windows Server 2016. Windows Server 2016 heeft verbeterde algoritmen gebruikt om de tijd te corrigeren en de lokale klok te synchroniseren met UTC. Windows Server 2016 heeft ook de VMICTimeSync-service verbeterd die bepaalt hoe VM's worden gesynchroniseerd met de host voor nauwkeurige tijd. Verbeteringen omvatten nauwkeurigere initiële tijd bij het starten of herstellen van vm's en het onderbreken van latentiecorrectie voor voorbeelden van Windows Time (W32time).
Notitie
Bekijk deze overzichtsvideo op hoog niveau voor een kort overzicht van de Windows Time-service.
Zie Nauwkeurige tijd voor Windows Server 2016 voor meer informatie.
Overzicht
Nauwkeurigheid voor een computerklok wordt gemeten over hoe dicht de computerklok is op de tijdstandaard Coordinated Universal Time (UTC). UTC wordt gedefinieerd door een multinationale steekproef van nauwkeurige atoomklokken die in 300 jaar slechts met één seconde kunnen worden uitgeschakeld. Het lezen van UTC vereist echter rechtstreeks gespecialiseerde hardware. In plaats daarvan worden tijdservers gesynchroniseerd met UTC en worden ze geopend vanaf andere computers om schaalbaarheid en robuustheid te bieden. Elke computer heeft tijdsynchronisatieservice die weet welke tijd servers moeten gebruiken en controleert regelmatig of de computerklok moet worden gecorrigeerd en past zo nodig de tijd aan.
Azure-hosts worden gesynchroniseerd met interne Microsoft-tijdservers die hun tijd nemen vanaf Stratum 1-apparaten die eigendom zijn van Microsoft, met GPS-antennes. Virtuele machines in Azure kunnen afhankelijk zijn van hun host om de nauwkeurige tijd (hosttijd) door te geven aan de virtuele machine of de VIRTUELE machine kan rechtstreeks tijd ophalen van een tijdserver of een combinatie van beide.
Interacties van virtuele machines met de host kunnen ook van invloed zijn op de klok. Tijdens onderhoud met geheugenbehoud worden VM's maximaal 30 seconden onderbroken. Voordat het onderhoud bijvoorbeeld begint met de klok van de VIRTUELE machine, wordt 10:00:00 uur weergegeven en duurt het 28 seconden. Nadat de VIRTUELE machine is hervat, wordt de klok op de virtuele machine nog steeds 10:00:00 uur weergegeven. Dit is 28 seconden uitgeschakeld. Om dit te corrigeren, controleert de VMICTimeSync-service wat er op de host gebeurt en wordt gevraagd om wijzigingen op de VM's te compenseren.
De VMICTimeSync-service werkt in de voorbeeld- of synchronisatiemodus en heeft alleen invloed op de klok vooruit. In de voorbeeldmodus, waarvoor W32time moet worden uitgevoerd, controleert de VMICTimeSync-service de host elke 5 seconden en levert tijdsvoorbeelden voor W32time. Ongeveer om de 30 seconden neemt de W32time-service het laatste tijdsvoorbeeld in beslag en gebruikt het om de klok van de gast te beïnvloeden. De synchronisatiemodus wordt geactiveerd als een gast is hervat of als de klok van een gast meer dan 5 seconden achter de klok van de host loopt. In gevallen waarin de W32time-service correct wordt uitgevoerd, zou het laatste geval nooit moeten gebeuren.
Als de tijdsynchronisatie niet werkt, zou de klok op de virtuele machine fouten verzamelen. Wanneer er slechts één virtuele machine is, is het effect mogelijk niet significant, tenzij de workload zeer nauwkeurige tijdregistratie vereist. Maar in de meeste gevallen hebben we meerdere, onderling verbonden VM's die tijd gebruiken om transacties bij te houden en de tijd consistent moet zijn gedurende de hele implementatie. Wanneer de tijd tussen VM's verschilt, ziet u de volgende effecten:
- Verificatie mislukt. Beveiligingsprotocollen zoals Kerberos of certificaatafhankelijke technologie zijn afhankelijk van tijd die consistent is in de systemen.
- Het is heel moeilijk om erachter te komen wat er in een systeem is gebeurd als logboeken (of andere gegevens) het niet op tijd eens zijn. Dezelfde gebeurtenis zou er op verschillende momenten uitzien, waardoor correlatie moeilijk is.
- Als de klok is uitgeschakeld, kan de facturering onjuist worden berekend.
De beste resultaten voor Windows-implementaties worden bereikt door Windows Server 2016 als gastbesturingssysteem te gebruiken, zodat u de meest recente verbeteringen in tijdsynchronisatie kunt gebruiken.
Configuratieopties
Er zijn drie opties voor het configureren van tijdsynchronisatie voor uw Windows-VM's die worden gehost in Azure:
- Hosttijd en time.windows.com. Dit is de standaardconfiguratie die wordt gebruikt in Azure Marketplace-installatiekopieën.
- Alleen host.
- Gebruik een andere externe tijdserver met of zonder hosttijd. Volg voor deze optie het tijdmechanisme voor Active Directory Windows Virtual Machines in Azure-handleiding .
De standaardwaarde gebruiken
Vm-installatiekopieën voor Windows-besturingssysteem worden standaard geconfigureerd voor w32time om te synchroniseren vanuit twee bronnen:
- De NtpClient-provider, die informatie ophaalt uit time.windows.com.
- De VMICTimeSync-service, die wordt gebruikt om de hosttijd te communiceren met de VM's en correcties aan te brengen nadat de VM is onderbroken voor onderhoud. Azure-hosts maken gebruik van Stratum 1-apparaten die eigendom zijn van Microsoft om de tijd nauwkeurig te houden.
w32time geeft de voorkeur aan de tijdprovider in de volgende volgorde van prioriteit: stratumniveau, hoofdvertraging, wortelspreiding, tijdverschil. In de meeste gevallen geeft w32time op een Azure-VM de voorkeur aan hosttijd vanwege de evaluatie die het zou doen om beide tijdsbronnen te vergelijken.
Voor computers die lid zijn van een domein stelt het domein zelf tijdsynchronisatiehiërarchie vast, maar de foresthoofdmap moet nog steeds ergens tijd in beslag nemen en de volgende overwegingen zouden nog steeds waar zijn.
Alleen host
Omdat time.windows.com een openbare NTP-server is, vereist synchronisatietijd met deze server het verzenden van verkeer via internet, kunnen verschillende pakketvertragingen de kwaliteit van de tijdsynchronisatie negatief beïnvloeden. Het verwijderen van time.windows.com door over te schakelen naar synchronisatie met alleen host kan soms de tijdsynchronisatieresultaten verbeteren.
Overschakelen naar alleen-hosttijdsynchronisatie is logisch als u problemen ondervindt met tijdsynchronisatie met behulp van de standaardconfiguratie. Probeer de synchronisatie alleen-host uit om te zien of dat de tijdsynchronisatie op de VIRTUELE machine zou verbeteren.
Externe tijdserver
Als u specifieke tijdsynchronisatievereisten hebt, kunt u ook externe tijdservers gebruiken. Externe tijdservers kunnen specifieke tijd bieden, wat handig kan zijn voor testscenario's, waardoor tijdsuniformiteit wordt gegarandeerd met machines die worden gehost in niet-Microsoft-datacenters, of schrikkel seconden op een speciale manier verwerken.
U kunt externe servers combineren met de VMICTimeSync-service en VMICTimeProvider om resultaten te bieden die vergelijkbaar zijn met de standaardconfiguratie.
Controleer de configuratie
Controleer of de NtpClient-tijdprovider is geconfigureerd voor het gebruik van expliciete NTP-servers (NTP) of domeintijdsynchronisatie (NT5DS).
w32tm /dumpreg /subkey:Parameters | findstr /i "type"
Als de VM NTP gebruikt, ziet u de volgende uitvoer:
Value Name Value Type Value Data
Type REG_SZ NTP
Als u wilt zien hoe laat de NtpClient-tijdprovider wordt gebruikt, typt u een opdrachtprompt met verhoogde bevoegdheid:
w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"
Als de vm de standaardwaarde gebruikt, ziet de uitvoer er als volgt uit:
NtpServer REG_SZ time.windows.com,0x8
Als u wilt zien welke tijdprovider momenteel wordt gebruikt.
w32tm /query /source
Hier ziet u de uitvoer die u kunt zien en wat het zou betekenen:
- time.windows.com: in de standaardconfiguratie krijgt w32time tijd van time.windows.com. De tijdsynchronisatiekwaliteit is afhankelijk van de internetverbinding en wordt beïnvloed door pakketvertragingen. Dit is de gebruikelijke uitvoer die u op een fysieke machine zou krijgen.
- VM IC-tijdsynchronisatieprovider : de VM synchroniseert tijd van de host. Dit is de gebruikelijke uitvoer die op een virtuele machine wordt uitgevoerd in Azure.
- Uw domeinserver : de huidige computer bevindt zich in een domein en het domein definieert de tijdsynchronisatiehiërarchie.
- Een andere server - w32time is expliciet geconfigureerd om de tijd van die andere server op te halen. De kwaliteit van tijdsynchronisatie is afhankelijk van deze tijd serverkwaliteit.
- Lokale CMOS-klok - klok is niet gesynchroniseerd. U kunt deze uitvoer krijgen als w32time niet voldoende tijd heeft gehad om te starten na opnieuw opstarten of wanneer alle geconfigureerde tijdbronnen niet beschikbaar zijn.
Aanmelden voor alleen-host-tijdsynchronisatie
Azure werkt voortdurend aan het verbeteren van tijdsynchronisatie op hosts en kan garanderen dat alle tijdssynchronisatie-infrastructuur wordt gehost in datacenters die eigendom zijn van Microsoft. Als u tijdsynchronisatieproblemen ondervindt met de standaardinstelling die liever time.windows.com als primaire tijdbron gebruikt, kunt u de volgende opdrachten gebruiken om u aan te kiezen voor alleen-host-tijdsynchronisatie.
Markeer de VMIC-provider als ingeschakeld.
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\VMICTimeProvider /v Enabled /t REG_DWORD /d 1 /f
Markeer de NTPClient-provider als uitgeschakeld.
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpClient /v Enabled /t REG_DWORD /d 0 /f
Start de w32time-service opnieuw.
net stop w32time && net start w32time
Windows Server 2012- en R2-VM's
Windows Server 2012 en Windows Server 2012 R2 hebben verschillende standaardinstellingen voor tijdsynchronisatie. De w32time is standaard geconfigureerd op een manier die de voorkeur geeft aan een lage overhead van de service gedurende een nauwkeurige periode.
Als u uw Windows Server 2012- en 2012 R2-implementaties wilt verplaatsen om de nieuwere standaardwaarden te gebruiken die de voorkeur geven aan een preciezere tijd, kunt u de volgende instellingen toepassen.
Werk de w32time-poll en update-intervallen bij zodat deze overeenkomen met de instellingen van 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
Als w32time
u de nieuwe poll-intervallen wilt kunnen gebruiken, moeten de NtpServers worden gemarkeerd als ze worden gebruikt. Als servers worden geannoteerd met het 0x1
bitflagmasker, zou dat dit mechanisme overschrijven en w32time
in plaats daarvan zouden gebruiken SpecialPollInterval
. Zorg ervoor dat de opgegeven NTP-servers de 0x8
vlag of helemaal geen vlag gebruiken:
Controleer welke vlaggen worden gebruikt voor de NTP-servers.
w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"
Volgende stappen
Hieronder vindt u koppelingen naar meer informatie over de tijdsynchronisatie: