วิธีโหลดบาลานซ์ SQL Server 2008 สำหรับแอปพลิเคชัน ASP.NET ที่มีการใช้งานสูง


12

ลองนึกภาพว่าคุณมีเว็บแอปพลิเคชั่นที่ประสบความสำเร็จที่ใช้ ASP.NET และ IIS 7 มันสร้างการโทรจำนวนมากไปยังฐานข้อมูล SQL Server 2008 และคาดว่าจะพร้อมให้บริการแก่สาธารณะด้วยเวลาการทำงาน 99.9% (หยุดทำงาน 8 ชั่วโมง 45 นาทีต่อ ปี).

เป้าหมายของเราคือ:

  • ติดตั้ง Windows Updates บนเซิร์ฟเวอร์โดยไม่ทำให้ลูกค้าหยุดทำงาน
  • ป้องกันฮาร์ดแวร์ล่มบนเซิร์ฟเวอร์ไม่ให้แอปพลิเคชัน ASP.NET ช้าลงเนื่องจากการหมดเวลา

ซึ่งแตกต่างจาก load-balancing แอปพลิเคชัน ASP.NET, load-balancing SQL ดูเหมือนจะยากมากขึ้น อะไรคือแนวทางปฏิบัติที่ดีที่สุดของคุณในการตั้งค่าคลัสเตอร์ SQL Server 2008 R2 แบบโหลดบาลานซ์อย่างง่ายสำหรับ Micro-ISV ที่ใช้สแต็ก Microsoft


ความคิดเห็น: สิ่งที่เราทำคือเขียนแอพพลิเคชั่น ASP.NET ที่สามารถทำงานในโหมด "ออฟไลน์" โดยไม่ต้องเชื่อมต่อกับฐานข้อมูลเมื่อการเชื่อมต่อหมดเวลา มันลดระดับลงเป็นบริการ "พื้นฐาน" แทนที่จะเป็นแอพที่มีคุณสมบัติครบถ้วน ฉันได้อ่านเกี่ยวกับแนวทางของ Netflix Chaos Monkey ซึ่งเป็นแรงบันดาลใจ: readwriteweb.com/cloud/2010/12/…

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

@Jay: เช่นเดียวกับ Micro-ISV จำนวนมากเรามีเซิร์ฟเวอร์เฉพาะสองเครื่องซึ่งจะถูกเปลี่ยนเป็นโฮสติ้ง Rackspace Cloud เราสามารถจัดหา SQL Server เฉพาะสองกล่องหากเราต้องการ แต่ฉันสงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่

ย้ายฐานข้อมูลของคุณไปยัง SQL Azure จากนั้นคุณจะพ้นจากฝันร้ายของความล้มเหลวของเซิร์ฟเวอร์การจัดหาและการปรับปรุง ข้อมูลของคุณมีการทำซ้ำสองครั้งนอกเหนือจากสำเนาการทำงานของคุณและยังมีการจัดการด้านการปรับสมดุลภาระให้คุณด้วยค่าใช้จ่ายจริงเพียงเล็กน้อยในการติดตั้ง / จัดการ SQL Server เช่นฮาร์ดแวร์สิทธิ์ใช้งานซอฟต์แวร์เวลาสนับสนุนเซิร์ฟเวอร์ ฯลฯ เป็นต้น .
Brett Rigby

คำตอบ:


4

หากมีความพร้อมใช้งานสูงคุณจำเป็นต้องใช้ Windows / SQL Server Clustering หรือ SQL Server Database Mirroring การทำคลัสเตอร์ต้องใช้การวางแผนและการทำความคุ้นเคยเป็นอย่างมากหากคุณไม่เคยทำมาก่อน แต่จะมีความโปร่งใสในแอปพลิเคชัน

การปรับสมดุลการโหลดนั้นเกิดขึ้นได้กับ SQL Server แต่ไม่เหมาะกับคนใจเสาะ เป็นโซลูชันที่ใช้ Windows Network Load Balancing (NLB) หน้า SQL Server SQL Server เองใน NLB นั้นง่ายต่อการจัดการถ้าเป็นแบบอ่านอย่างเดียว แต่สามารถอ่าน - เขียนได้ถ้าคุณใช้การจำลองแบบของทรานแซคชันกับสมาชิกที่อัพเดตได้ การจำลองแบบประเภทนี้มีการทำเครื่องหมายสำหรับการคัดค้านในรุ่นอนาคต

ความเป็นไปได้สุดท้ายคือฐานข้อมูลที่ใช้ร่วมกันที่ปรับขนาดได้ แต่เป็นแบบอ่านอย่างเดียว

อ่านเพิ่มเติม:

ดูหนังสือ Apress ของ Allan Hirt บน SQL Server 2005 High Availability และ Pro SQL Server 2005/2008 Replication จาก Apress

ฐานข้อมูลที่แชร์ที่ปรับขนาดได้: http://technet.microsoft.com/en-us/library/ms345392.aspx


2

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

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


0

ตกลงไปเลย ทำไม่ได้ ไม่ได้โดยไม่มีการเปลี่ยนแปลงแอป

  • ติดตั้งอัปเดต - ใช้การทำคลัสเตอร์หรือทำมิเรอร์เพื่อให้แน่ใจว่าคุณมีฐานข้อมูลสองตัวที่ทำงานหรืออาจล้มเหลวไปยังคอมพิวเตอร์เครื่องอื่นได้เร็วขึ้น การสะท้อนที่ต้องการอย่างยิ่ง
  • เขียนแอปพลิเคชันใหม่เพื่อจัดการ (เช่นการเชื่อมต่อที่ล้มเหลวจำเป็นต้องเชื่อมต่อใหม่อย่างโปร่งใสดังนั้นจึงเชื่อมต่อกับสำเนา)

ตระหนักว่าคุณยังคงต้องใช้แอปเพื่อการบำรุงรักษาเมื่อคุณปรับใช้สำเนาใหม่ / ทำการเปลี่ยนแปลง db schema


0

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


-1

ฉันจะให้คำตอบจูราสสิคแก่คุณ หากเป้าหมายของคุณรวมถึง "ติดตั้งการอัปเดต Windows" คุณจะช่วยเหลือไม่ได้

ฉันมีเคราสีเทาและสามารถจดจำเวลาที่แอปพลิเคชันสามารถทำงานได้ 10 ปีโดยไม่ต้องทนทุกข์ทรมานกับ "การอัปเดตระบบปฏิบัติการ" อายุการใช้งานที่มีประโยชน์ของแอพวัดได้ในหลายทศวรรษไม่ใช่ปี

ดังนั้นคำแนะนำของฉันคือ: สร้างแอปพลิเคชั่นฐานข้อมูล + แอปพลิเคชั่น SQL Server ของคุณและทำการแยกเซิร์ฟเวอร์ฐานข้อมูลออกจากการอัปเดต MICROSOFT หากยังไม่พังอย่าแก้ไข

ใช้ดิสก์ RAID แบบถอดเปลี่ยนได้

เตรียมเซิร์ฟเวอร์ฐานข้อมูลภาพสะท้อน (ตามข้อเสนอแนะของ TomTom) ในกรณีที่ฮาร์ดแวร์ของคุณออกมา


3
ทิมก็เหมือนพูดว่าทำไมถึงใช้ฐานข้อมูลเมื่อคุณสามารถเก็บผลลัพธ์ไว้ในไฟล์ Excel ได้ มีช่องโหว่มากมายในระบบปฏิบัติการและไม่ได้ติดตั้งการอัพเดท / รักษากฎการป้องกันไวรัส / ไฟร์วอลล์เป็นประจำเป็นคำแนะนำที่ไม่ดี ไม่แนะนำในทุกระดับ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.