2011-08-18 42 views
5

Tôi có hệ thống dựa trên cửa sổ nằm trên phiên bản EC2 của Amazon. Có một vấn đề đã biết rằng các phiên bản Windows EC2 có vấn đề trong việc giữ cho thời gian hệ thống của họ được đồng bộ. Tôi sẽ ngẫu nhiên đăng nhập vào hệ thống và thấy rằng đồng hồ hệ thống của tôi ở bất cứ nơi nào từ một vài giây (không quá lớn của một thỏa thuận ...) đến vài phút hoặc thậm chí hàng giờ (rõ ràng là một thỏa thuận lớn).Xử lý đồng hồ hệ thống không chính xác

Xem xét mục tiêu chính của trang web của tôi là phát hành các liên kết đến nội dung S3 bảo mật bị khóa bởi một giới hạn thời gian nghiêm ngặt đáng kể (tức là đôi khi ít nhất 30 giây đến một phút), đây là một vấn đề lớn đối với tôi. Cọ rửa các diễn đàn trợ giúp của Amazon đã mang lại nhiều câu trả lời mà chỉ đơn giản là không làm việc và Amazon dường như bỏ qua vấn đề tuyên bố nó liên quan đến Windows. Bất kể, tôi đã quyết định để có những thứ vào tay của riêng tôi và không phải chờ đợi trên Amazon.

Những điều tôi đã xem xét:

  • Tạo một dịch vụ mà lượt truy cập một danh sách các máy chủ thời gian mỗi giờ hoặc lâu hơn, được thời gian hiện tại, tính toán bù đắp, và sau đó sử dụng này bù đắp để tạo ra chính xác liên kết. Nhược điểm là tôi cần phải có một danh sách đáng kể các máy chủ thời gian để chúng không chặn tôi đánh chúng quá thường xuyên. Ngoài ra, nếu thời gian được cố định ngẫu nhiên vào giữa một trong các khoảng thời gian này, các liên kết của tôi sẽ bắt đầu lại bị phá vỡ.
  • Tạo một phiên bản EC2 của Linux và tìm cách nhận thời gian nội bộ của nó. Tôi đã không đọc bất cứ điều gì về cách chính xác thời gian của họ là trong EC2, nhưng tôi sẽ phải giả định nó là tốt hơn rằng điều này vô nghĩa.
  • Hosting trang web của tôi ở những nơi khác mà có đồng hồ chính xác ...

Có bất kỳ tùy chọn khác mà bạn có thể nghĩ rằng tôi có thể đã bỏ lỡ? Tôi không thực sự phản đối bất cứ điều gì với một ngoại lệ được viết lại trang web của tôi trong một ngôn ngữ khác để di chuyển ra khỏi Windows (đó là một ứng dụng Net MVC hiện nay).

Cảm ơn trước!

EDIT: Cũng lưu ý, tôi không thể sử dụng bảo mật dựa trên liên kết giới thiệu vì plugin tôi đang sử dụng sử dụng các liên kết này không gửi 100% liên kết giới thiệu trong một số trình duyệt.

+0

Như nhiều câu trả lời được mô tả, bạn nên tập trung vào sửa chữa thời gian, không chấp nhận giá trị sai. Nhiều thiết kế liên quan đến bảo mật (như Kerberos và vân vân) có thời gian nhạy cảm, và có thể chủ động tự phá vỡ để cảnh báo bạn về thời gian là sai. Tất nhiên, xử lý sự cố là khá quan trọng để tiết lộ nguyên nhân, https://msdn.microsoft.com/en-us/library/bb727060.aspx –

Trả lời

0

bạn có thể thử tạo một ứng dụng trên cửa sổ hoặc cá thể linux nếu bạn chọn theo cách đó và bất cứ khi nào bạn cần biết thời gian gửi yêu cầu api tới một nơi nào đó như thế này: http://worldtimeengine.com/api/ để nhận giờ địa phương hiện tại.

nếu bạn không thể dựa vào đồng hồ của instance sau đó nhận được thời gian từ một nơi khác :)

+0

Đó là cơ bản những gì tôi đã đi với trong tùy chọn đầu tiên của tôi ở trên. Tôi đã không nhìn thấy dịch vụ thời gian cụ thể mặc dù, vì vậy cảm ơn. – jamesmillerio

+0

facepalm! tôi phải bỏ lỡ lựa chọn đầu tiên đó, xin lỗi vì đã lặp lại nó. đôi mắt của tôi bỏ qua phần linux ... tuy nhiên tôi nghĩ rằng đó có thể là giải pháp tốt nhất của bạn. Đồng hồ không chính xác đề xuất một số vấn đề cụ thể đối với đám mây amazon, vì vậy trừ khi bạn có thể nhận lưu trữ ở nơi khác đó có thể là giải pháp tốt nhất – jammypeach

3

Thật kỳ lạ rằng các máy chủ của bạn nên trôi dạt vài giờ. Theo mặc định, Windows Server 2008 R2 được cấu hình để đồng bộ hóa NTP với đồng hồ của nó với time.windows.com sau mỗi 900 giây (15 phút). Nếu điều này không giúp bạn có được thời gian cần thiết, bạn có thể increase the frequency by modifying a registry key.

Nếu bạn đang lưu trữ ứng dụng ASP.NET, bạn nên xem xét chạy ứng dụng trên AppHarbor. Chúng tôi chạy trên đầu EC2, nhưng lấy đi các nhiệm vụ quản lý máy chủ ảm đạm như đảm bảo đồng hồ được đồng bộ hóa.

0

Tôi đã được làm việc với cùng một vấn đề trong nhiều tuần và phát hiện ra gốc rễ của vấn đề của tôi rất đơn giản:

Hãy chắc chắn rằng mạng ACL của bạn cho phép inbound giao thông UDP.

0

thay đổi máy chủ thời gian internet thành "time.nist.gov", nó đã sửa thời gian.

Các vấn đề liên quan