Saya baru menggunakan load balancing dan saya bertanya-tanya apakah mungkin menggunakan beberapa load balancers untuk mengarahkan lalu lintas ke server aplikasi saya. Saya tidak begitu mengerti bagaimana ini bisa dilakukan. Bukankah seharusnya nama domain cocok dengan satu dengan yang lain dengan alamat IP server tertentu (dalam hal ini IP dari satu penyeimbang beban)? Jika setiap server penyeimbang muatan memiliki IP yang berbeda, bagaimana permintaan dapat diterima oleh penyeimbang beban (atau 10 penyeimbang muatan atau 50 atau 100)?
domain-name-system
nginx
load-balancing
haproxy
high-load
pengguna3790827
sumber
sumber
Jawaban:
Menggunakan round robin DNS tidak terlalu bagus untuk ketersediaan tinggi - jika satu server offline, klien masih akan mencoba untuk terhubung dan menunggu waktu habis.
Ada cara lain untuk mencapai ini.
1) Penyeimbang beban aktif / pasif
Pada dasarnya satu penyeimbang beban menangani semua lalu lintas untuk satu alamat IP.
Jika penyeimbang itu turun, node pasif melompat dan mengambil alih IP.
Perlu diingat bahwa load balancers hanya meneruskan lalu lintas, jadi untuk situs kecil hingga menengah ini bisa berjalan dengan baik.
2) Penghitung beban aktif / aktif
IP lalu lintas yang sama dikonfigurasikan pada keduanya (atau banyak lagi) penyeimbang beban.
Lalu lintas masuk dikirim ke semua penyeimbang beban tetapi algoritma memilih penyeimbang mana yang harus merespons, semua yang lain membuang lalu lintas itu.
Cara sederhana untuk memikirkannya, Anda memiliki dua penyeimbang beban:
Ketika IP permintaan berakhir dengan angka genap kemudian memuat penyeimbang jawaban A, jika tidak, memuat penyeimbang jawaban B.
Tentu saja infrastruktur Anda harus mendukung ini dan ada overhead karena lalu lintas dikirim tetapi dibuang.
Informasi lebih lanjut, misalnya di sini: http://community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Stingray/ta-p/73867
sumber
Ketersediaan Tinggi dengan load balancers biasanya diimplementasikan menggunakan alamat ip virtual protokol (VIP) yang memungkinkan beberapa host (mis. Load balancers) untuk menjawab satu alamat ip umum dalam salah satu dari beberapa cara yang mungkin (variasi aktif / pasif, aktif / aktif) .
Ada sejumlah protokol ini, yang saya lihat paling banyak dengan penyeimbang beban reguler adalah VRRP dan NLB (serta banyak protokol blackbox yang tidak mencolok dalam peralatan). Meluaskan ke router dan firewall kita juga dapat menemukan CARP , HRSP , GLSP misalnya.
Strategi ini memiliki sejumlah manfaat dibandingkan penyeimbangan beban DNS yang merupakan strategi yang lebih sederhana (dan dijaga dalam jawaban lain).
Penyeimbangan beban DNS misalnya, dibebani dengan:
Menggunakan protokol ip virtual untuk HA seseorang mungkin memiliki pilihan untuk dicapai misalnya:
Hanya Anda yang tahu strategi dan protokol mana yang paling sesuai dengan skenario Anda.
sumber
Persyaratan: memiliki solusi praktis yang berfungsi untuk cloud atau semua jenis lingkungan di mana tidak ada akses ke penyeimbang beban perangkat keras, protokol BGP, dan semua hal itu.
Nomor permintaan pendapatan aplikasi tidak diketahui tetapi harus cukup tinggi untuk memenuhi ekspektasi beban yang meningkat tanpa rasa takut.
Mari kita cari aplikasi dengan sifat pemuatan yang serupa, misalnya pencatatan toko dan aplikasi pencarian. Saya menemukan satu .
Apa yang mereka inginkan:
Apa yang mereka coba dan pelajari tentang ELB:
Mengapa mereka memilih dengan Route53:
Contoh khusus itu menunjukkan bahwa dalam beberapa skenario (pengumpul log, layanan iklan, atau sejenisnya) penyeimbang beban berlebihan dan "solusi round robin DNS-cek kesehatan" melakukan tugasnya dengan sangat baik.
Mari kita lihat apa yang dikatakan AWS tentang DNS failover:
Teknik itu juga membuat ELB (tidak diperlukan, hanya untuk catatan) lebih kuat, sekali lagi didasarkan pada RR + Pemeriksaan Kesehatan:
Sekarang mari kita lihat cara kerjanya di belakang layar. Pertanyaan yang jelas adalah bagaimana menangani caching DNS:
dan mendefinisikan Sumber Daya wildcard
Algolia memperkenalkan "strategi coba klien" yang berfungsi dengan baik jika klien Anda (JS dalam kasus Anda) dapat mengatasinya:
sumber