2015-06-26 7 views
16

में Azure वेबबॉज को स्वैप करने से रोकने के लिए कैसे करें मेरे पास एक उदाहरण के साथ एक Azure वेबसाइट है और कई उदाहरणों के साथ स्लॉट स्टेजिंग है।Azure वेबसाइट उत्पादन <--> स्टेजिंग स्लॉट

मैं साइट पर कई Azure वेबबॉज चलाता हूं, जिनमें से कुछ लगातार जारी किए जाते हैं।

मुझे लगता है कि ट्रिगर किए गए वेबबॉज केवल एक बार एक बार चलेंगे।

मेरे मौजूदा सेटअप है:

  • उत्पादन साइट

  • स्टेजिंग वेबसाइट के मंचन से अदला-बदली के अलावा अन्य कोई तैनाती है

  • Webjobs के भीतर से तैनात किया गया है bitbucket से निरंतर तैनाती के लिए सेटअप है "एज़ूर को प्रकाशित" का उपयोग करके उत्पादन स्लॉट के लिए वीएस (चूंकि AFAIK को शेड्यूल आधारित वेबबॉज की निरंतर तैनाती के लिए कोई समर्थन नहीं है)

  • वेबसाइट के लिए वी.एस. समाधान युक्त वी.एस. समाधान से अलग है webjobs

मैं जब मैं उत्पादन और मचान स्वैप, webjobs भी लगा दिया जाता था देखा! मुझे यह एहसास हुआ जब मैंने उत्पादन के लिए एक नया वेबोज़ तैनात किया था और बाद में एक वेबसाइट तैनाती के बाद एक स्वैप किया था, नया तैनाती वेबबॉज अब उत्पादन स्लॉट में नहीं था!

मेरे सवालों का:

  1. यह संभव उत्पादन के बीच अदला-बदली और मंचन

  2. वास्तव में क्या webjobs के लिए बदली है (webjobs वेबसाइट से कोड की वास्तव में पूरी तरह से अलग टुकड़े कर रहे हैं) से webjobs रोकने के लिए है ? बाइनरी? अनुसूची? दोनों

  3. मैं सभी वेबबॉज को स्टेजिंग स्लॉट पर चलने से कैसे रोकूं? मेरे वेबबॉज को अत्यधिक उपलब्ध होने की आवश्यकता नहीं है और मैं उन्हें आसानी से ऑफलाइन परीक्षण कर सकता हूं।

  4. यदि मैं वीएस स्टेजिंग स्लॉट पर वेबबॉज तैनात करता हूं और एक स्वैप करता हूं, तो वर्तमान स्टेजिंग स्लॉट में तैनात वेबबोज़ गायब हो जाएगा और जब मैं अपना अगला वेबसाइट अपडेट करता हूं तो मैं इसे खो दूंगा, तो मुझे कहां तैनाती करनी चाहिए मेरे webjobs?

एक related thread नहीं है, लेकिन यह मान लिया गया है webjob एक वेबसाइट जो नहीं है क्या मैं वर्तमान में है के साथ एक साथ तैनात है।

मुझे वास्तव में वेबसाइटों और वेबबॉज पसंद हैं, लेकिन ऐसा लगता है कि वेबबॉज और वेबसाइटों की निरंतर स्वतंत्र तैनाती से संबंधित कहानी टूट गई है।

वास्तव में सलाह की सराहना करेंगे!

धन्यवाद

उत्तर

23

Azure वेबसाइटों तैनाती स्लॉट्स, समझने का एक आसान अवधारणा नहीं हैं WebJobs के साथ मिलकर यह थोड़ा और अधिक मुश्किल हो जाता है।

मैं एक बेहतर तैनाती स्लॉट्स पर समझ पाने के लिए निम्नलिखित पोस्ट पढ़ने का सुझाव - http://blog.amitapple.com/post/74215124623/deploy-azure-webjobs/

- (उपयोगी जानकारी के लिए टिप्पणी अनुभाग सहित) http://blog.amitapple.com/post/2014/11/azure-websites-slots/

कैसे WebJobs काम पर एक बेहतर समझ पाने के लिए और तैनात इस पोस्ट को देख

ऐसा नहीं है कि समझना महत्वपूर्ण है:

  1. जब तैनाती स्लॉट गमागमन आप वास्तव में 2 स्लॉट के बीच वेबसाइट की सामग्री/फ़ाइलें स्वैप।
  2. वेबजब्स वेबसाइट सामग्री का हिस्सा हैं।

तो जब आप स्लॉट को स्वैप करते हैं तो आप वास्तव में वेबजोब सहित वेबसाइट फ़ाइलों को स्वैप करते हैं।

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

यदि आप किसी एप्लिकेशन WEBJOBS_STOPPED बुलाया सेटिंग को जोड़ने और 1 के लिए सेट कर सकते हैं (नीला पोर्टल में) मचान स्लॉट पर चलने से WebJobs को रोकने के लिए। (source)। सुनिश्चित करें कि यह ऐप सेटिंग स्लॉट पर चिपचिपा है अन्यथा यह उत्पादन स्लॉट पर प्रचारित होगी।

+0

आपकी प्रतिक्रिया अमित के लिए धन्यवाद। मुझे नहीं पता था कि यह वेबजोब को सीधे तैनात करने के लिए 'खराब' अभ्यास था, विजुअल स्टूडियो एज़ूर एकीकरण वास्तव में इसे वीएस में वेबजोब प्रोजेक्ट में "Azure पर प्रकाशित करें" बटन के साथ प्रोत्साहित करता है। ऐसा लगता है कि कम से कम इसे 'खराब अभ्यास' का पालन करना आसान नहीं होना चाहिए क्या कोई ऐसी जगह है जहां मैं टीम को उस प्रतिक्रिया को प्रदान कर सकता हूं? गिट परिनियोजन मुझे wrt WebJobs बनाम क्लाउड सर्विसेज के लिए एक बड़ी जीत थी। यह कहानी को थोड़ा कमजोर करता है, क्योंकि इसका मतलब है कि वेबजोब को अपडेट करने के लिए वेबसाइट पुनर्वितरण आवश्यक है। वेबजोब के लिए –

+0

"एज़ूर को प्रकाशित करें" वेबसाइट के समान ही है, समस्याग्रस्त अभ्यास गिट परिनियोजन और "Azure पर प्रकाशित" (msdeploy) को मिलाकर एक तैनाती विधि का उपयोग करना सबसे अच्छा है। –

+0

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

1

यहाँ इस समस्या का अब तक सबसे आसान समाधान द्वारा PowerShell का उपयोग कर # 3 करने के लिए अमित का जवाब,

Function Disable-AzureSlotJobs($SiteName, $Slot = 'staging') 
{ 
    $site = Get-AzureWebsite -Name $SiteName -Slot $Slot 
    $site.AppSettings.WEBJOBS_STOPPED = "1" 
    Set-AzureWebsite -Name $SiteName -Slot $Slot -AppSettings $site.AppSettings 
    Set-AzureWebsite -Name $SiteName -SlotStickyAppSettingNames @("WEBJOBS_STOPPED") 
} 

'MySite1', 'MySite2', 'MySite3' | % { Disable-AzureSlotJobs $_ } 
2

है अपने वेब नौकरी के लिए एक अलग वेब एप्लिकेशन है। बस एक ही Azure सेवा योजना पर वर्कर वेब ऐप रखें और आपके पास एक ही मशीन पर चलने वाले दो अलग-अलग वेब ऐप्स होंगे।

वेब एप्लिकेशन वेब एप्लिकेशन कार्यकर्ता

+1

यह उपयोगी है यदि आपके पास कोई/कई ऐप सेटिंग्स नहीं हैं। दुर्भाग्य से मेरे लिए, मुझे लगभग 60 मिल गया है। मैं सिंक में दोनों ऐप सेटिंग्स को रखने के लिए याद रखना नहीं चाहूंगा – viggity

+0

मैन्युअल रूप से ऐप सेटिंग्स सेट करना एक बहुत ही जोखिम भरा अभ्यास है, एआरएम टेम्पलेट्स का उपयोग करके उन्हें स्वचालित करने पर विचार करें। –

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