Setiap browser memiliki metode sendiri dalam menangani round-robin DNS, saya telah menghabiskan waktu hari ini untuk meneliti masalah ini dan akan terus memperbarui jawaban saya karena saya menemukan bukti implementasi yang akan membatasi jawaban saya ke browser yang mengekspos perilaku mereka.
Google Chrome
Google Chrome (digunakan v58) akan meminta semua entri host untuk alamat (A, AAAA, CNAME) dan memasukkannya ke dalam array ( address_list ). Chrome kemudian akan mencoba untuk membuka soket pada setiap alamat IP dalam urutan dari pertama hingga terakhir, chrome tidak akan mencoba IP tercepat atau terdekat, mengasumsikan IP pertama (diberikan oleh resolver dns hulu Anda) adalah IP terbaik. Dalam tes saya mengikat dan windows dns server memberikan urutan IP yang berbeda per pencarian, memberikan apa yang tampak seperti 50/50 membagi bandwidth untuk setiap IP. Fungsi ini terbuka dichrome://net-internals/#events&q=type:SOCKET%20is:active
Curl (libcurl / 7.54.0)
Curl juga memiliki fungsi fail-over ini tetapi --connect-timeout
jauh lebih lama daripada default di chrome, chrome gagal segera, Curl tidak. Jika Anda menggunakan libcurl dan ingin selamat dari contoh round-robin dns di mana satu IP gagal, (berfungsi dalam chrome tetapi tidak dalam kode) pastikan untuk menentukan nilai ini lebih rendah.
DEFAULT_CONNECT_TIMEOUT: 0 membuat saya berpikir ini tidak mungkin dengan curl.
* After 149990ms connect time, move on!
Di kedua browser , IP tidak lengket , mereka mengikuti TTL yang diberikan dalam DNS dan begitu ttl kedaluwarsa (chrome mempertahankan ini secara internal, curl bertanya pada setiap permintaan), pemilihan ip dilakukan setiap kali seperti dijelaskan di atas.
Apa artinya ini? DNS-RR ok untuk beberapa sistem, tetapi tidak dirancang untuk failover. Anda harus mengharapkan bahwa semua hasil dari pencarian DNS (sumber kebenaran) valid dan tersedia untuk melayani lalu lintas. Ada banyak cara untuk memastikan ketersediaan IP, seperti IP float virtual, BGP / Trik perutean, dll. Gunakan mereka .
Semua tes yang dilakukan di lingkungan IPv4 saja, akan kembali dengan hasil tumpukan ganda begitu infrastruktur tersedia untuk diuji.
Saya berspekulasi bahwa perubahan ini adalah efek samping dari IPv6-Fallback RFC Happy Eyeballs
Perbarui
Pertimbangan yang bermanfaat, RR DNS hanya dapat membantu dengan load balancing, bukan kegagalan aplikasi, jika salah satu node Anda memiliki 503 Anda akan melayani 40-60% jika lalu lintas Anda 503s. Asumsi dibuat bahwa semua IP yang terdaftar adalah titik akhir kerja yang valid jika dapat dijangkau