Mỗi trình duyệt có phương pháp xử lý DNS vòng tròn riêng, tôi đã dành thời gian hôm nay để nghiên cứu vấn đề này và sẽ tiếp tục cập nhật câu trả lời của tôi khi tôi tìm thấy bằng chứng thực hiện sẽ giới hạn câu trả lời của tôi cho các trình duyệt phơi bày hành vi của họ.
Google Chrome
Google Chrome (v58 đã sử dụng) sẽ yêu cầu tất cả các mục lưu trữ cho một địa chỉ (A, AAAA, CNAME) và đặt chúng vào một mảng ( address_list ). Chrome sau đó sẽ cố gắng mở một ổ cắm trên mỗi địa chỉ IP theo thứ tự từ đầu đến cuối, chrome sẽ không thử IP nhanh nhất hoặc gần nhất, nó giả sử IP đầu tiên (được cung cấp bởi bộ phân giải dns ngược dòng của bạn) là IP tốt nhất. Trong các thử nghiệm của tôi, máy chủ dns và windows dns đưa ra một thứ tự IP khác nhau cho mỗi lần tra cứu, đưa ra mức chia 50/50 băng thông cho mỗi IP. Chức năng này được thể hiện trongchrome://net-internals/#events&q=type:SOCKET%20is:active
Curl (libcurl / 7.54.0)
Curl cũng có chức năng chuyển đổi dự phòng này nhưng --connect-timeout
dài hơn nhiều so với mặc định trong chrome, chrome bị lỗi ngay lập tức, Curl thì không. Nếu bạn sử dụng libcurl và muốn tồn tại một trường hợp dns tròn trong đó một IP bị lỗi, (hoạt động trong chrome nhưng không phải trong mã), hãy chắc chắn chỉ định giá trị này thấp hơn.
DEFAULT_CONNECT_TIMEOUT: 0 khiến tôi nghĩ rằng điều này là không thể với curl.
* After 149990ms connect time, move on!
Trên cả hai trình duyệt , IP không bị dính , chúng tuân theo chỉ số TTL được cung cấp trong DNS và khi ttl hết hạn (chrome duy trì nội bộ này, curl hỏi từng yêu cầu), việc chọn ip được thực hiện mỗi lần như mô tả ở trên.
Điều đó có nghĩa là gì? DNS-RR phù hợp với một số hệ thống, nhưng nó không được thiết kế để chuyển đổi dự phòng. Bạn nên mong đợi rằng tất cả các kết quả từ tìm kiếm DNS là (một nguồn sự thật) hợp lệ và có sẵn để phục vụ lưu lượng truy cập. Có nhiều cách để đảm bảo tính khả dụng của IP, chẳng hạn như IP float ảo, thủ thuật BGP / Định tuyến, v.v ... Sử dụng chúng .
Tất cả các thử nghiệm được thực hiện trong môi trường chỉ IPv4, sẽ trả về với kết quả xếp chồng kép sau khi có đủ cơ sở hạ tầng để kiểm tra.
Tôi suy đoán những thay đổi này là tác dụng phụ của Nhãn cầu RFC Happy -Rback IPv6
Cập nhật
Một cân nhắc hữu ích, RR DNS chỉ có thể hỗ trợ cân bằng tải, không phải lỗi ứng dụng, nếu một trong các nút của bạn có 503, bạn sẽ phục vụ 40-60% nếu lưu lượng truy cập 503 của bạn. Giả định được đưa ra là tất cả các IP được liệt kê là điểm cuối làm việc hợp lệ nếu có thể truy cập