Jakie są granice działania serwerów NTP na maszynach wirtualnych?

15

Chcę skonfigurować kilka serwerów czasu Stratum 2 w mojej sieci lokalnej. Maszyny wirtualne z pewnością byłyby tańszym sposobem na zrobienie tego niż kupowanie trzech serwerów 1U. Jakie ograniczenia to nałożyłoby? To znaczy, do jakiego stopnia wpłynie to negatywnie na dokładność?

Dodatkowo, instynktownie myślę, że te lokalne serwery czasu powinny znajdować się na różnych fizycznych komputerach w celu ograniczenia wszelkich nieprawidłowości sprzętowych. Czy ta intuicja jest poprawna?

Edycja powinienem powiedzieć, że „maszyny wirtualne” ja nie specjalnie oznaczać VMware . Miałem raczej na myśli ogólną koncepcję zwirtualizowanych instancji.

James A. Rosen
źródło

Odpowiedzi:

19

Prostym faktem jest to, że dokładność zegara w maszynie wirtualnej jest nadal bardzo zła. Wynika to z kilku miejsc, ale zabójcą jest to, że przesunięcie czasu nie jest stałe; współczynnik dryfu zmienia się z chwili na chwilę. NTP to protokół z wbudowaną kompensacją zegara, ale został zaprojektowany z wbudowanym współczynnikiem dryfu statycznego. Na przykład, jeśli fizyczna maszyna traci 12 sekund co 30 dni, NTP może to zrekompensować i robi to bardzo dobrze. Ale jeśli ta maszyna może stracić od 4 do 70 sekund co 30 dni, NTP nie jest tak dobry w śledzeniu tego poziomu zmian.

To, co naprawdę utrudnia NTP nadążanie w środowisku VM, polega na tym, że widziany przez niego lokalny zegar może zmienić współczynnik dryfu w ciągu minuty. W zależności od częstotliwości, która sprawdza źródła czasu nadrzędnego, może powodować poważne zmiany współczynnika znoszenia i powodować znacznie częstszą synchronizację. Niezsynchronizowane kaskady czasowe w całej organizacji.

Protokół NTP dla sieci lokalnej jest protokołem o stosunkowo niewielkim wpływie na środowisko i ma bardzo małą pamięć, i może z radością korzystać z innych serwerów infrastruktury sieci, takich jak serwery DNS i DHCP. Niektóre routery mogą również zapewniać funkcjonalność NTP, więc warto się temu przyjrzeć.

Idealnie potrzebujesz dwóch oddzielnych serwerów w oddzielnych lokalizacjach, z których każdy synchronizuje się z innym zestawem serwerów wyższej warstwy. Byłoby również bardzo dobrym pomysłem, aby oba serwery czasu były skonfigurowane do używania drugiego serwera jako „elementu równorzędnego”, co zminimalizuje wpływ na obsługę czasu, gdyby jedno z wcześniejszych źródeł czasu nie działało; nastąpi zmiana warstwy, ale przynajmniej nie zgłosi braku synchronizacji. I na koniec, bądź miły dla swoich dostawców czasu upstream i skonfiguruj swoje serwery, aby pracowały bardzo długo między ankietami, gdy czas będzie dobrze ustalony. Jest to parametr „maxpoll” w wierszu „serwer” i stanowi on potęgę dwóch sekund między próbami synchronizacji.

Jeśli musiałbyś do tego bezwzględnie używać maszyn wirtualnych, skonfigurowałbym nie mniej niż trzy takie serwery NTP. Każdy z nich musi znajdować się na innym hoście, a jeśli to możliwe, w innym centrum danych. Podobnie jak w przypadku tego, co właśnie zasugerowałem, potrzebują różnych źródeł czasu i powinni zerknąć ze sobą. Następnie skonfiguruj wszystkich swoich klientów NTP, aby korzystali ze wszystkich trzech jako źródeł nadrzędnych. Upewnij się, że twoje maksymalne wartości są wystarczająco niskie, aby nigdy nie przekraczać półtorej godziny między pakietami synchronizacji poza siecią i 30 minut w sieci. Szanse są dobre, przynajmniej jedna z trzech będzie zsynchronizowana w dowolnym momencie. W przypadku klientów, którzy mogą rozmawiać tylko z jednym hostem czasu, będą musieli po prostu wytrzymać sporadyczne zdarzenie niezsynchronizowane. Ogólnie rzecz biorąc, jakość czasu w tym scenariuszu nie byłaby tak dokładna, jak w przypadku serwerów fizycznych.

Gdybym musiał zaparkować piłkę, powiedziałbym, że twój czas na osiągnięcie konsensusu w środowisku opartym na czystych maszynach wirtualnych prawdopodobnie mieściłby się w granicach, och, od 30 do 100 ms prawdy. W czysto fizycznym środowisku twój czas konsensusu prawdopodobnie wynosiłby 10 ms, gdy serwery czasu były wystarczająco długie, aby czas się ustabilizował.

sysadmin1138
źródło
1
Jestem całkiem pewien, że chcę co najmniej trzy , a nie tylko dwa lokalne serwery NTP. Jak klient rozróżniałby tylko dwa?
James A. Rosen
Potrzebujesz z co najmniej czterech z tajemniczego powodu. To powiedziawszy, mamy tylko dwa wewnętrzne serwery, które są zsynchronizowane z kilkoma serwerami zewnętrznymi (i ich lokalnymi zegarami jako kopie zapasowe). Działa dla nas wystarczająco dobrze.
James
James A Rosen - To radość z konfiguracji grupy rówieśniczej. Tak długo, jak przynajmniej jeden członek grupy równorzędnej ma połączenie zewnętrzne i jest zsynchronizowany, cała grupa równorzędna jest zsynchronizowana. Klienci mogą degradować warstwę, ale przynajmniej nie tracą synchronizacji. Masz trzy w grupie rówieśniczej? Nie ma problemu.
sysadmin1138
1
Jeśli chodzi o liczbę potrzebnych serwerów, wszystko jest tutaj: support.ntp.org . Jeśli podasz tylko jedną, nie będzie pytania, które zostanie uznane za „dobre” lub „złe”. [...] W przypadku dwóch nie można stwierdzić, który z nich jest lepszy [...]. To właściwie najgorsza możliwa konfiguracja [...]. Dzięki trzem serwerom masz minimalną liczbę źródeł czasu [...] Ta konfiguracja nie zapewnia redundancji. Przy co najmniej czterech serwerach nadrzędnych [...] ntpd będzie miało wystarczającą liczbę źródeł do wyboru.
Mathieu,
11

Zobacz dokument pomiaru czasu vmware . Uruchamianie demona NTP na maszynie wirtualnej prawdopodobnie nie jest dobrym pomysłem, szczególnie jeśli potrzebujesz niezawodnego czasu.

Zoredache
źródło
2
Haha - „szczególnie jeśli potrzebujesz niezawodnego czasu”
squillman
1
Nie mogłem się z tobą bardziej zgodzić, w rzeczywistości nie mogę wymyślić jednego serwera mniej odpowiedniego do działania na maszynie wirtualnej :)
Chopper3
6

niestety ntp i wirtualizacja nie idą dobrze razem. klienci są w większości przypadków w porządku, jednak serwer ntp (esp str2 i wyższy) zazwyczaj nie działa niezawodnie na serwerze wirtualnym.

komentuję z perspektywy Xen i Xen Enterprise, ale wierzę, że vmware / kvm będzie tak samo.

jeśli chodzi o różne serwery, tak, masz rację, najlepiej powinny być również w różnych środowiskach, aby temperatura / wilgotność również nie wpływały na dokładność, ale przynajmniej nie przejmuję się tym. nie zapominaj również, że cokolwiek zrobisz, nadal nie będzie tak dokładne jak właściwy zegar atomowy, więc po prostu zaakceptuj to (bardzo niewielkie) odchylenie.

rytis
źródło
1

Korzystając z NTP w zwirtualizowanym środowisku, będziesz mieć szczęście, aby osiągnąć dokładność 20 ms (właśnie to zrobiliśmy przy użyciu VMware). Zwirtualizowane pochylenie zegara jest złe, szczególnie w środowisku zwirtualizowanym z rywalizacją o zasoby.

To zależy od tego, jak dokładny musisz być. Jeśli zależy ci tylko na drugim (EG dla serwerów sieciowych), prawdopodobnie nic ci nie będzie, o ile nie będziesz walczył o zasoby. Jeśli chcesz milisekundowej dokładności (np. Zajętej bazy danych, serwera dziennika, projektu badawczego), zapomnij o zwirtualizowanych serwerach czasu.

Serwery NTP powinny zawsze znajdować się na fizycznych hostach. Powinieneś mieć co najmniej 3 z nich peeringujących się w puli (aby jeden nieuczciwy serwer został przegłosowany przez pulę); i jeśli to możliwe, uzyskaj czas z GPS lub innego lokalnego źródła poziomu 0 zamiast z Internetu.

Steve Shipway
źródło