Synchronizacja czasowa maszyn wirtualnych z systemem Windows na platformie Azure

Dotyczy: ✔️ Maszyny wirtualne z systemem Windows — elastyczne zestawy skalowania jednolite zestawy ✔️ ✔️ skalowania

Synchronizacja czasu jest ważna w przypadku korelacji zabezpieczeń i zdarzeń. Czasami jest on używany do implementacji transakcji rozproszonych. Dokładność czasu między wieloma systemami komputerowymi jest osiągana przez synchronizację. Synchronizacja może mieć wpływ na wiele rzeczy, w tym ponowne uruchomienie i ruch sieciowy między źródłem czasu a komputerem pobierającym czas.

Platforma Azure jest teraz wspierana przez infrastrukturę działającą Windows Server 2016. Windows Server 2016 ulepszono algorytmy używane do poprawiania czasu i warunku zegara lokalnego do synchronizacji z czasem UTC. Windows Server 2016 również ulepszoną usługę VMICTimeSync, która zarządza sposobem synchronizacji maszyn wirtualnych z hostem przez dokładny czas. Ulepszenia obejmują dokładniejszy początkowy czas uruchamiania maszyny wirtualnej lub przywracania maszyny wirtualnej i korekty opóźnienia przerwania dla przykładów dostarczonych do czasu systemu Windows (W32time).

Uwaga

Aby zapoznać się z szybkim omówieniem usługi Czas systemu Windows, zapoznaj się z tym wideo z omówieniem wysokiego poziomu.

Aby uzyskać więcej informacji, zobacz Dokładny czas Windows Server 2016.

Omówienie

Dokładność zegara komputera jest mierzona w sposobie zamknięcia zegara komputera do standardu czasu uniwersalnego koordynowanego (UTC). UTC jest definiowana przez międzynarodową próbkę precyzyjnych zegarów atomowych, które mogą być wyłączone tylko przez jedną sekundę od 300 lat. Jednak odczytywanie czasu UTC bezpośrednio wymaga specjalistycznego sprzętu. Zamiast tego serwery czasowe są synchronizowane z czasem UTC i są dostępne z innych komputerów w celu zapewnienia skalowalności i niezawodności. Każdy komputer ma uruchomioną usługę synchronizacji czasu, która wie, jakiego czasu używać serwerów i okresowo sprawdza, czy zegar komputera musi być poprawiony i dostosowuje czas w razie potrzeby.

Hosty platformy Azure są synchronizowane z wewnętrznymi serwerami czasu firmy Microsoft, które zajmują czas z urządzeń firmy Microsoft Stratum 1, z antenami GPS. Maszyny wirtualne na platformie Azure mogą zależeć od ich hosta, aby przekazać dokładny czas (czas hosta) na maszynę wirtualną lub maszynę wirtualną bezpośrednio uzyskać czas z serwera czasowego lub kombinację obu tych elementów.

Interakcje maszyn wirtualnych z hostem mogą również mieć wpływ na zegar. Podczas konserwacji zachowującej pamięć maszyny wirtualne są wstrzymywane przez maksymalnie 30 sekund. Na przykład przed rozpoczęciem konserwacji zegar maszyny wirtualnej pokazuje 10:00:00 i trwa 28 sekund. Po wznowieniu maszyny wirtualnej zegar na maszynie wirtualnej będzie nadal pokazywany 10:00:00, co będzie 28 sekund wyłączone. Aby rozwiązać ten problem, usługa VMICTimeSync monitoruje, co dzieje się na hoście i monituje o wprowadzenie zmian na maszynach wirtualnych w celu zrekompensowania.

Usługa VMICTimeSync działa w trybie próbkowania lub synchronizacji i będzie wpływać tylko na zegar do przodu. W trybie przykładowym, który wymaga uruchomienia usługi W32time, usługa VMICTimeSync sonduje hosta co 5 sekund i udostępnia próbki czasu do W32time. Około co 30 sekund usługa W32time zajmuje najnowszy czas próbki i używa jej do wpływania na zegar gościa. Tryb synchronizacji jest aktywowany, jeśli gość został wznowiony lub jeśli zegar gościa dryfuje ponad 5 sekund za zegarem hosta. W przypadkach, gdy usługa W32time jest prawidłowo uruchomiona, ten ostatni przypadek nigdy nie powinien się zdarzyć.

Bez pracy synchronizacji czasu zegar na maszynie wirtualnej będzie gromadzić błędy. Jeśli istnieje tylko jedna maszyna wirtualna, efekt może nie być znaczący, chyba że obciążenie wymaga bardzo dokładnego pomiaru czasu. Jednak w większości przypadków mamy wiele połączonych maszyn wirtualnych, które używają czasu do śledzenia transakcji, a czas musi być spójny w całym wdrożeniu. Gdy czas między maszynami wirtualnymi jest inny, można zobaczyć następujące efekty:

  • Uwierzytelnianie zakończy się niepowodzeniem. Protokoły zabezpieczeń, takie jak Kerberos lub technologia zależna od certyfikatów, polegają na spójnym czasie w systemach.
  • Bardzo trudno jest ustalić, co wydarzyło się w systemie, jeśli dzienniki (lub inne dane) nie zgadzają się na czas. To samo zdarzenie wyglądałoby tak, jakby miało miejsce w różnych momentach, co utrudnia korelację.
  • Jeśli zegar jest wyłączony, rozliczenia mogą być obliczane niepoprawnie.

Najlepsze wyniki wdrożeń systemu Windows są osiągane przy użyciu Windows Server 2016 jako systemu operacyjnego gościa, co zapewnia możliwość korzystania z najnowszych ulepszeń synchronizacji czasu.

Opcje konfiguracji

Istnieją trzy opcje konfigurowania synchronizacji czasu dla maszyn wirtualnych z systemem Windows hostowanych na platformie Azure:

Użyj wartości domyślnej

Domyślnie obrazy maszyn wirtualnych systemu operacyjnego Windows są skonfigurowane do synchronizacji z dwóch źródeł w32time:

  • Dostawca NtpClient, który pobiera informacje z time.windows.com.
  • Usługa VMICTimeSync używana do przekazywania czasu hosta do maszyn wirtualnych i dokonywania poprawek po wstrzymaniu maszyny wirtualnej w celu konserwacji. Hosty platformy Azure używają urządzeń z warstwą 1 firmy Microsoft, aby zachować dokładny czas.

w32time wolałby dostawcę czasu w następującej kolejności priorytetu: poziom warstwy, opóźnienie katalogu głównego, rozproszenie katalogu głównego, przesunięcie czasu. W większości przypadków w32time na maszynie wirtualnej platformy Azure preferuje czas hosta z powodu oceny, aby porównać oba źródła czasu.

W przypadku maszyn przyłączonych do domeny sama domena ustanawia hierarchię synchronizacji czasu, ale katalog główny lasu nadal musi zająć trochę czasu, a następujące zagadnienia nadal będą miały wartość true.

Tylko host

Ponieważ time.windows.com jest publicznym serwerem NTP, synchronizacja czasu z nim wymaga wysyłania ruchu przez Internet, różne opóźnienia pakietów mogą negatywnie wpływać na jakość synchronizacji czasu. Usunięcie time.windows.com przez przełączenie do synchronizacji tylko na hoście może czasami poprawić wyniki synchronizacji czasu.

Przełączanie na synchronizację czasową tylko na hoście ma sens, jeśli występują problemy z synchronizacją czasu przy użyciu konfiguracji domyślnej. Wypróbuj synchronizację tylko na hoście, aby sprawdzić, czy poprawi to synchronizację czasu na maszynie wirtualnej.

Serwer czasu zewnętrznego

Jeśli masz określone wymagania dotyczące synchronizacji czasu, istnieje również opcja korzystania z serwerów czasu zewnętrznego. Serwery czasu zewnętrznego mogą zapewnić określony czas, który może być przydatny w scenariuszach testowych, zapewniając jednolitość czasu z maszynami hostowanymi w centrach danych innych niż Microsoft lub obsługa sekund przestępnych w specjalny sposób.

Możesz połączyć serwery zewnętrzne z usługą VMICTimeSync i vmICTimeProvider, aby zapewnić wyniki podobne do konfiguracji domyślnej.

Sprawdź konfigurację

Sprawdź, czy dostawca czasu NtpClient jest skonfigurowany do używania jawnych serwerów NTP (NTP) lub synchronizacji czasu domeny (NT5DS).

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

Jeśli maszyna wirtualna korzysta z protokołu NTP, zostaną wyświetlone następujące dane wyjściowe:

Value Name                 Value Type          Value Data
Type                       REG_SZ              NTP

Aby sprawdzić, jakiego serwera czasu używa dostawca czasu NtpClient, w wierszu polecenia z podwyższonym poziomem uprawnień wpisz:

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

Jeśli maszyna wirtualna używa wartości domyślnej, dane wyjściowe będą wyglądać następująco:

NtpServer                  REG_SZ              time.windows.com,0x8

Aby sprawdzić, jaki dostawca czasu jest obecnie używany.

w32tm /query /source

Oto dane wyjściowe, które można zobaczyć i co to będzie oznaczać:

  • time.windows.com — w konfiguracji domyślnej w32time otrzyma czas od time.windows.com. Jakość synchronizacji czasu zależy od łączności z Internetem i ma to wpływ na opóźnienia pakietów. Jest to zwykłe dane wyjściowe, które można uzyskać na maszynie fizycznej.
  • Dostawca synchronizacji czasu IC maszyny wirtualnej — maszyna wirtualna synchronizuje czas z hosta. To są zwykłe dane wyjściowe, które można uzyskać na maszynie wirtualnej uruchomionej na platformie Azure.
  • Serwer domeny — bieżąca maszyna znajduje się w domenie, a domena definiuje hierarchię synchronizacji czasu.
  • Inny serwer — w32time został jawnie skonfigurowany, aby uzyskać czas z tego innego serwera. Jakość synchronizacji czasu zależy od jakości serwera czasowego.
  • Zegar lokalnego systemu CMOS — zegar jest niezsynchronizowany. Możesz uzyskać te dane wyjściowe, jeśli w32time nie miał wystarczająco dużo czasu, aby rozpocząć po ponownym uruchomieniu lub gdy wszystkie skonfigurowane źródła czasu są niedostępne.

Wybierz opcję synchronizacji czasowej tylko na hoście

Platforma Azure stale pracuje nad ulepszaniem synchronizacji czasu na hostach i może zagwarantować, że cały czas infrastruktury synchronizacji jest collocated w centrach danych należących do firmy Microsoft. Jeśli masz problemy z synchronizacją czasu z domyślną konfiguracją, która woli używać time.windows.com jako źródła czasu podstawowego, możesz użyć następujących poleceń, aby wyrazić zgodę na synchronizację czasową tylko na hoście.

Oznacz dostawcę VMIC jako włączonego.

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

Oznacz dostawcę NTPClient jako wyłączone.

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

Uruchom ponownie usługę w32time.

net stop w32time && net start w32time

maszyny wirtualne Windows Server 2012 i R2

Windows Server 2012 i Windows Server 2012 R2 mają różne ustawienia domyślne synchronizacji czasu. Domyślnie w32time jest konfigurowany w sposób, który preferuje niskie obciążenie usługi w czasie dokładnym.

Jeśli chcesz przenieść wdrożenia Windows Server 2012 i 2012 R2, aby użyć nowszych ustawień domyślnych, które preferują dokładny czas, możesz zastosować następujące ustawienia.

Zaktualizuj interwały sondowania w32time i aktualizacji, aby pasować do ustawień 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 móc używać nowych interwałów sondowania, należy oznaczyć serwery NtpServer jako używane. Jeśli serwery są oznaczone maską 0x1 bitflag, spowoduje to zastąpienie tego mechanizmu i w32time zamiast tego będzie używane SpecialPollInterval . Upewnij się, że określone serwery NTP używają flagi 0x8 lub żadnej flagi w ogóle:

Sprawdź, jakie flagi są używane dla serwerów NTP.

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

Następne kroki

Poniżej znajdują się linki do dodatkowych szczegółów dotyczących synchronizacji czasu: