Apa downside ke sesi lengket dengan penyeimbang beban?
13
Kami memiliki web farm mesin IIS7 yang bekerja sangat baik. Di depan mereka adalah penyeimbang beban perangkat keras F5 Big-IP , juga berfungsi dengan baik :)
Saat ini kami menggunakan ASP.NET State Serviceuntuk menangani status OutProc kami . Ini diperlukan ketika Anda memiliki web farm untuk memelihara semua jenis informasi sesi.
Saya bertanya-tanya apakah kita bisa melakukan sesi lengket pada F5 Big-IP dan karena itu berubah dari OutProc kembali ke InProc? Jika demikian, apa downside dari ini? Saya tahu sisi buruk InProc vs OutProc, jadi jangan khawatir menjelaskannya. Saya lebih tertarik pada pro / kontra dari sesi sticky tanpa F5 Big-IP .
Adakah yang bisa menjelaskan dan / atau mengalaminya?
Beban Anda tidak terdistribusi secara merata. Sesi lengket akan tetap, karena itu namanya. Meskipun permintaan awal akan didistribusikan secara merata, Anda mungkin berakhir dengan sejumlah besar pengguna yang menghabiskan lebih banyak waktu daripada yang lain. Jika semua ini awalnya diatur ke server tunggal, server itu akan memiliki lebih banyak beban. Biasanya, ini tidak benar-benar akan berdampak besar, dan dapat dikurangi dengan memiliki lebih banyak server di cluster Anda.
Proksi pengguna konglomerat menjadi IP tunggal, yang semuanya akan dikirim ke server tunggal. Sementara itu biasanya tidak ada salahnya, lagi selain meningkatkan beban server individu, proksi juga dapat beroperasi dalam sebuah cluster. Permintaan ke F5 Anda dari sistem seperti itu tidak harus dikirim kembali ke server yang sama jika permintaan tersebut keluar dari server proxy yang berbeda di cluster proxy mereka.
AOL pada satu titik menggunakan cluster proxy, dan benar-benar kacau dengan load balancers dan sesi lengket. Sebagian besar penyeimbang beban sekarang akan menawarkan sesi lengket berdasarkan dari rentang bersih C-Class, atau dengan kasus F5, sesi lengket berbasis cookie yang menyimpan simpul akhir dalam cookie permintaan web.
Sementara sesi berbasis cookie harus berfungsi, saya punya beberapa masalah dengan mereka, dan biasanya memilih sesi berbasis IP. NAMUN BESAR: Saya kebanyakan bekerja pada aplikasi internal - jarak tempuh DMZ mungkin bervariasi.
Semua yang dinyatakan, kami telah memiliki beberapa kesuksesan besar dengan situs menjalankan be5 F5 dengan sesi sticky dan sesi In-Proc.
Anda juga mungkin ingin melihat salah satu sistem cache terdistribusi dalam memori seperti Memcached atau Velocity untuk alternatif sesi yang disimpan dalam SQL atau layanan kehabisan memori proc. Anda mendekati kecepatan memori in-proc dengan kemampuan menjalankannya di beberapa server.
Selain CPU, apakah ada cara untuk memeriksa koneksi saat ini dan / atau bandwidth secara native pada mesin windows 2008 dengan IIS7 ... untuk melihat apakah server terlalu sibuk / sibuk? Pada dasarnya, metrik apa yang Anda gunakan untuk memastikan server tidak terkutuk?
Pure.Krome
Kami menggunakan campuran sesi IP sticky dan cookie sticky beberapa waktu lalu dan menemukan distribusi tidak merata, tetapi tidak begitu mengerikan. Cluster proksi AOL adalah mimpi buruk untuk pengelompokan IP dan kami harus pengecualian hardcode.
ericslaw
Penghitung Perf Asli akan menampilkan koneksi HTTP aktif.
Christopher_G_Lewis
@Christopher_G_Lewis Bisakah Anda sedikit menguraikan masalah yang Anda alami dengan sesi berbasis cookie pada F5?
Eugene Beresovsky
5
Baru-baru ini saya membaca artikel hebat di TechNet tentang "Menyediakan Skalabilitas untuk Aplikasi ASP.NET". Itu masuk ke pro dan kontra dari setiap solusi yang mungkin. Bacalah:
Selain jawaban yang sangat baik dari Christopher, sesi sticky berarti Anda telah kehilangan beberapa manfaat besar dari server yang berlebihan - kemampuan untuk mengambil satu atau lebih down untuk pemeliharaan, dan transparansi dalam menghadapi kegagalan sistem.
Saya menganggap sesi sticky indikator kuat arsitektur aplikasi yang buruk dan / atau pemrograman yang buruk. "Hindari di semua biaya" adalah moto saya.
Pemikiran yang bagus tentang pemeliharaan. Kami membuang DRAIN di server jauh sebelum mengeluarkannya dari cluster. DRAIN berarti sesi saat ini sedang diproses, tetapi tidak ada sesi baru dimulai pada server itu.
Christopher_G_Lewis
Untungnya tidak ada yang harus melakukan pemeliharaan dalam waktu singkat, server juga tidak pernah mati secara tiba-tiba (menyebabkan semua sesi terjebak ke server yang tiba-tiba menjadi tidak berguna - saya yakin pelanggan menyukainya).
womble
Bisakah Anda DRAIN dari server tanpa harus melakukan konfigurasi pada F5 itu sendiri? Pada dasarnya, kami tidak memiliki akses ke F5 (dikelola untuk kami, dalam skenario hosting yang dikelola) .. tapi kami memiliki akses penuh ke server web kami .. jadi bisakah Anda MENGGAMBAR dengan menjatuhkan file atau sesuatu di situs web?
Pure.Krome
F5 kami menentukan server atas / server turun / tiriskan melalui file teks di situs web - konteks file adalah "ATAS / BAWAH / DRAIN". Periksa log IIS Anda untuk menentukan apa yang mereka lihat. Perhatikan bahwa kadang-kadang F5 hanya melakukan SYN / ACK pada port TCP / IP, dalam hal ini Anda harus meminta hoster Anda mengubah konfigurasi F5.
Baru-baru ini saya membaca artikel hebat di TechNet tentang "Menyediakan Skalabilitas untuk Aplikasi ASP.NET". Itu masuk ke pro dan kontra dari setiap solusi yang mungkin. Bacalah:
TechNet Juni 2009 - Menyediakan Skalabilitas untuk Aplikasi ASP.NET
sumber
Selain jawaban yang sangat baik dari Christopher, sesi sticky berarti Anda telah kehilangan beberapa manfaat besar dari server yang berlebihan - kemampuan untuk mengambil satu atau lebih down untuk pemeliharaan, dan transparansi dalam menghadapi kegagalan sistem.
Saya menganggap sesi sticky indikator kuat arsitektur aplikasi yang buruk dan / atau pemrograman yang buruk. "Hindari di semua biaya" adalah moto saya.
sumber