2011-08-18 11 views
5

Mam system oparty na systemie Windows, który siedzi na instancji Amazon EC2. Znany jest problem, że instancje systemu Windows EC2 mają problemy z synchronizowaniem czasu systemowego. Będę losowo logował się do systemu i odkryłem, że mój zegar systemowy znajduje się w dowolnym miejscu od paru sekund przerwy (niezbyt wielka umowa ...) do kilku minut lub nawet godzin wolnych (oczywiście ogromna transakcja).Radzenie sobie z niedokładnym zegarem systemowym

Biorąc pod uwagę, że głównym celem mojej witryny jest wydawanie linków do zabezpieczonych treści S3, które są zablokowane przez ściśle określony limit czasu (tj. Czasami nawet od 30 sekund do minuty), jest to dla mnie ogromny problem. Przeszukanie forów pomocy Amazon przyniosło wiele odpowiedzi, które po prostu nie działają i Amazon wydaje się ignorować problem, twierdząc, że jest związany z Windows. Niezależnie od tego, postanowiłem wziąć rzeczy w swoje ręce i nie czekać na Amazon.

Czego już za:

  • Tworzenie usługę, która uderza listę serwerów czasu co godzinę lub tak, pobiera aktualną godzinę, oblicza offset, a następnie używa tego przesunięcia generować dokładny spinki do mankietów. Wady polegają na tym, że potrzebuję dużej listy serwerów czasu, aby nie blokowały mi zbyt częstego uderzania w nie. Ponadto, jeśli czas zostanie losowo ustalony w środku jednego z tych okresów, moje linki zaczną ponownie się łamać.
  • Tworzenie instancji Linux EC2 i znajdowanie sposobu na uzyskanie jej wewnętrznego czasu. Nie czytałem nic o tym, jak dokładne są ich czasy w EC2, ale musiałbym założyć, że lepiej jest, że to bzdury.
  • Hosting moja strona gdzie indziej, że ma dokładnych zegarów ...

Czy są jakieś inne opcje można myśleć, że może być pominięte? Naprawdę nie jestem przeciwnikiem czegokolwiek, z jednym wyjątkiem przepisywania mojej witryny w innym języku, aby odejść od Windows (obecnie jest to aplikacja MVC .NET).

Z góry dziękuję!

EDYCJA: Ponadto nie mogę używać zabezpieczeń opartych na stronie odsyłającej, ponieważ wtyczki, z których korzystam, korzystają z tych linków, nie wysyłają w 100% strony odsyłającej w niektórych przeglądarkach.

+0

W przypadku wielu opisanych odpowiedzi należy skoncentrować się na skorygowaniu czasu, a nie na złej wartości. Wiele projektów związanych z bezpieczeństwem (takich jak Kerberos itd.) Jest wrażliwych na czas i może aktywnie łamać się, aby ostrzec Cię, że czas jest zły. Oczywiste jest, że rozwiązywanie problemów jest bardzo ważne, aby ujawnić przyczynę, https://msdn.microsoft.com/en-us/library/bb727060.aspx –

Odpowiedz

0

możesz spróbować zrobić aplikację na instancji Windows lub instancji Linuksa, jeśli zdecydujesz się na taki sposób, a kiedy będziesz chciał wiedzieć, co to jest czas, wyślij prośbę o api w inne miejsce: http://worldtimeengine.com/api/, aby uzyskać aktualny czas lokalny.

jeśli nie można polegać na zegarze instancji następnie uzyskać czas skądinąd :)

+0

Zasadniczo to, co miałem zamiar w mojej pierwszej opcji powyżej. Nie widziałem jednak tej szczególnej usługi czasu, więc dziękuję. – jamesmillerio

+0

facepalm! musiałem opuścić tę pierwszą opcję, przepraszam za jej powtórzenie. moje oczy przeskoczyły do ​​części Linuxa ... jednak myślę, że to może być najlepsze rozwiązanie. Niedokładności zegara sugerują pewien problem specyficzny dla chmury amazon, więc jeśli nie możesz dostać hosting gdzie indziej, to prawdopodobnie najlepsze rozwiązanie – jammypeach

3

To dziwne, że serwery powinny dryfować kilka godzin. Domyślnie system Windows Server 2008 R2 jest skonfigurowany do synchronizacji NTP swojego zegara z time.windows.com co 900 sekund (15 minut). Jeśli to nie zapewni wymaganej terminowości, możesz increase the frequency by modifying a registry key.

Jeśli hostujesz aplikację ASP.NET, powinieneś rozważyć uruchomienie jej na AppHarbor. Pracujemy nad EC2, ale zabieramy ponure zadania związane z zarządzaniem serwerem, np. Upewniając się, że zegary są zsynchronizowane.

0

mam do czynienia z tym samym problemem przez całe tygodnie i okazało się, korzeń mojego problemu było proste:

Upewnij się, że sieć ACL umożliwia przychodzący ruch UDP.

0

zmieniono serwer czasu internetowego na "time.nist.gov", poprawiono czas.

Powiązane problemy