2010-10-06 9 views
7

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

अधिक विवरण:

हम सर्वर N1 और N2 के बीच एक संकुल MSMQ की है। अन्य क्लस्टर संसाधन केवल उन्हीं सेवाएं हैं जो क्लस्टर कतारों पर स्थानीय रूप से संचालित होते हैं, यानी NServiceBus वितरक।

सभी कार्यकर्ता प्रक्रियाएं अलग-अलग सर्वर, Services3 और Services4 पर लाइव होती हैं।

NServiceBus से अपरिचित लोगों के लिए, काम वितरक द्वारा प्रबंधित क्लस्टर वर्क कतार में जाता है। सर्विस 3 और सर्विसेज 4 पर वर्कर ऐप्स एक ही वितरक द्वारा प्रबंधित क्लस्टर कंट्रोल कतार में "मैं काम के लिए तैयार हूं" संदेश भेजता हूं, और वितरक कार्यकर्ता प्रक्रिया की इनपुट कतार में काम की इकाई भेजकर प्रतिक्रिया देता है।

किसी बिंदु पर, यह प्रक्रिया पूरी तरह से लटका जा सकती है।

Clustered MSMQ Outgoing Queues in Hung State

अगर मैं दूसरे नोड के लिए क्लस्टर से अधिक असफल है, यह पूरी प्रणाली की तरह है पैंट में एक लात हो जाता है: यहाँ क्लस्टर MSMQ उदाहरण पर बाहर जाने वाले कतारों की एक तस्वीर है जब सिस्टम लटका दिया जाता है है । यहाँ शीघ्र ही एक विफलता के बाद एक ही संकुल MSMQ उदाहरण की एक तस्वीर है:

Clustered MSMQ Outgoing Queues After Failover

किसी को भी इस व्यवहार की व्याख्या कर सकते है, और क्या मैं इसे से बचने के लिए कर सकते हैं, सुचारू रूप से चलाने प्रणाली रखने के लिए?

+0

माध्यमिक नोड अंततः लटका है? श्रमिक कैसे काम कर रहे हैं? क्या वे सक्रिय रूप से संदेश संसाधित कर रहे हैं? –

+0

यह अक्सर पर्याप्त नहीं होता है कि मैं अधिकृत रूप से कह सकता हूं कि यह केवल एक नोड या दोनों पर होता है। मजदूर व्यवहार कर रहे हैं - प्रक्रियाओं के लिए स्थानीय इनपुट कतार में संदेश होने पर वे सक्रिय रूप से संदेश संसाधित कर रहे हैं। –

+0

अजीब। यह कितनी बार होता है? प्रत्येक नोड में कितने एनआईसी कार्ड हैं? मैं सोच रहा हूं कि एमएसएमक्यू किस कार्ड का उपयोग करने के लिए भ्रमित हो रहा है और इसलिए कभी-कभी एसीके को पूरा नहीं कर रहा है। इसे लॉक करने के लिए एक रजिस्ट्री सेटिंग होनी चाहिए। –

उत्तर

2
एक साल बाद से अधिक

, ऐसा लगता है कि हमारे इस मुद्दे को हल किया गया है। मुख्य टेकवेज़ प्रतीत होते हैं:

  • सुनिश्चित करें कि आपके पास एक ठोस DNS सिस्टम है, इसलिए जब MSMQ को होस्ट को हल करने की आवश्यकता हो, तो यह हो सकता है।
  • केवल एक Windows फ़ेलओवर क्लस्टर पर MSMQ में से एक क्लस्टर उदाहरण पैदा करते हैं।

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

कुछ बिंदु पर मैं या इस दृष्टिकोण के बारे में संदिग्ध बढ़ने लगी, विशेष रूप से एक बार प्रत्येक MSMQ उदाहरण से अधिक में नाकाम रहने के बाद से दो बार हमेशा संदेशों फिर से आगे बढ़ पाने के लिए लग रहा था।

मैंने इस क्लस्टर होस्टिंग रणनीति के बारे में Udi Dahan (NServiceBus के लेखक) से पूछा, और उसने मुझे एक परेशान अभिव्यक्ति दी और पूछा, "आप ऐसा कुछ क्यों करना चाहते हैं?" हकीकत में, वितरक बहुत हल्का वजन होता है, इसलिए उपलब्ध नोड्स के बीच समान रूप से उन्हें वितरित करने के लिए वास्तव में बहुत अधिक कारण नहीं है।

उसके बाद, हम सब कुछ हम सीखा था और recreate a new Failover Cluster with only one MSMQ instance लेने का फैसला किया। हमने तब से इस मुद्दे को नहीं देखा है। बेशक, यह सुनिश्चित करना कि यह समस्या हल हो गई है, यह नकारात्मक साबित होगी, और इस प्रकार असंभव होगा। यह कम से कम 6 महीने के लिए कोई मुद्दा नहीं रहा है, लेकिन कौन जानता है, मुझे लगता है कि यह कल असफल हो सकता है! आइए आशा न करें।

1

आपकी एंडपॉइंट्स को उनकी सदस्यता जारी रखने के लिए कॉन्फ़िगर कैसे किया जाता है?

क्या होगा यदि आपकी सेवा में से एक (या अधिक) में कोई त्रुटि आती है और Failoverclustermanager द्वारा पुनरारंभ किया जाता है? इस मामले में, यह सेवा फिर से अन्य सेवाओं से "मैं तैयार हूं" संदेश में से एक प्राप्त नहीं करूंगा।

जब आप दूसरे नोड में विफल हो जाते हैं, तो मुझे लगता है कि आपकी सभी सेवाएं इन संदेशों को दोबारा भेजती हैं और नतीजतन, सबकुछ वापस काम कर रहा है।

इस व्यवहार का परीक्षण करने के लिए निम्न कार्य करें।

  1. अपनी सभी सेवाओं को रोकें और पुनरारंभ करें।
  2. केवल सेवाओं में से एक को रोकें।
  3. रुक गई सेवा को पुनरारंभ करें।
  4. यदि आपका सिस्टम लटका नहीं है, तो प्रत्येक सेवा के साथ इसे दोहराएं।

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

+0

सदस्यता साझा किए गए डेटाबेस में पहले से ही जारी है। क्लस्टर्ड वितरक क्लस्टर एमएसएमक्यू कतार में अपने राज्य को स्टोर करता है। यदि फेलओवर क्लस्टर मैनेजर द्वारा कोई कार्यकर्ता पुनरारंभ किया जाता है, तो पहली चीजों में से एक (किसी भी स्टार्टअप पर) रेडीमेसेज भेजना है। –

+0

यह सच है कि कार्यकर्ता तैयार पर रेडीमेसेज भेजता है। मैं लगातार सदस्यता के लिए पूछ रहा हूं क्योंकि मुझे एक ही समस्या थी। सदस्यता में से एक डीबी में सही ढंग से सहेजा नहीं गया था, इसलिए पुनरारंभ करने के बाद, हालांकि यह अपना संदेश भेजता है, अन्य ने इसे पूरी तरह से अनदेखा कर दिया क्योंकि उन्होंने केवल डीबी की जांच की थी। इसका केवल अपवाद तब था जब सभी सेवाओं को एक साथ फिर से शुरू किया गया था, फिर प्रश्न में सेवा के संदेश फिर से प्राप्त किए गए थे। सेवा पुनरारंभ करें: संदेश फिर से विफल। –

2

शायद आपके सर्वर क्लोन किए गए थे और इस प्रकार एक ही कतार प्रबंधक आईडी (QMId) साझा करते थे।

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

की जांच: http://blogs.msdn.com/b/johnbreakwell/archive/2007/02/06/msmq-prefers-to-be-unique.aspx

+0

यह मेरे लिए मामला नहीं था, लेकिन बहुत अच्छी जानकारी थी। और, जैसा कि एमएसएमक्यू के साथ पाठ्यक्रम के बराबर लगता है, बहुत अच्छी तरह छुपा हुआ है। उम्मीद है कि यह किसी और की मदद करेगा। मैं, दूसरी ओर, खोज जारी रखूंगा ... –

+0

तब शुभकामनाएं ... :-) –

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