Apakah mungkin menggunakan beberapa penyeimbang beban untuk mengalihkan lalu lintas ke server aplikasi saya?

9

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)?

pengguna3790827
sumber
Terima kasih atas tanggapan Anda. Jadi pada dasarnya, jika saya ingin menggunakan beberapa penyeimbang beban untuk menangani lalu lintas saya, saya hanya perlu menyiapkan CNAME yang berbeda untuk masing-masingnya? Secara khusus, jika saya memerlukan 10 penyeimbang beban untuk menangani lalu lintas ke situs saya, itulah satu-satunya cara untuk melakukannya?
user3790827
1
Saya sarankan membiarkan pertanyaan terbuka setidaknya untuk sehari sebelum menutupnya. Bahkan itu biasanya sedang terburu-buru. Hanya karena Anda telah menerima jawaban tidak berarti itu hanya satu-satunya (atau yang terbaik), dan menandai tanya jawab Anda biasanya berarti kurang mendapat perhatian.
Andrew B
1
@ Anatoly Saya belum membuat keputusan. Saya telah meninjau solusi yang disajikan di sini dan juga berbicara dengan beberapa teman saya yang merekomendasikan saya solusi lain. Saya pikir untuk kasus penggunaan saya solusi terbaik sejauh ini adalah menggunakan server VPS dari penyedia murah seperti DO atau Vultr yang tidak menawarkan IP Virtual dan menggunakan metode yang digunakan oleh Algolia dengan penyeimbangan beban klien. Saya membutuhkan HA dan skalabilitas untuk API hanya karena itu tidak akan ada masalah besar jika saya membuat subdomain yang berbeda untuk setiap penyeimbang beban. Pengguna akhir widget ini tidak akan pernah melihatnya.
user3790827
@ user3790827 terdengar seperti sebuah rencana. Meskipun pada jenis persyaratan memiliki HA dan Failover ada terlalu banyak pola di sekitar, semua orang menyentuh masalah yang sama tetapi tidak ada yang memiliki SLA 99,9 (8 jam downtime setahun) atau lebih tinggi. Solusi HA biasanya mahal dan pertukaran bisnis antara ketersediaan dan biaya. Klien biasanya menerima 99,9 dan menyadari potensi downtime atau kerangka waktu yang dijadwalkan, bahkan 100% uptime tidak menjamin Anda nol bug dengan pengembangan / penyebaran / keamanan atau kesalahan manusia.
Anatoly
Saya menyelidiki bahwa Google Chrome memaksa pembatalan dan permintaan DNS jika terjadi batas waktu 3 detik. Tidak yakin dengan peramban lain.
Anatoly

Jawaban:

12

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

pemalsu
sumber
Ketika Anda mengatakan "tentu saja infrastruktur Anda harus mendukung ini", maksud Anda, saya memerlukan mesin atau VM tambahan yang akan mengirim permintaan ke penyeimbang beban?
user3790827
2
@ user3790827 Infrastruktur dalam konteks ini adalah peralatan jaringan, bukan server. '
Jenny D
1
Saya berencana menggunakan penyedia cloud karena itu saya tidak memiliki kendali langsung atas infrastruktur fisik. Untuk apa saya meminta penyedia layanan vps saya?
user3790827
1
Hanya ada rekomendasi abstrak karena tergantung pada banyak detail. Kami bahkan tidak tahu apakah masuk akal untuk memiliki IP multi-host di sini - mungkin lalu lintasnya hanya beberapa ratus Mbit / s. Jika Anda memerlukan ini, saya akan mengevaluasi perangkat lunak yang tepat, memeriksa persyaratan dan mencari tahu penyedia mana yang mendukungnya. Apakah DNS RR berfungsi? Tentu. Apakah saya akan menggunakannya? Tergantung pada ketersediaan seperti apa yang diinginkan oleh pemilik bisnis tempat saya bekerja!
faker
@faker Maaf, saya kira ini salah saya karena saya tidak memberikan detail yang cukup. Saya ingin membuat skrip javascript yang akan dimasukkan ke situs web orang lain dan akan mengumpulkan data lalu lintas (pikirkan Google Analytics), juga akan mengakses server untuk menampilkan statistik untuk setiap halaman yang dimuat. Pada dasarnya akan ada file javascript yang akan dimuat untuk setiap situs web yang digunakan.
user3790827
6

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:

  • lambatnya mekanisme caching dns
  • algoritma load balancing terbatas (biasanya hanya round-robin)
  • outsourcing keputusan penyeimbangan muatan ke klien (melalui caching catatan dns)
  • Menguras lambat antrian layanan ketika server (mis. Penyeimbang beban) dikeluarkan dari rotasi (berdasarkan catatan TTL dns yang ditangani oleh ISP dan klien )
  • Kegagalan lambat pada kegagalan penyeimbang beban

Menggunakan protokol ip virtual untuk HA seseorang mungkin memiliki pilihan untuk dicapai misalnya:

  • Pilihan algoritma load balancing di antara load balancers
  • Keputusan penyeimbangan beban yang dipusatkan oleh server (menarik misalnya untuk tindakan dan rute berbasis kesehatan layanan)
  • Aliran layanan yang lebih cepat ketika penyeimbang beban dikeluarkan dari rotasi.
  • Kegagalan instan pada kegagalan penyeimbang beban

Hanya Anda yang tahu strategi dan protokol mana yang paling sesuai dengan skenario Anda.

ErikE
sumber
1
Saya juga menambahkan bahwa beberapa penyeimbang beban mendukung pembentukan sesi BGP dengan router terdekat, yang memungkinkan Anda mengatur solusi Anycast . Jika penyeimbang beban turun atau menghentikan iklan untuk VIP (gagal pemeriksaan kesehatan), kandidat rute terbaik berikutnya menang. Kalimat terakhir dari jawaban ini sangat penting: Anda benar-benar perlu berbicara dengan admin jaringan perusahaan Anda.
Andrew B
Berikut adalah deskripsi yang bagus tentang apa yang Anda gambarkan dalam paragraf pertama cisco.com/c/en/us/support/docs/application-networking-services/…
Martin Podval
2

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:

  1. Seimbangkan muatan antar kolektor
  2. Tawarkan toleransi kesalahan, memungkinkan kami untuk terus mencerna data jika salah satu kolektor meninggal atau sedang mengalami masalah
  3. Skala secara horizontal dengan pertumbuhan volume log kami

Apa yang mereka coba dan pelajari tentang ELB:

  1. Tidak berfungsi seperti yang diharapkan
  2. Masalah latensi karena peningkatan beban
  3. Fasilitas pemantauan tidak cukup
  4. Terlalu banyak batasan (port terbuka dan nomor protokol)

Mengapa mereka memilih dengan Route53:

  1. "Round robin adalah penyeimbang beban yang cukup mendasar, tetapi ini bekerja dengan baik bagi kita dari sudut pandang efisiensi"
  2. "Kami memanfaatkan pemeriksaan kesehatan failover Route 53."
  3. "Jika ada masalah dengan seorang pengumpul, Route 53 secara otomatis mengeluarkannya dari layanan; pelanggan kami tidak akan melihat dampak apa pun."
  4. Tidak Perlu Pemanasan Sebelum dengan Rute 53

Rute 53 ternyata menjadi cara terbaik bagi Loggly untuk mengambil keuntungan dari kolektor berkinerja tinggi kami karena volume log kami yang sangat besar, variasi yang tidak terduga, dan pertumbuhan yang konstan dalam bisnis kami. Ini selaras dengan tujuan inti kolektor: Untuk mengumpulkan data pada kecepatan jalur jaringan tanpa kehilangan, dan memungkinkan kami memperoleh manfaat dari elastisitas semua layanan AWS yang kami gunakan di Loggly.

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:

Dengan DNS Failover, Route 53 dapat mendeteksi pemadaman situs web Anda dan mengarahkan pengguna akhir Anda ke lokasi alternatif atau cadangan yang Anda tentukan. Rute 53 DNS Failover bergantung pada pemeriksaan kesehatan - secara teratur membuat permintaan Internet ke titik akhir aplikasi Anda dari berbagai lokasi di seluruh dunia - untuk menentukan apakah setiap titik akhir aplikasi Anda naik atau turun.

Teknik itu juga membuat ELB (tidak diperlukan, hanya untuk catatan) lebih kuat, sekali lagi didasarkan pada RR + Pemeriksaan Kesehatan:

Rute 53 DNS Failover menangani semua skenario kegagalan ini dengan mengintegrasikan dengan ELB di belakang layar. Setelah diaktifkan, Rute 53 secara otomatis mengkonfigurasi dan mengelola pemeriksaan kesehatan untuk masing-masing node ELB.


Sekarang mari kita lihat cara kerjanya di belakang layar. Pertanyaan yang jelas adalah bagaimana menangani caching DNS:

Namun, cache DNS masih bisa menjadi masalah di sini (lihat posting kami sebelumnya di mana masalah "ekor panjang" tercakup) jika TTL tidak dihormati oleh semua lapisan antara klien Anda dan Rute 53. Anda kemudian dapat menerapkan teknik "cache busting": mengirim permintaan ke domain unik

("http://<unique-id>.<your-domain>") 

dan mendefinisikan Sumber Daya wildcard

Record "*.<your-domain>" to match it.

Algolia memperkenalkan "strategi coba klien" yang berfungsi dengan baik jika klien Anda (JS dalam kasus Anda) dapat mengatasinya:

Kami akhirnya menerapkan strategi coba lagi dasar di klien API kami. Setiap klien API dikembangkan untuk dapat mengakses tiga mesin yang berbeda. Tiga catatan DNS berbeda mewakili setiap pengguna: USERIDID-1.algolia.io, USERID-2.algolia.io danUSERID-3.algolia.io. Implementasi pertama kami adalah memilih secara acak salah satu catatan dan kemudian mencoba lagi dengan yang berbeda jika terjadi kegagalan.

Anatoly
sumber
1
Saya pikir pendekatan Algolia adalah yang terbaik untuk anggaran saya dan kasus penggunaan. Biasanya saya akan menggunakan subdomain yang berbeda untuk setiap penyeimbang beban, tetapi karena hanya widget JS yang menggunakannya, pengguna akhir tidak akan pernah melihat perbedaannya.
user3790827
1
Seseorang juga menyarankan untuk menggunakan DNS cloudflare.com/flatures-optimizer dari Cloudflare untuk mengarahkan lalu lintas ke penyeimbang beban siaga setelah terjadi kegagalan dengan penyeimbang beban yang saat ini digunakan. cloudflare.com/dns
user3790827