Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ Maszyny wirtualne z systemem Windows ✔️ Elastyczne zestawy skalowania ✔️ Jednolite zestawy skalowania
Synchronizacja czasu jest ważna dla korelacji zabezpieczeń i zdarzeń. Czasami jest używany do implementacji transakcji rozproszonych. Dokładność czasu między wieloma systemami komputerowym jest osiągana przez synchronizację. Synchronizacja może być zakłócona przez wiele czynników, w tym ponowne uruchomienia i ruch sieciowy między źródłem czasu a komputerem pobierającym czas.
Platforma Azure jest teraz wspierana przez infrastrukturę z systemem Windows Server 2016. System Windows Server 2016 ma ulepszone algorytmy używane do korekty czasu i dopasowania zegara lokalnego w celu synchronizacji z UTC. System Windows Server 2016 ulepszył również usługę VMICTimeSync, która określa sposób synchronizacji maszyn wirtualnych z hostem przez dokładny czas. Ulepszenia obejmują dokładniejszy początkowy czas uruchamiania lub przywracania maszyny wirtualnej oraz poprawienie opóźnienia przerwań dla próbek dostarczonych do usługi czasu systemu Windows (W32time).
Uwaga
Aby zapoznać się z szybkim przeglądem usługi Czas systemu Windows, obejrzyj ten film prezentujący ogólne zagadnienia.
Aby uzyskać więcej informacji, zobacz Dokładny czas dla systemu Windows Server 2016.
Przegląd
Dokładność zegara komputera jest mierzona na podstawie jego zgodności ze standardem uniwersalnego czasu koordynowanego (UTC). UTC jest definiowany przez międzynarodowy zbiór precyzyjnych zegarów atomowych, które mogą błądzić tylko o jedną sekundę na 300 lat. Jednak odczytywanie czasu UTC bezpośrednio wymaga wyspecjalizowanego sprzętu. Zamiast tego serwery czasu 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 pobierają czas z urządzeń Stratum 1 należących do firmy Microsoft, wyposażonych w anteny GPS. Maszyny wirtualne na platformie Azure mogą polegać na tym, że ich host przekaże dokładny czas (czas hosta) do maszyny wirtualnej, lub maszyna wirtualna może bezpośrednio uzyskać czas z serwera czasu, lub też wykorzystać kombinację obu tych metod.
Interakcje maszyn wirtualnych z hostem mogą również mieć wpływ na zegar. Podczas konserwacji pamięci 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 będzie nadal pokazywał godzinę 10:00:00, będąc opóźnionym o 28 sekund. 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ć na zegar tylko 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 pobiera najnowszą próbkę czasu i używa jej, aby skorygować 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 dokładnego utrzymywania czasu. Jednak w większości przypadków mamy wiele połączonych maszyn wirtualnych, które wykorzystują czas 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 technologie zależne od certyfikatów, polegają na spójności czasowej w systemach.
- Bardzo trudno jest ustalić, co wydarzyło się w systemie, jeśli dzienniki (lub inne dane) czasowo się nie zgadzają. To samo zdarzenie wyglądałoby tak, jakby miało to miejsce w różnych momentach, co utrudnia korelację.
- Jeśli zegar jest wyłączony, rozliczenia mogą być obliczane niepoprawnie.
Najlepsze wyniki dla wdrożeń systemu Windows są osiągane przy użyciu systemu operacyjnego Windows Server 2016 jako systemu operacyjnego gościa, co gwarantuje, że można korzystać z najnowszych ulepszeń synchronizacji czasu.
Opcje konfiguracji
Istnieją trzy opcje konfigurowania synchronizacji czasu dla maszyn wirtualnych z systemem Windows hostowanych na platformie Azure:
- Czas hosta i serwer time.windows.com. Jest to domyślna konfiguracja używana w obrazach witryny Azure Marketplace.
- Tylko host.
- Użyj innego, zewnętrznego serwera czasu, z lub bez korzystania z czasu hosta. W przypadku tej opcji postępuj zgodnie z przewodnikiem Mechanizmu Czasu dla maszyn wirtualnych Windows w Active Directory na platformie Azure.
Użyj wartości domyślnej
Domyślnie obrazy maszyn wirtualnych systemu operacyjnego Windows są skonfigurowane do synchronizacji w32time z dwóch źródeł:
- Dostawca NtpClient, który pobiera informacje z time.windows.com.
- Usługa VMICTimeSync używana do przekazywania czasu hosta maszynom wirtualnym i dokonywania poprawek po wstrzymaniu maszyny wirtualnej na potrzeby konserwacji. Hosty platformy Azure używają urządzeń stratum 1 należących do firmy Microsoft, aby zachować dokładny czas.
w32time preferuje dostawcę czasu w następującej kolejności priorytetu: poziom strat, opóźnienie źródłowe, rozproszenie źródłowe, odchylenie czasu. W większości przypadków w32time na maszynie wirtualnej platformy Azure preferuje czas hosta z powodu przeprowadzanej oceny, która służy porównaniu obu źródeł czasu.
W przypadku maszyn przyłączonych do domeny sama domena ustanawia hierarchię synchronizacji czasu, ale katalog główny lasu nadal musi pozyskiwać czas zewnętrzny, a następujące zagadnienia nadal będą miały zastosowanie.
Tylko gospodarz
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łynąć na jakość synchronizacji czasu. Usunięcie time.windows.com przez przełączenie na synchronizację 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.
Zewnętrzny serwer czasu
Jeśli masz określone wymagania dotyczące synchronizacji czasu, istnieje również opcja korzystania z serwerów czasu zewnętrznego. Zewnętrzne serwery czasu 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 firm 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ć, z jakiego serwera czasu korzysta dostawca NtpClient, w podwyższonym wierszu polecenia 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 znaczy:
- time.windows.com — w domyślnej konfiguracji w32time pobiera czas z 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 hostem. Są to 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 do pobierania czasu z tego innego serwera. Jakość synchronizacji czasu zależy od jakości serwera czasu.
- Lokalny zegar CMOS — zegar jest niezsynchronizowany. Te dane wyjściowe można uzyskać, jeśli w32time nie miał wystarczająco dużo czasu, aby rozpocząć po ponownym uruchomieniu lub gdy wszystkie skonfigurowane źródła czasu nie są dostępne.
Włączanie synchronizacji czasu tylko na hoście
Platforma Azure stale pracuje nad ulepszaniem synchronizacji czasu na hostach i może zagwarantować, że cała infrastruktura synchronizacji jest umieszczona w centrach danych będących własnością 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ę tylko do czasu hosta.
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łączonego.
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 z systemem Windows Server 2012 i R2
Systemy Windows Server 2012 i Windows Server 2012 R2 mają inne domyślne ustawienia synchronizacji czasu. W32time domyślnie jest skonfigurowany w sposób, który preferuje niskie obciążenie usługi w czasie.
Jeśli chcesz przenieść wdrożenia systemów Windows Server 2012 i 2012 R2 do korzystania z nowszych domyślnych, które preferują dokładny czas, możesz zastosować następujące ustawienia.
Zaktualizuj interwały sondowania w32time i aktualizacji w celu dopasowania ich do ustawień systemu 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
mogły używać nowych interwałów sondowania, NtpServers muszą być oznaczone jako używające ich. Jeśli serwery są oznaczone maską bitflag 0x1
, spowoduje to zastąpienie tego mechanizmu i w32time
będzie używać SpecialPollInterval
zamiast tego. Upewnij się, że określone serwery NTP używają 0x8
flagi lub nie 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: