pengembangan-web-mp-pd.com

Menggunakan beberapa A-record untuk domain saya - apakah browser web pernah mencoba lebih dari satu?

Jika saya menambahkan beberapa A-record untuk domain saya, mereka dikembalikan dalam urutan round robin oleh server DNS.

Contoh:

192.0.2.1 A example.com
192.0.2.2 A example.com
192.0.2.3 A example.com

Tetapi bagaimana reaksi browser web jika Host pertama (192.0.2.1) tidak aktif (tidak dapat dijangkau)? Apakah mereka mencoba Host kedua (192.0.2.2) atau apakah mereka mengembalikan pesan kesalahan kepada pengguna? Apakah ada perbedaan antara browser yang paling populer?

Jika saya menerapkan aplikasi saya sendiri, saya bisa menerapkan sehingga yang kedua digunakan jika yang pertama turun, jadi itu mungkin. Dan ini akan sangat membantu untuk membuat situs web yang toleran terhadap kesalahan.

92
Jonas

Ya, sebagian besar peramban dari 5-10 tahun terakhir akan mencoba catatan A lainnya jika salah satu gagal merespons. Ini kadang-kadang disebut "coba lagi browser" atau "coba lagi klien" rupanya. Anda hanya akan menemukan banyak hal tentang hal itu dalam konteks berbagai eksploit browser yang fitur ini memungkinkan terhadap situs yang tidak menggunakannya (lihat DNS rebinding dan DNS pinning , - pinning anti-dns, pinning anti-anti-dns, pinning anti-anti-anti-dns , dan seterusnya). Agak reputasi buruk, tetapi itu membuktikan itu ada.

Hampir setiap browser memang menerima daftar lengkap dari catatan A, dan memang memeriksa yang lain jika yang digunakan gagal. Anda dapat mengharapkan setiap klien menunggu selama 30 detik saat mereka pertama kali mencoba mengakses situs ketika server sedang down, hingga terhubung ke alamat yang berfungsi. Browser kemudian akan men-cache alamat yang berfungsi dan terus menggunakan yang itu untuk permintaan di masa depan kecuali jika itu juga gagal, maka itu harus mencari melalui daftar lagi. Jadi 30 detik menunggu permintaan pertama, setelah itu baik-baik saja.

Tapi itu bukan sesuatu yang Anda ingin gunakan, itu akan memiliki banyak peringatan tentang kompatibilitas browser, kompatibilitas os, kompatibilitas proxy, header kontrol-cache akan memiliki efek aneh pada apakah ia mengingat IP yang turun atau mulai memiliki bahwa 30 detik menunggu pada setiap permintaan, orang yang menulis klien khusus untuk situs Anda akan berakhir menggunakan gethostbyname alih-alih getaddrinfo dan tidak dapat menangani failover, segala macam masalah potensial.

Anda juga tidak dapat mengandalkan beberapa catatan A untuk memungkinkan server "master" dan "slave", karena Anda tidak akan pernah tahu alamat browser mana yang akan dipilih. Mereka semua harus mampu menangani pengunjung jika berjalan, karena siapa pun mungkin mendapatkan lalu lintas jika sudah habis. Peramban mungkin berpikir server ketiga Anda keluar dari daftar adalah yang paling menarik, mungkin terlihat paling dekat, dan akan memilih yang satu meskipun ketiganya masih ada.

Tetapi jika Anda dapat hidup dengan keterbatasan dan memiliki sistem HTTP yang cukup sederhana yang dapat digunakan untuk memprediksi interaksi browser, itu akan berfungsi.

Oh, Anda juga harus berurusan dengan banyak orang yang mengatakan ini tidak ada (karena itu benar 15 tahun yang lalu). Tetapi Anda dapat mencoba telnet-ing ke nama domain dengan beberapa catatan A, beberapa dengan IP mati dan beberapa yang bagus, jika Anda perlu membuktikannya (ya, bahkan telnet tua yang baik sekarang menggunakan getaddrinfo dan menangani banyak catatan A dengan anggun hari ini) - ia akan mencetak daftar IP yang bagus yang dicoba hingga akhirnya berhasil.

86
Joff

Berhati-hatilah bahwa Windows Vista mengimplementasikan bagian bodoh RFC3484 (mis. Backporting dari IPV6 ke IPV4) dan akan lebih suka alamat IP yang berbagi bit awalan paling banyak dengan alamat IP pengguna daripada memilih satu secara acak. Karena sebagian besar pengguna memiliki alamat IP yang dimulai dengan 192.168, itu berarti mana saja dari alamat IP Anda yang membagikan sebagian bit awalan dengan yang akan mendapatkan sebagian besar lalu lintas Vista. Microsoft memperbaiki sedikit kebodohan ini di Windows 7 dan yang lebih baru, jadi ini bukan masalah seperti dulu.

5
Mike Scott

Ini adalah teknik distribusi penyeimbangan beban DNS dasar: DNS Round Robin. Ini tidak ada hubungannya dengan browser, itu tergantung pada implementasi resolver, dan cache lokal/jarak jauh dari alamat DNS. Perubahannya adalah jika server gagal, karena caching di lapisan DNS situs web Anda mungkin tidak dapat diakses.

Lihat di sini untuk penjelasan dasar tentang Round Robin DNS di WikiPedia.

3
keatch

OS menentukan IP apa yang digunakan, bukan browser. Windows akan memutari daftar yang dikembalikan (dalam daftar yang dikembalikan dari DNS), meskipun akan terus menggunakan alamat yang sama sampai DNS memerah atau habis waktu. * Implementasi ix sebagian bergantung pada implementasi stack tcp yang dibundel tetapi biasanya mengikuti metode round robin juga.

0
iivel