2014-06-04 26 views
6

Chúng tôi có thiết lập chuyển đổi dự phòng DNS, với TTL là 180 giây. Khi một máy chủ không thành công, nó cập nhật địa chỉ IP trên bản ghi A Host tới bản ghi của máy chủ làm việc. Hiện tại, trang web của chúng tôi làm mới bằng cách sử dụng các yêu cầu AJAX trên một khoảng thời gian. Khi một trong các máy chủ bị lỗi, DNS được cập nhật và không thành công, vì vậy nếu bạn ping tên miền, nó có IP thích hợp. Tuy nhiên, vì lý do nào đó, bên trong trình duyệt và lâu sau khi TTL hết hạn, yêu cầu AJAX vẫn giữ lại địa chỉ IP cũ được gán cho tên miền (lưu ý rằng trang không thể được tải lại trong trình duyệt). Tôi nhận thức được khi đọc các câu hỏi khác mà bạn không thể buộc một bộ đệm DNS bị xóa trên máy khách. Câu hỏi của tôi là, làm bất kỳ của bạn biết một cách khác hoặc lừa để thực hiện điều này bằng cách sử dụng javascript hoặc AJAX? Cảm ơn.Cập nhật DNS cho tên miền trong yêu cầu AJAX

+1

Dường như vấn đề X/Y đối với tôi; bạn chỉ gặp tình trạng này do thiếu sót cơ sở hạ tầng của bạn ... trình duyệt khét tiếng về lưu giữ DNS, có thể vì lý do hiệu suất, vì vậy tôi sẽ không đi theo con đường này trừ khi công việc của tôi bị đe dọa :) –

+0

đến một giải pháp sẵn sàng cao. Chúng tôi có hai máy chủ cung cấp dữ liệu thông qua yêu cầu ajax. Vì ứng dụng web ở phía máy khách, ứng dụng này sẽ không được làm mới trong trình duyệt. Việc làm mới AJAX sẽ xảy ra trong khoảng thời gian, và tên miền trong ajax sẽ vẫn như cũ, tuy nhiên sẽ có một IP cập nhật khi một máy chủ không thành công. Nếu không có cách nào để làm điều này, bạn có biết làm thế nào tôi có thể thiết kế lại các yêu cầu trang web/ajax cho sẵn sàng cao với hai máy chủ xử lý yêu cầu? Cảm ơn – wayofthefuture

+0

Chỉ cần một số suy nghĩ mơ ước: nếu bạn sẽ thực hiện các yêu cầu đến một máy chủ khác luôn luôn và không bao giờ thay đổi ip của chúng và từ máy chủ đó, bạn thực hiện 'cURL' (hoặc cái gì đó tương tự) và trả về phản hồi? Vì vậy, bạn sử dụng 'the-always-up-server' như một loại router nào đó? – GuyT

Trả lời

2

Sử dụng hai (hoặc nhiều) miền phụ. ví dụ. data1.example.com và data2.example.com tương ứng với máy chủ vật lý.

Tuy nhiên đối với tên miền chéo hoạt động, bạn cần phải thiết lập document.domain cho phép truyền thông giữa các lĩnh vực:

document.domain = "example.com"; 

Sau đó, bạn cần kịch bản của bạn không qua giữa các máy chủ khác nhau bằng tay. Đó là cách duy nhất tôi biết và đã thành công trong nhiều lượt cài đặt.

+0

cảm ơn bạn, xin lưu ý rằng tôi đã chỉnh sửa một chút – wayofthefuture

4

Tôi sẽ không thử phía khách hàng này, tôi sẽ sử dụng bộ cân bằng tải mạng hoặc một số địa chỉ IP ảo khác của máy chủ.

Để làm như bạn yêu cầu phía máy khách, sẽ yêu cầu các cuộc gọi AJAX của bạn được thực hiện theo cách để tránh bảo mật trình duyệt hoặc tuân thủ đầy đủ các yêu cầu miền chéo. Nếu bạn vui lòng thực hiện những thay đổi này, thì có một số lib DNS JavaScript, chúng có thể được sử dụng để phân giải tên DNS thành địa chỉ IP hoặc CName, sử dụng địa chỉ IP trả về hoặc CName để điều chỉnh url AJAX của bạn và làm mới AJAX url bằng cách sử dụng tra cứu DNS mới bất cứ khi nào cuộc gọi AJAX bị lỗi.

tôi sẽ không muốn làm điều này bản thân mình

+0

Nó không phải đi qua tên miền, bởi vì có nhiều hơn 1 bản ghi lưu trữ cho tên. Về cơ bản, 1 tên miền được đặt cấu hình trong vòng tròn, và khi một máy chủ đi xuống, vòng robin chỉ giữ gửi cùng một ip. Cảm ơn – wayofthefuture

+2

http://en.wikipedia.org/wiki/Same-origin_policy cung cấp chi tiết. Để tiếp cận công việc, bạn sẽ phải ngừng sử dụng độ phân giải DNS của trình duyệt và tự kiểm soát, vì trình duyệt vẫn bị mắc kẹt với địa chỉ IP cũ đã chết. do đó trang được tải khi máy chủ không chết và yêu cầu ajax cho dữ liệu mới sẽ được coi là nguồn gốc khác nhau. –

1

tôi sẽ hoặc là:

  • mã ajax để đạt máy chủ primary.mycompany.com, nếu thất bại, sau đó chuyển sang secondary.mycompany. com, nếu điều đó không thành công, hãy quay lại chính.
  • tốt hơn là làm cho thiết lập chuyển đổi dự phòng tiếp quản một "dịch vụ ip" từ máy chủ không thành công. Có tồn tại các giải pháp tốt cho việc này.

Đối với công cụ google google như nhịp tim và ip ảo và whatnot.

+0

Đây là giải pháp mà tôi đã sử dụng trong quá khứ và là giải pháp đáng tin cậy nhất (ngoài việc có cơ sở hạ tầng mạng đáng tin cậy hơn). Tôi nhớ mâm xôi nói riêng, nổi tiếng cứng đầu. Sử dụng hai tên công cộng và yêu cầu tự động chuyển đổi yêu cầu ajax sang giá trị khác. – cmroanirgo

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