OK, ini ditanya beberapa waktu lalu, dan saya terlambat ke pesta. Meski begitu, ada sesuatu untuk ditambahkan di sini.
Jackie, kamu sudah cukup berhasil. Ilustrasi Anda menunjukkan bagaimana penanganan keseimbangan ditangani pada sebagian besar instalasi berukuran kecil dan menengah.
Anda harus membaca pengantar keseimbangan beban oleh Willy Tarreau yang terkait dengan Nakedible. Itu masih valid, dan itu adalah pengantar yang bagus.
Anda perlu mempertimbangkan bagaimana ini sesuai dengan kebutuhan Anda:
- Penyeimbang beban tingkat TCP / IP (Linux Virtual Server et al). Terendah per koneksi overhead, kecepatan tertinggi, tidak dapat "melihat" HTTP.
- Penyeimbang beban tingkat HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR, dan banyak lagi). Overhead yang lebih tinggi, bisa melihat HTTP, bisa gzip HTTP, bisa melakukan SSL, bisa melakukan sticky load balancing sesi.
- Proxy mundur HTTP (Server Lalu Lintas Apache, Varnish, Squid). Dapat menyimpan objek yang bisa di-cache (beberapa halaman web, css, js, gambar) dalam RAM dan meneruskannya ke klien berikutnya tanpa melibatkan server web backend. Dapat sering melakukan beberapa hal yang sama seperti penyeimbang beban HTTP L7.
ada penyeimbang kedua karena saya yakin pada titik tertentu penyeimbang akan membutuhkan bantuan juga.
Ya tentu. Tetapi load balancing sederhana, dan seringkali penyeimbang beban tunggal bisa berjalan cepat . Saya menautkan ke artikel ini, yang mengejutkan di web, hanya sebagai contoh kinerja apa yang bisa disediakan oleh server modern . Jangan gunakan banyak LB sebelum Anda perlu. Ketika Anda perlu pendekatan umum adalah penyeimbang beban tingkat IP di bagian paling depan (atau DNS Round Robin), pergi ke penyeimbang beban tingkat HTTP, pergi ke proxy & server webapp.
membantu tentang apa "penyeimbang" seharusnya dan praktik terbaik tentang cara mengaturnya.
Bintik masalah adalah penanganan keadaan sesi, dan sampai batas tertentu perilaku keadaan gagal. Menyiapkan penyeimbang beban sendiri relatif mudah.
Jika Anda hanya menggunakan server webapp 2-4 backend, hashing statis berdasarkan alamat IP asal dapat dilakukan. Ini menghindari perlunya status sesi bersama di antara server webapp. Setiap node webapp melihat 1 / N dari lalu lintas keseluruhan, dan pemetaan pelanggan ke server statis dalam operasi normal. Ini tidak cocok untuk instalasi yang lebih besar.
The dua algoritma load balancing terbaik, dalam arti bahwa mereka memiliki perilaku jinak di bawah beban tinggi dan distribusi beban bahkan, adalah round robin dan benar load balancing acak. Kedua hal ini mengharuskan aplikasi web Anda memiliki status sesi global yang tersedia di node webapp. Bagaimana ini dilakukan tergantung pada tumpukan teknologi webapp; tetapi umumnya ada solusi standar yang tersedia untuk ini.
Jika tidak ada hashing statis, atau keadaan sesi bersama yang cocok untuk Anda, maka pilihannya umumnya penyeimbangan beban ' sesi lengket ' dan status sesi per-server. Dalam kebanyakan kasus ini berfungsi dengan baik, dan ini merupakan pilihan yang sepenuhnya layak.
balancer / s akan melihat berapa banyak koneksi pada setiap instance apache (melalui beberapa daftar konfigurasi IP internal atau IP abadi) dan mendistribusikan koneksi secara merata
Ya, beberapa situs menggunakan ini. Ada banyak nama untuk berbagai algoritma load balancing yang ada. Jika Anda dapat memilih round robin atau random (atau round robin, weighted random) maka saya akan merekomendasikan Anda melakukannya, untuk alasan yang diberikan di atas.
Hal terakhir: Jangan lupa bahwa banyak vendor (F5, Cisco dan lainnya pada high-end, Coyote Point dan Kemp Technologies dengan harga yang lebih masuk akal) menawarkan peralatan penyeimbang beban yang matang .