उच्च-उपयोग ASP.NET अनुप्रयोगों के लिए SQL Server 2008 को लोड-बैलेंस कैसे करें?


12

कल्पना करें कि आपके पास एक सफल वेब एप्लिकेशन है जो ASP.NET और IIS 7 का उपयोग करता है। यह SQL Server 2008 डेटाबेस में कई कॉल उत्पन्न करता है, और 99.9% अपटाइम (8 घंटे, 45 मिनट प्रति समय) के साथ जनता के लिए उपलब्ध होने की उम्मीद है साल)।

हमारे लक्ष्य हैं:

  • हमारे ग्राहकों को डाउनटाइम दिए बिना सर्वर पर विंडोज अपडेट स्थापित करें
  • मध्यांतर के कारण ASP.NET एप्लिकेशन को धीमा करने से सर्वर पर हार्डवेयर क्रैश को रोकें

ASP.NET अनुप्रयोग लोड-संतुलन के विपरीत, लोड-संतुलन SQL अधिक कठिन प्रतीत होता है। Microsoft-स्टैक का उपयोग करने वाले माइक्रो-ISV के लिए एक सरल लोड-संतुलित SQL Server 2008 R2 क्लस्टर की स्थापना के लिए आपकी सर्वोत्तम प्रथाएं क्या हैं?


कुछ टिप्पणियां: हमने जो किया है वह ASP.NET अनुप्रयोग लिखा है जो डेटाबेस से कनेक्ट किए बिना "ऑफ़लाइन" मोड में काम कर सकता है जब कनेक्शन समय से बाहर हो जाता है। यह पूरी तरह से चित्रित ऐप के बजाय एक "मूल" सेवा को नीचा दिखाता है। मैंने नेटफ्लिक्स कैओस मंकी एप्रोच के बारे में भी पढ़ा है जो प्रेरणादायक है: readwriteweb.com/cloud/2010/12/…

आपका क्या हाल है? क्या आप सीमित सर्वर के साथ होस्ट किए गए वातावरण में हैं या आप अपने सामान को नकदी तक पहुंच और अपने सर्वर नंबर का विस्तार करने के लिए अपमान के साथ होस्ट कर रहे हैं?

@ जय: कई माइक्रो-आईएसवी की तरह, हमारे पास दो समर्पित सर्वर हैं जिन्हें रैकस्पेस क्लाउड होस्टिंग में परिवर्तित किया जा रहा है। अगर हम की जरूरत है हम दो समर्पित SQL सर्वर बक्से बर्दाश्त कर सकते हैं, लेकिन मैं सोच रहा हूँ अगर वहाँ एक बेहतर तरीका है।

अपने डेटाबेस को SQL Azure में ले जाएँ। फिर आप सर्वर विफलताओं, खरीद और अपडेट के बुरे सपने से मुक्त हो जाते हैं। योर वर्किंग कॉपी के अलावा आपके डेटा को दो बार डुप्लिकेट किया गया है और एसक्यूएल सर्वर को लागू करने / प्रबंधित करने की वास्तविक लागत के कुछ अंश पर आपके लिए लोड बैलेंसिंग पहलू भी संभाला जाता है, जैसे हार्डवेयर, सॉफ्टवेयर लाइसेंसिंग, सर्वर-सपोर्ट टाइम, आदि आदि। ।
ब्रेट रिग्बी

जवाबों:


4

यदि आपको इसकी उच्च उपलब्धता की आवश्यकता है, तो Windows / SQL सर्वर क्लस्टरिंग या SQL सर्वर डेटाबेस मिररिंग प्रस्ताव समाधान। यदि आपने पहले कभी ऐसा नहीं किया है, तो क्लस्टरिंग को बहुत सारी योजना और परिचित की आवश्यकता होती है, लेकिन यह आवेदन के लिए पारदर्शी होगा।

SQL सर्वर के साथ लोड संतुलन संभव है, लेकिन यह बेहोश दिल के लिए नहीं है। यह एक समाधान है जो SQL सर्वर के सामने विंडोज नेटवर्क लोड बैलेंसिंग (NLB) का उपयोग करता है। एनएलबी में एसक्यूएल सर्वर स्वयं को प्रबंधित करने में आसान होते हैं यदि वे केवल-पढ़े जाते हैं, लेकिन यदि आप अपडेट करने योग्य ग्राहकों के साथ लेनदेन प्रतिकृति का उपयोग करते हैं, तो उन्हें पढ़ा-लिखा जा सकता है। इस प्रकार की प्रतिकृति को भविष्य के संस्करण में अपग्रेड के लिए चिह्नित किया गया है।

एक अंतिम संभावना स्केलेबल साझा डेटाबेस है, लेकिन वे निश्चित रूप से केवल-पढ़ने के लिए हैं।

अधिक पढ़ने:

SQL सर्वर 2005 उच्च उपलब्धता, और प्रो SQL सर्वर 2005/2008 Apress से प्रतिकृति पर एलन हर्ट्स एप्रेस पुस्तकों पर एक नज़र है।

स्केलेबल साझा डेटाबेस: http://technet.microsoft.com/en-us/library/ms345392.aspx


2

रिलेशनल डेटाबेस सिस्टम शायद ही कभी संतुलित किया जाता है जिस तरह से वेब सर्वर हैं। संतुलन को लोड करने के लिए क्लासिक दृष्टिकोण के साथ समस्या यह है कि आपके सभी डेटाबेस को निरंतर सिंक्रनाइज़ेशन में रहने की आवश्यकता है। यदि दो सर्वरों में किसी भी समय समान स्थिति नहीं है, तो संबंधपरक मॉडल बेकार है।

आपके प्रश्न से, ऐसा नहीं लगता है कि आप लोड संतुलन को पूरा करने की कोशिश कर रहे हैं, जो मुख्य रूप से एक प्रदर्शन उपाय है, यह सुनिश्चित करने के लिए कि केवल प्रत्येक उपयोगकर्ता प्रत्येक सर्वर को मार रहा है, क्योंकि वह सर्वर को संभाल सकता है। ऐसा लगता है कि आप एक उच्च उपलब्धता सेटअप चाहते हैं । चूंकि आप कहते हैं कि आप SQL सर्वर का उपयोग कर रहे हैं, इसलिए मैं विफलताओं पर ध्यान दूंगा। इसका अर्थ है कि, यदि प्राथमिक डेटाबेस अनुपलब्ध है, तो क्लाइंट विफल सर्वर तक पहुंचने का प्रयास करेंगे। SQL सर्वर प्राथमिक आवृत्ति और प्रत्येक विफलता को सिंक में रखते हुए संभालता है और प्राथमिक को ऑफ़लाइन होने से ऑनलाइन वापस आने पर प्राथमिक आवृत्ति को पुन: सिंक्रनाइज़ करने के लिए भी पुन: सिंक्रनाइज़ करता है।


0

ठीक है चले हम। नही किया जा सकता। ऐप में बदलाव के बिना नहीं।

  • अपडेट स्थापित करें- यह सुनिश्चित करने के लिए कि आपके पास दो डेटाबेस हैं जो काम करते हैं या तेजी से किसी अन्य कंप्यूटर पर विफल हो सकते हैं, यह सुनिश्चित करने के लिए क्लस्टरिंग या मिररिंग का उपयोग करें। जोरदार पसंद करना।
  • (यानी कनेक्शन विफल होने पर, इसे फिर से कॉपी से कनेक्ट करने के लिए पारदर्शी रूप से पुन: कनेक्ट करने की आवश्यकता है) को संभालने के लिए आवेदन को फिर से लिखें।

जब आप एक नई प्रति तैनात करते हैं / db स्कीमा परिवर्तन करते हैं, तब भी आपको रखरखाव के लिए ऐप को नीचे ले जाने की आवश्यकता होती है।


0

यहाँ एक लागत प्रभावी उत्तर अक्सर डेटाबेस को बफर करने के लिए होता है, जिसमें एक सस्ते कमोडिटी संतुलित सर्वर टियर होस्टिंग एप्लिकेशन सेवाएं होती हैं जो लॉजिक प्रोसेसिंग और डेटा स्टोरेज प्रदान करती हैं जो अन्यथा डेटाबेस संसाधनों को बांधती हैं। जाहिर है इसके लिए डेटा अस्थिरता और कैशिंग रणनीतियों के रूप में कुछ विचार की आवश्यकता होती है।


-1

मैं आपको एक जुरासिक जवाब देता हूं। यदि आपके लक्ष्यों में "विंडोज अपडेट इंस्टॉल करना" शामिल है तो आप बचाव से परे हैं।

मैं अपनी दाढ़ी में ग्रे हो गया हूं, और एक समय याद कर सकता हूं जब कोई एप्लिकेशन "ऑपरेटिंग सिस्टम अपडेट" को भुगतने के बिना 10 साल चला सकता है। एक ऐप का उपयोगी जीवनकाल दशकों में मापा गया था, न कि वर्षों में।

तो मेरी सलाह यह है: अपने SQL सर्वर डेटाबेस + अनुप्रयोग के एक कार्यशील संस्करण को स्थापित करें, और माइक्रोफ़ोन अपडेट से डेटा सर्वर को अलग कर दें। अगर यह टूटा नहीं है, तो इसे ठीक न करें।

गर्म swappable RAID डिस्क का उपयोग करें।

यदि आपके हार्डवेयर क्रेप्स से बाहर हैं, तो एक मिरर इमेज डेटाबेस सर्वर (टॉमटॉम के सुझाव के अनुसार) में रखें।


3
टिम, यह कहने जैसा है कि जब आप एक्सेल फ़ाइल में परिणाम स्टोर कर सकते हैं तो डेटाबेस का उपयोग क्यों करें? ओएस में कई कमजोरियां हैं, और नियमित अपडेट स्थापित नहीं करना / एंटी-वायरस / फ़ायरवॉल नियमों को अद्यतित रखना खराब सलाह है। किसी भी स्तर पर उचित नहीं है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.