Synchronizacja czasu dla 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 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 mieć wpływ na wiele elementów, w tym ponownych rozruchów i ruchu sieciowego 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 poprawiania czasu i warunku zegara lokalnego do 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 maszyny wirtualnej lub przywracania maszyny wirtualnej i poprawiania opóźnienia przerwań dla przykładów dostarczonych do czasu systemu Windows (W32time).
Uwaga
Aby zapoznać się z krótkim omówieniem usługi Czas systemu Windows, zapoznaj się z tym ogólnym filmem wideo z omówieniem.
Aby uzyskać więcej informacji, zobacz Dokładny czas dla systemu 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 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 zajmują czas z należących do firmy Microsoft urządzeń Stratum 1 z antenami GPS. Maszyny wirtualne na platformie Azure mogą zależeć od hosta, aby przekazać dokładny czas (czas hosta) do maszyny wirtualnej lub maszyny wirtualnej bezpośrednio uzyskać czas z serwera czasu lub kombinacji obu tych elementów.
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 na maszynie wirtualnej nadal będzie pokazywał wartość 10:00:00, co będzie miało wartość 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ć 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 ostatni raz próbkę 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 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 technologia zależna od certyfikatów, zależą od czasu spójnego 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 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 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 czasem hosta lub bez niego. W przypadku tej opcji postępuj zgodnie z przewodnikiem Czas dla maszyn wirtualnych z systemem Windows w usłudze Active Directory 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 maszynom wirtualnym i dokonywania poprawek po wstrzymaniu konserwacji maszyny wirtualnej. 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 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 ze względu na ocenę, 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ł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ć, 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 znaczy:
- time.windows.com — w konfiguracji domyślnej w32time będzie 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 hosta. 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ły czas infrastruktury synchronizacji jest kolokowany 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ę 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
można było używać nowych interwałów sondowania, należy oznaczyć serwery NtpServer jako używane. Jeśli serwery są oznaczone adnotacją z 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ą 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: