शून्य डाउनटाइम आईआईएस में अपलोड / रोलबैक


17

मुझे यकीन नहीं है कि यह सवाल पूछने का सही तरीका है, लेकिन यहां मूल रूप से मैं क्या करना चाहता हूं:

1.) IIS में एक साइट के लिए एक परिवर्तन धक्का।
2.) उपयोगकर्ताओं को बाधित न करें।
3.) आसानी से वापस रोल करने में सक्षम हो।

इसलिए, कुछ चीजें हैं जो मुझे पता है कि होना है:

1.) प्रोक सत्र से बाहर - संभाला
2.) प्रोक कैश से बाहर - संभाला

तो जो प्रश्न बने हुए हैं:
1.) मैं उपयोगकर्ताओं को कैसे बाधित करूं? अगर मैं सिर्फ बिन में फाइलें अपलोड करता हूं, तो एप्लिकेशन पुन: चक्रित हो जाता है और ऑनलाइन वापस आने के लिए 10+ सेकंड लगते हैं
।) मैं आसानी से कैसे रोल कर सकता हूं?

मैं सोच रहा था कि IIS, एक सार्वजनिक और एक निजी में दो साइट स्थापित करने के लिए एक संभावित समाधान होगा। अपलोड निजी जाते हैं और गर्म हो जाते हैं। वार्मअप के बाद, साइटों को स्वैप किया जाता है। एक रोलबैक केवल एक अपलोड के बिना निजी रूप से स्वैप करने के लिए मजबूर करता है।

यह सिद्धांत में ध्वनि लगता है, लेकिन Im यांत्रिकी के बारे में निश्चित नहीं है। कोई विचार?


@NickatUship: वेबसाइट पर होस्ट किया गया सिर्फ 1 सर्वर है? और यदि नहीं, तो दूसरा जोड़ने की कोई संभावना है?
मैट बी

@NickatUship: भी, क्या IIS संस्करण आप पर हैं?
मैट बी

हम संभावित रूप से अपने लोडबेलर के साथ इसे हल कर सकते हैं - यह सच है। मैं सर्वर पर ही कुछ करने में सक्षम होने की उम्मीद कर रहा था - यह हमारे प्रवाह के लिए बेहतर काम करेगा। हम IIS 7. पर हैं
चिकनमिलकोब

मुझे आश्चर्य है कि अगर हम एक शून्य डाउनटाइम 1 के लिए वैश्विक URL फिर से लिखना नियमों का उपयोग कर सकते हैं) * .rrain.com * को *। ऊपर 4.) पुनः लिखकर * .siteB.com
चिकनमिलकोब

जवाबों:


29

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

इसे सेटअप करने के लिए, आपको आवश्यकता होगी:

शुरू करने के लिए ARR स्थापित करें।

IIS में 3 वेबसाइट सेट करें:

  • वेबसाइट 1 वह साइट होगी जहां आपके उपयोगकर्ता वास्तव में कनेक्ट होते हैं, जो कहता है http://192.168.1.1/। यह भी ARR साइट है। इसे इंगित करने के लिए बस एक खाली निर्देशिका सेट करें, और इसे अपने स्वयं के ऐप पूल में डालें। इन निर्देशों के अनुसार टाइमआउट न करने के लिए ऐप पूल सेट करें
  • वेबसाइट 2 और 3 वे साइटें होंगी जो वास्तव में आपकी सामग्री को होस्ट करती हैं। ये अपने स्वयं के आईपी पर होने की आवश्यकता है और एआरआर कैसे काम करता है, वेबसाइट की तुलना में एक अलग पोर्ट पर। 1. चलो कहते हैं कि वे हैं http://192.168.1.2:8080और http://192.168.1.3:8080। वे अपने स्वयं के ऐप पूल में भी होने चाहिए, और फ़ाइल सिस्टम पर अलग-अलग निर्देशिकाओं को इंगित करें (लेकिन दोनों निर्देशिकाओं में समान सामग्री आमतौर पर होती है)

एआरआर स्थापित करने के बाद, आईआईएस प्रबंधक में "सर्वर फार्म" नामक एक नई श्रेणी होगी - उस पर राइट क्लिक करें और एक नया खेत बनाएं।

  • इसे ऐसा नाम दीजिए जो आपके लिए सार्थक हो
  • Webserver 2 और Webserver 3 को सर्वर के रूप में जोड़ें - "उन्नत सेटिंग" बटन पर क्लिक करना सुनिश्चित करें, "ApplicationRequestRout" श्रेणी खोलें और प्रत्येक सर्वर के लिए http80 को 8080 में बदलें।
  • विज़ार्ड समाप्त करें - आपसे पूछा जाएगा कि क्या आप URL रिवाइराइट नियम बनाना चाहते हैं - हाँ पर क्लिक करें
  • अब आपके पास एक सर्वर फ़ार्म है - कॉन्फ़िगरेशन को ख़त्म करने के लिए, फ़ार्म पर जाएँ और प्रॉक्सी कॉन्फ़िगरेशन बटन पर क्लिक करें - "रिस्पॉन्स हेडर में रिवर्स रीराइट होस्ट" को चालू करें और परिवर्तन लागू करें
  • IIS प्रबंधक में, रूट स्तर सर्वर श्रेणी पर जाएं और URL रिवाइटर बटन पर क्लिक करें, एक नियम होगा जो आपके खेत के लिए बनाया गया था
    • सेटिंग्स पर जाने के लिए नियम पर डबल क्लिक करें
    • स्थितियां बॉक्स खोलें
    • {SERVER_PORT}8080 से मेल न खाने के लिए एक नई शर्त जोड़ें
    • परिवर्तन लागू करें

इस बिंदु पर आपके पास मूल बातें हैं जो हमें आपके अनुरोध को पूरा करने की आवश्यकता है। यदि आप जाते हैं http://192.168.1.1/तो आपको वेबसाइट 1 या वेबसाइट 2 से अपनी वेबसाइट मिल जाएगी, लेकिन यह पूरी तरह से सहज होगा कि अन्य साइटें हैं।

अब आप क्या कर सकते हैं जब आप अपने आवेदन का एक नया संस्करण तैनात करना चाहते हैं:

  • आपके फ़ार्म में सर्वरों का ड्रेनस्टॉप 1 (सर्वर फ़ार्म टूल्स में, "मॉनिटरिंग एंड मैनेजमेंट" पर जाएँ, एक सर्वर चुनें और "सर्वर को अनुपलब्ध रूप से सुंदर बनाएं") चुनें
  • साइट के अपने नए संस्करण को उस सिस्टम पर तैनात करें जो ऑफ़लाइन है
  • अपने वैकल्पिक IP / पोर्ट का उपयोग करके ऑफ़लाइन होने वाली साइट को वार्मअप करें
  • साइट को फिर से खेत में उपलब्ध कराएं
  • अन्य सर्वर के लिए प्रक्रिया को दोहराएं

वेब परिनियोजन उपकरण उस समय लागू होता है जब आप इस सब की स्क्रिप्ट की इच्छा के बारे में बात करते हैं। यह आपके आवेदन के लिए एक पैकेज बनाने और कमांड लाइन से इसे तैनात करने के लिए सुपर आसान बनाता है। अगर समस्या है तो आप उस पैकेज को आसानी से रोलबैक भी कर सकते हैं। ARR भीMicrosoft.Web.Administration dlls का उपयोग करके स्क्रिप्ट करने योग्य है

एक अन्य चीज - यदि आप वास्तव में विंडोज 2008 आर 2 (जो कि आईआईएस 7.5 है) पर हैं, तो एप्लिकेशन वार्मअप मॉड्यूल पर एक नजर डालते हैं - यह आप पर इस आसान के वार्मिंग हिस्से को भी बनाना चाहिए।


बहुत बढ़िया - धन्यवाद मैट। +1 यह सब नीचे रखने के लिए भी। मैं जांच कर वापस बोर्ड में आऊंगा।
चिकनमिलकोम्ब

परफेक्ट .. हो सकता है कि फेक प्रूफ न हो .. लेकिन जांच का काम
विवेक कुंभार


10

मैटबी ने इसे पानी से बाहर निकाला। +1 मैं अधिक विवरणों के साथ उत्तर दूंगा लेकिन मैं उनकी बातों को लेना नहीं चाह रहा हूं। जो उसने कहा, मैं उसमें जोड़ दूंगा।

मेरे पास एक समान सेटअप है जो उन्होंने वर्णित किया है, और यह बहुत अच्छा काम करता है। ARR एक एकल सर्वर पर भी जाने का मार्ग है।

हालाँकि, मैं कुछ चीजें जोड़ूंगा।

मैट की सिफारिश के अनुसार, 2 साइटें बनाएं। उन्हें yoursite.com01 और yoursite.com02 जैसे कुछ कॉल करें।

2 URL पुनर्लेखन नियम बनाएँ। Www.yourdomain.com के लिए एक और एक और स्टेजिंग .yourdomain.com। उत्पादन के लिए, (^ www.yourdomain.com $) के मान के साथ {HTTP_HOST} का उपयोग करें। (yourIP) (या जो भी बाध्यकारी आप पसंद करते हैं) मंचन के लिए, (^ staging.yourdomain.com $) के मान के साथ {HTTP_HOST} का उपयोग करें। नियमों को कॉल करें yoursite.com और staging.yoursite.com।

Bind Rule = yoursite.com to site = yoursite.com01 और रूल = staging.yoursite.com to site = yoursite.com02।

सेटअप FTP को staging.yoursite.com पर दें।

उत्पादन ट्रैफ़िक अब नियम = staging.yoursite.com और साइट = yoursite.com01 पर जा रहा है। विपरीत से डगमगा रहा है।

आप किसी भी बिंदु पर मंचन करने के लिए तैनात कर सकते हैं, परीक्षण, पूर्व-स्पिनअप, अन्य लोगों का परीक्षण कर सकते हैं, आदि। इसे दिन के दौरान करें, इससे कोई फर्क नहीं पड़ता। हर बार एक ही एफ़टीपी खाते में तैनात करें। बिल्ड सर्वर के साथ बढ़िया काम करता है।

फिर, जब आप लाइव जाने के लिए तैयार हों, तो बस 3 बदलाव करें: - FTPite एव्री बाइंडिंग को स्थानांतरित करें usite.com02 से yoursite.com01 पर - URL को रीक्रिएट करें नियम yourite.com को इंगित करने के लिए yoursite.com02 पर जाएं - URL रिवाइज करें। yourite.com इंगित करने के लिए yourite.com01

अब आपके पास तत्काल डाउन-बैक कार्यक्षमता के साथ शून्य डाउनटाइम, तत्काल स्विचिंग है!

विचार करने के लिए आपका एकमात्र गोत्र प्रक्रिया सत्र से बाहर है। सुनिश्चित करें कि आपका राज्य सर्वर दोनों साइट आईडी स्वीकार करता है ताकि आप स्वैप के दौरान सत्र राज्य खो न दें।

यह भी ध्यान दें कि यह केवल वेब है न कि डेटाबेस।

स्क्रिप्टिंग के लिए, कॉन्फ़िगरेशन संपादक का उपयोग करें। अपने इच्छित परिवर्तन करें और फिर "Generate Script" पर क्लिक करें। यह आपको C #, appcmd या AHAdmin कोड देगा।

मैं कुछ महीनों के लिए वेबपेज के सामने अंत उदाहरणों की अदला-बदली कर रहा हूं और मैंने कभी पीछे मुड़कर नहीं देखा। यह परम्परागत तैनाती की तुलना में तैनाती को इतना ताज़ा बनाता है।


@ पोस्ट - फॉलोअप के लिए धन्यवाद, यह जानने के लिए कि मैंने जो पोस्ट किया है वह सामान्य पागलपन नहीं है क्योंकि मैंने इसे पहले कभी नहीं किया है।
मैट बी

मुझे डाउनटाइम के बिना यूआरएल रिवर्ट नियमों में बदलाव करने में बहुत सफलता नहीं मिली है। मेरे लिए समय का अधिकांश हिस्सा है: उच्च ट्रैफ़िक सर्वर पर URL रीराइट नियमों में कोई भी परिवर्तन ~ 5-10 सेकंड के लिए संभावित रूप से उपयोगकर्ताओं से टाइमआउट और कथित सुस्ती के कारण CPU को 100% तक बढ़ा देगा।
kavun

1
@kavun हां, इस बात में सच्चाई है। पिछले कुछ वर्षों में वैश्विक स्तर पर कुछ यूआरएल अपडेट के नियमों में सभी साइटों के लिए अपॉइंटमेंट रीसायकल के कारण शुरू हुआ। यह मामला नहीं हुआ करता था। इसलिए यदि आपके पास एक ही सर्वर पर ASP.NET साइट हैं तो एक प्रभाव हो सकता है। हालांकि, अगर आपके पास इसके लिए एक समर्पित एआरआर सर्वर है तो एक एपोमेडेन रीसायकल के लिए जुर्माना न्यूनतम है और आप अभी भी इस तरह के एक अच्छे समाधान का उपयोग कर सकते हैं।
स्कॉट फोर्सिथ - एमवीपी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.