ข้อเสียของเซสชันเหนียวกับโหลดบาลานเซอร์คืออะไร?


13

เรามีเว็บฟาร์มของเครื่อง IIS7 ที่ใช้งานได้ดี ด้านหน้าของพวกเขาคือโหลดบาลานซ์ฮาร์ดแวร์F5 Big-IPทำงานได้ดีเช่นกัน :)

ข้อความแสดงแทน
(ที่มา: www.f5.com )

ขณะนี้เรากำลังใช้ASP.NET State Serviceเพื่อจัดการสถานะOutProcของเรา สิ่งนี้จำเป็นเมื่อคุณมีเว็บฟาร์มเพื่อรักษาข้อมูลเซสชันใด ๆ

ฉันสงสัยว่าถ้าเราสามารถมีช่วงเวลาเหนียวแน่นบน F5 Big-IP และเปลี่ยนจาก OutProc กลับเป็น InProc ได้หรือไม่ ถ้าเป็นเช่นนั้นข้อเสียของเรื่องนี้คืออะไร? ฉันรู้ข้อเสียของ InProc vs OutProc ดังนั้นไม่ต้องกังวลกับการอธิบายสิ่งนั้น ฉันสนใจมากขึ้นในข้อดี / ข้อเสียของการประชุมเหนียวที่มีออกมา F5 Big-IP

ใครบ้างที่สามารถปลดปล่อยแสงและ / หรือประสบการณ์ได้บ้าง?

คำตอบ:


15

มีข้อเสียหลักสองประการ:

  1. การโหลดของคุณไม่ได้รับการกระจายอย่างเท่าเทียมกัน เซสชั่นเหนียวจะติดดังนั้นชื่อ ในขณะที่คำขอเริ่มต้นจะได้รับการแจกจ่ายอย่างเท่าเทียมกันคุณอาจพบว่ามีผู้ใช้จำนวนมากใช้เวลามากกว่าคนอื่น หากสิ่งเหล่านี้ทั้งหมดถูกตั้งค่าเริ่มต้นเป็นเซิร์ฟเวอร์เดียวเซิร์ฟเวอร์นั้นจะมีภาระมากขึ้น โดยทั่วไปสิ่งนี้จะไม่ส่งผลกระทบอย่างใหญ่หลวงและสามารถบรรเทาได้ด้วยการมีเซิร์ฟเวอร์จำนวนมากในคลัสเตอร์ของคุณ

  2. ผู้รับมอบฉันทะรวมกลุ่มผู้ใช้ไว้ใน IP เดียวซึ่งทั้งหมดจะถูกส่งไปยังเซิร์ฟเวอร์เดียว แม้ว่าโดยทั่วไปแล้วจะไม่เป็นอันตราย แต่อย่างใดนอกจากการเพิ่มโหลดเซิร์ฟเวอร์แต่ละครั้งพร็อกซียังสามารถทำงานในคลัสเตอร์ได้อีกด้วย คำขอใน F5 ของคุณจากระบบดังกล่าวจะไม่ถูกส่งกลับไปยังเซิร์ฟเวอร์เดียวกันถ้าคำขอนั้นมาจากพร็อกซีเซิร์ฟเวอร์อื่นในพร็อกซีคลัสเตอร์

AOL มีอยู่ช่วงหนึ่งที่ใช้พร็อกซีคลัสเตอร์และเมาอย่างหนักกับโหลดบาลานเซอร์และเซสชันที่ติดหนึบ โหลดบาลานเซอร์ส่วนใหญ่ในปัจจุบันจะเสนอเซสชันที่ยึดตามช่วงของ C-Class net หรือในกรณีของ F5 เซสชันที่ยึดตามคุกกี้ซึ่งเก็บโหนดปลายทางในคุกกี้ร้องขอเว็บ

ในขณะที่เซสชันที่ใช้คุกกี้ทำงานได้ฉันมีปัญหากับพวกเขาและโดยทั่วไปจะเลือกเซสชันที่อิงกับ IP ใหญ่: ฉันส่วนใหญ่ทำงานในแอพภายใน - ระยะทาง DMZ อาจแตกต่างกันไป

ทุกสิ่งที่กล่าวมาเราได้ประสบความสำเร็จอย่างยอดเยี่ยมกับเว็บไซต์ที่ใช้งาน F5 กับเซสชันที่ไม่น่าไว้วางใจและเซสชัน In-Proc

คุณอาจต้องการดูหนึ่งในหน่วยความจำแคชแบบกระจายในระบบเช่นMemcached หรือ Velocityเพื่อเป็นทางเลือกให้กับเซสชันที่ถูกเก็บไว้ใน SQL หรือบริการหน่วยความจำ proc คุณเข้าใกล้ความเร็วของหน่วยความจำใน proc ด้วยความสามารถในการรันผ่านเซิร์ฟเวอร์หลาย ๆ ตัว


นอกจาก CPU แล้วยังมีวิธีตรวจสอบการเชื่อมต่อปัจจุบันและ / หรือแบนด์วิดธ์บนเครื่อง windows 2008 ด้วย IIS7 ... เพื่อดูว่าเซิร์ฟเวอร์ได้รับการเข้าสู่ระบบ / ไม่ว่างหรือไม่ โดยพื้นฐานแล้วคุณใช้เมตริกใดเพื่อให้แน่ใจว่าเซิร์ฟเวอร์ไม่เสียหาย
Pure.Krome

เราใช้การผสมผสานของ IP ที่มีความเหนียวและเซสชันคุกกี้ที่ค่อนข้างเหนียวในช่วงเวลาหนึ่งและพบว่ามีการแจกแจงที่ไม่สม่ำเสมอ แต่ก็ไม่น่ากลัวนัก คลัสเตอร์พร็อกซี AOL เป็นฝันร้ายสำหรับการจัดกลุ่ม IP และเราต้องฮาร์ดโค้ดข้อยกเว้น
ericslaw

Native Perf Counters จะแสดงการเชื่อมต่อ HTTP ที่ใช้งานอยู่
Christopher_G_Lewis

@Christopher_G_Lewis คุณคิดจะอธิบายรายละเอียดเล็กน้อยเกี่ยวกับปัญหาที่เกิดขึ้นกับเซสชันที่ใช้คุกกี้ใน F5 หรือไม่
Eugene Beresovsky

5

ฉันเพิ่งอ่านบทความที่ยอดเยี่ยมใน TechNet เกี่ยวกับ "การจัดเตรียมความยืดหยุ่นสำหรับแอปพลิเคชัน ASP.NET" มันเข้าสู่ข้อดีข้อเสียของแต่ละวิธีแก้ปัญหาที่เป็นไปได้ อ่าน:

TechNet มิถุนายน 2552 - การปรับขนาดสำหรับแอปพลิเคชัน ASP.NET


4

นอกเหนือจากคำตอบที่ยอดเยี่ยมจากคริสโตเฟอร์แล้วเซสชันที่เหนียวก็หมายความว่าคุณได้สูญเสียสิทธิประโยชน์มากมายของเซิร์ฟเวอร์ซ้ำซ้อน - ความสามารถในการบำรุงรักษาอย่างน้อยหนึ่งครั้งและความโปร่งใสในการเผชิญกับความล้มเหลวของระบบ

ฉันพิจารณาเซสชันที่ติดหนึบตัวบ่งชี้ที่แข็งแกร่งของสถาปัตยกรรมแอปพลิเคชันที่ไม่ดีและ / หรือการเขียนโปรแกรมไม่ดี "หลีกเลี่ยงค่าใช้จ่ายทั้งหมด" เป็นคำขวัญของฉัน


ความคิดที่ยอดเยี่ยมในการบำรุงรักษา เราโยน DRAIN บนเซิร์ฟเวอร์นานก่อนที่จะนำออกจากคลัสเตอร์ DRAIN หมายถึงเซสชันปัจจุบันถูกประมวลผล แต่ไม่มีเซสชันใหม่เริ่มต้นบนเซิร์ฟเวอร์นั้น
Christopher_G_Lewis

โชคดีที่ไม่มีใครต้องทำการบำรุงรักษาในระยะเวลาอันสั้นและเซิร์ฟเวอร์ก็ไม่ตายอย่างกะทันหัน (ทำให้เซสชันทั้งหมดที่ติดอยู่กับเซิร์ฟเวอร์นั้นไร้ประโยชน์โดยฉับพลัน - ฉันพนันได้เลยว่าลูกค้าชอบ)
womble

คุณสามารถ DRAIN จากเซิร์ฟเวอร์โดยไม่ต้องทำการตั้งค่าใด ๆ บน F5 เองได้หรือไม่? โดยพื้นฐานแล้วเราไม่สามารถเข้าถึง F5 (จัดการได้สำหรับเราในสถานการณ์โฮสต์ที่มีการจัดการ) .. แต่เราสามารถเข้าถึงเว็บเซิร์ฟเวอร์ของเราได้อย่างเต็มรูปแบบ .. คุณสามารถ DRAIN ด้วยการวางไฟล์หรือบางสิ่งในเว็บไซต์หรือไม่?
Pure.Krome

F5 ของเรากำหนดเซิร์ฟเวอร์ขึ้น / ลง / ระบายผ่านไฟล์ข้อความในเว็บไซต์ - บริบทของไฟล์คือ "UP / DOWN / DRAIN" ตรวจสอบบันทึก IIS ของคุณเพื่อกำหนดสิ่งที่พวกเขากำลังดู โปรดทราบว่าบางครั้ง F5 กำลังทำเพียง SYN / ACK บนพอร์ต TCP / IP ซึ่งในกรณีนี้คุณจะต้องให้ Hoster เปลี่ยนการกำหนดค่าของ F5
Christopher_G_Lew
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.