2009-11-18 11 views
7

क्या कोई भी विंडोज सेवाओं (मेरे मामले में, .NET में विकसित) चलाने के लिए किसी भी स्थापित सर्वोत्तम प्रथाओं के बारे में जानता है, ताकि वे उच्च उपलब्धता के लिए अन्य सर्वर पर सही ढंग से विफल हो जाएंगे प्रयोजनों?सेवाओं पर विफल होने के लिए चुनौतियां और सर्वोत्तम अभ्यास

मुख्य तरीकों से मैं इसे देख सकता हूं या तो आवश्यक होने पर द्वितीयक सर्वर शुरू कर रहा है (जिस स्थिति में अन्य सर्वर की निगरानी करने की आवश्यकता है), या दोनों सेवाएं एक साथ चल रही हैं (जिस स्थिति में उन्हें आवश्यकता है उनके काम को सिंक्रनाइज़ करें ताकि वे वही काम करने की कोशिश न करें)।

क्या इस तरह की समस्या के लिए कोई पैटर्न या मॉडल है? मुझे पता है कि सटीक स्थिति एक बड़ा अंतर करेगी, लेकिन यह काफी आम मुद्दे की तरह प्रतीत होता है।

धन्यवाद

जॉन

+0

आपके उत्तर के लिए धन्यवाद। क्षमा करें, मुझे यह इंगित करना चाहिए था कि जिस सेवा का मैं उल्लेख कर रहा था वह पृष्ठभूमि प्रक्रिया सेवा से अधिक था - यह आने वाले नेटवर्क कनेक्शन को संभाल नहीं पाता है। मैं सभी सलाह की सराहना करता हूं! – John

उत्तर

3

यहां मेरे लिए क्या काम किया है।

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

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

फिर, यह वास्तव में इस बात पर निर्भर करेगा कि सेवा को पूरा करने की क्या ज़रूरत है। उम्मीद है की यह मदद करेगा।

+0

हां फेलओवर क्लस्टर सही दृष्टिकोण है। आप तैनाती के दौरान क्लस्टर समूह, संसाधनों और निर्भरताओं को कॉन्फ़िगर करने के लिए इसे स्क्रिप्ट कर सकते हैं। इसके लिए विंडोज सर्वर एंटरप्राइज़ संस्करण की आवश्यकता है हालांकि मानक संस्करण नहीं है। – softveda

0

होने दोनों हर समय चल रहा है शायद सबसे सरल समाधान है, लेकिन आप अन्यथा जब एक विफल रहता है, अन्य अतिभारित बन जाएगा, सुनिश्चित करें कि आप कभी नहीं 50% लोड ऊपर जाना जरूरत और शायद भी असफल हो।

सिंक्रनाइज़ करने के लिए, एक लेनदेन डेटाबेस का उपयोग करें। अपने स्वयं के सिंक्रनाइज़ेशन को लिखने का प्रयास आमतौर पर बग में होगा।

0

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

0

मुझे विश्वास है कि विफलता से निपटने का सबसे अच्छा तरीका नेटवर्क स्तर पर जहां भी संभव हो। लोड-संतुलित या प्राथमिक/फेलओवर वातावरण फ्रंटिंग वर्चुअल आईपी फेलओवर परिदृश्यों के लिए कोड लिखने से बचने का एक अच्छा तरीका है।

मामलों में जहां आप कोड में विफलता संभाल चाहिए:

  1. परीक्षण कनेक्शन/सेवा कॉल
  2. तो परीक्षण विफल रहता है, अलर्ट
  3. विफल से अधिक अगले "पंजीकृत" सेवा समाप्ति बिंदु को भेज
+0

विंडोज़ सेवाओं के साथ नेटवर्क को क्या करना है। एक पृष्ठभूमि सेवा चल रही है और इसके बिना किसी भी ग्राहक से जुड़े इसके काम कर सकते हैं। फेलओवर क्लस्टरिंग करने के लिए सही तरीका है। – softveda

0

दो बुनियादी दृष्टिकोण हैं।

  1. ग्राहक विभिन्न एंडपॉइंट पते के बारे में जानते हैं और आवश्यकतानुसार स्विच करते हैं या किसी अन्य सेवा या कॉन्फ़िगरेशन तंत्र द्वारा निर्देशित होते हैं। (उदाहरण के रूप में stocktrader demo application यह करता है।)

  2. ग्राहकों को पता नहीं है, और आप एक मानक नेटवर्क लोड संतुलन दृष्टिकोण का उपयोग करते हैं जो विफलता भी प्रदान कर सकता है। एफ 5 एक उत्पाद है। कई अन्य हैं। यह मूल रूप से सेवाओं के लिए एनएटी की तरह है, सभी अनुरोध आपके एनएलबी के माध्यम से जाते हैं और यह उन्हें सर्वर पर भेजता है, और आगे कॉलर को प्रतिक्रिया देता है। ये उत्पाद सेवाओं की निगरानी करते हैं और केवल उन लोगों का उपयोग करते हैं जो ऊपर हैं। सर्वर वर्कलोड के आधार पर सर्वरों के लिए नए अनुरोधों को असाइन करने के लिए आप अक्सर इसे नियमों के साथ अनुकूलित कर सकते हैं। Windows server has this कार्यक्षमता कुछ हद तक अंतर्निहित है।

किसी भी तरह से आप इसे करते हैं, तो आपकी सेवा कॉल "स्टेटलेस" होने पर यह बहुत आसान है।

संबंधित मुद्दे