Skip Ribbon Commands
Skip to main content

​​​​​​​​​​​

ऐपऐप सर्वर स्लॉट्स के बीच स्वैप करते समय डेटाबेस कनेक्शन स्ट्रिंग

 

मान लें आपके पास एक Azure ऐप सेवा वेब ऐप है जो एक डेटाबेस तक पहुँच और बड़ी मात्रा में ट्रैफिक संभालती है, जिनका ढाँचा चित्र 1 में दर्शाए गए ढांचे जैसा है।  जब आप डिप्लॉयमेंट तैयार करते हैं, आप नहीं चाहेंगे कि नया रिलीज़ डिप्लॉय करते समय बग्स भी साथ में डिप्लॉय हों या अधिक समय तक खराबी रहे, इस लिए आप एक डिप्लॉयमेंट स्लॉट लेना चाहेंगे। डिप्लॉयमेंट स्लॉट एक अतिरिक्त Azure ऐप सेवा वेब ऐप इंस्टैंस (W3WP) है जो आपके प्रोडक्शन Azure ऐप सेवा वेब ऐप के साथ उसी नाम से जुड़ा हुआ है और उसी ऐप सेवा योजना (ASP) पर चलता है, जिसके बारे में मैंने यहाँ चर्चा की है यह डिप्लॉयमेंट स्लॉट आपको लाइव वेब ऐप रिलीज़ करने से पहले जांच के लिए टेस्ट या नॉन-प्रोडक्शन तैयार कोड डिप्लॉय करने देता है। इस डिप्लॉयमेंट स्लॉट की खासियत यह है कि आप एक बटन पर क्लिक कर सकते हैं और जिस डिप्लॉयमेंट स्लॉट में नया संस्करण शामिल है वह प्रोडक्शन, और बैंग से स्वैप हो जाता है, और नया संस्करण एक क्लिक के साथ ही लाइव हो जाता है।

चित्र 1 में देखें, एक SQL सर्वर है जिसमें 2 SQL Azure डेटाबेस हैं, एक को stickyslot-pro कहा जाता है और दूसरे को stickyslot-tst कहा जाता है।  इसके अतिरिक्त, एक ऐप सेवा योजना (ASP) होती है जिसे STICKYSLOT-ASP कहा जाता है जो stickyslot नामक Azure ऐप सेवा वेब ऐप पर चलती है जिसमें डिप्लॉयमेंट स्लॉट का नाम testing होता है। ये सभी STICKSLOT-RG नामक रिसोर्स समूह के भीतर होते हैं।

चित्र 1, बेस्ट केस,  ऐप सेवा आर्किटेक्चर आरेख

यहाँ एक अच्छा लेख उपलब्ध है जिसमें स्टिकी स्लॉट्स पर चर्चा की गई है।

इस लेख में मेरा मुख्य ध्यान Azure ऐप सेवा वेब ऐप डिप्लोमेंत स्लॉट्स PRO (प्रोडक्शन) से TST (एक टेस्टिंग इंस्टैंस) के बीच स्वैपिंग पर है।  बात यह है कि, मूल रूप से, ऐप की सेटिंग्स और डेटाबेस कनेक्शन स्ट्रिंग्स स्लॉट से जुड़े नहीं होते हैं और जब टेस्ट स्लॉट प्रोडक्शन स्लॉट के साथ स्वैप होता है तब वेब ऐप चलती है। इस परिदृश्य में, इसका मतलब है कि जब मैं अपना स्लॉट प्रोडक्शन से स्वैप करता/करती हूँ, जो वैसे तो अपना डाटा stickslot-tst डेटाबेस से प्राप्त करता है, लेकिन तब स्वैप हुई वेब ऐप stickyslot-pro डेटाबेस  के बजाए stickyslot-tst डेटाबेस  की ओर इशारा करेगी। इस लिए, मुझे वेब ऐप डिप्लॉयमेंट स्लॉट्स को स्वैप करने का तरीका चाहिए, लेकिन मौजूदा प्रोडक्शन वेब ऐप की डेटाबेस कनेक्शन स्ट्रिंग प्रोडक्शन की ओर इशारा करते रहें और टेस्टिंग, टेस्टिंग डेटाबेस की ओर इशारा करते रहें।  ऐसा "स्लॉट से जुड़े रहें" सेटिंग करके किया जाता है।

मान लें कि मेरी प्रोडक्शन वेब ऐप के लिए, मेरे पास 2 वैल्यूज हैं। जब मैं स्वैप करूं तब मैं 'प्रोडक्शन' में रहना चाहता/चाहती हूँ। चित्र 2 देखें।

 
 

चित्र 2, स्टिकी स्लॉट्स की सेटिंग्स जो टेस्टिंग स्लॉट से स्वैप होने के बाद भी प्रोडक्शन में रहती हैं

ध्यान दें कि एक ऐप सेटिंग हैं जिसका नाम STICKSLOT है और वैल्यू Value = ProductionEnvironment है और कनेक्शन स्ट्रिंग StickySlotConnectionString है जिसमें प्रोडक्शन डाटाबेस का नाम, उपयोगकर्ता id और पासवर्ड शामिल होते हैं।  सबसे महत्त्वपूर्ण ध्यान दें कि स्लॉट सेटिंग का बॉक्स चयनित है जिसका अर्थ है कि यह वेब ऐप के साथ ही रहता है और स्वैप होने पर मूव नहीं करता है। यह भी ध्यान दें कि टेस्टिंग विकास स्लॉट में, देखें चित्र 3, मेरी ऐप सेटिंग और कनेक्शन स्ट्रिंग (कुंजी और नाम) वही हैं, लेकिन इनकी वैल्यूज अलग अलग हैं, और स्लॉट सेटिंग बॉक्स भी चयनित है, इस लिए यह टेस्टिंग वेब ऐप पर ही रहता है, मैं कैसे भी नहीं चाहता/चाहती कि मेरी टेस्टिंग वेब ऐप कभी भी प्रोडक्शन एनवायरनमेंट को इंगित करे।

चित्र 3, स्टिकी स्लॉट सेटिंग्स प्रोडक्शन स्लॉट के साथ स्वैप होने के बावजूद टेस्टिंग स्लॉट में रहती हैं

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

 

चित्र 4, Azure ऐप सेवा वेब ऐप को स्लॉट्स, स्टिकी स्लॉट्स के बीच स्वैप करें

एक ऐसी फीचर है जिसे “swap with preview” कहा जाता है जिसके बारे में यहां बताया गया है मूलतः यह फीचर आपको आपके टेस्टिंग एनवायरनमेंट को प्रोडक्शन से पॉइंट करने देता है ताकि यह सुनिश्चित हो सके कि सब कुछ अपेक्षा अनुसार हो रहा है, इससे पहले कि आप वास्तविक ट्रैफिक को रूट करना शुरू करें।

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

चित्र 5, स्टिकी स्लॉट्स Azure ऐप सेवा वेब एओ सेटिंग्स और कनेक्शन स्ट्रिंग्स

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

हम थोड़ा आगे बढ़ते हैं

मेरे कुछ प्रश्न थे:

  • मैं अपने कोड से कनेक्शन स्ट्रिंग और ऐप सेटिंग्स का इस्तेमाल कैसे करूं
  • क्या होता है यदि मेरे पास web.config फाइल में एक कनेक्शन स्ट्रिंग है और यदि मरे पास दोनों हैं, तो क्या होता है

चलिए इन प्रश्नों का उत्तर दें।

मैं अपने कोड से कनेक्शन स्ट्रिंग और ऐप सेटिंग्स का इस्तेमाल कैसे करूं

पोर्टल में कॉन्फ़िगर की ई वैल्यू से या web.config में कॉन्फ़िगर की गई वैल्यूज से कनेक्शन स्ट्रिंग का इस्तेमाल करने के लिए, आप निम्नलिखित कोड का इस्तेमाल करते हैं।

ConfigurationManager.ConnectionStrings["StickySlotConnectionString"]?.ConnectionString;

 
कनेक्शन स्ट्रिंग का नाम पास करें और वैल्यू वापिस मिल जाती है।

ऐप सेटिंग वैल्यू का इस्तेमाल करने के लिए, निम्न का इस्तेमाल करें

ConfigurationManager.AppSettings["STICKYSLOT"];

 
क्या होता है यदि मेरे पास web.config फाइल में एक कनेक्शन स्ट्रिंग है और यदि मरे पास दोनों हैं, तो क्या होता है

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

​​
​​​​​​​​​​​​​​​​​​​​​

Read More on...

​​​​​​​​​
This site uses Unicode and Open Type fonts for Indic Languages. Powered by Microsoft SharePoint
©2017 Microsoft Corporation. All rights reserved.