2008-10-21 10 views
7

मैंने सुना है कि जावारेबेल यही करता है लेकिन क्या ईएआर के नए संस्करण को तैनात करने का कोई और अच्छा तरीका है जबकि उपयोगकर्ता पिछले संस्करण पर सक्रिय रहने की अनुमति देते हैं? हम आवेदन सर्वर के लिए जेबॉस का उपयोग करते हैं ...हॉट पर एक सर्वर के अनुप्रयोग को डाउनटाइम को कम करने या हटाने के लिए जावा ईएआर को तैनात करें?

उत्तर

5

जावारेबेल ऐसा नहीं करता है। JavaRebel (विवरण के अनुसार) कक्षाओं को स्मृति में गर्म-स्थानांतरित करता है। सिस्टम के मौजूदा कनेक्शन के मामले में यह स्वीकार्य नहीं है, क्योंकि अद्यतन कक्षाएं क्लाइंट के तर्क को तोड़ सकती हैं।

एक बार एक कंपनी मैं एक ऐसी ही समस्या थी के लिए काम कर रहा था, और यह इस तरह से हल किया गया था:

  • एक स्मार्ट रूटर एक लोड संतुलन
  • नया संस्करण 50% तक तैनात किया गया था के रूप में इस्तेमाल किया गया था (नया) क्लस्टर
  • नए कनेक्शन इन अद्यतन नोड्स सख्ती से वितरित किया गया था की नोड्स की, पुराने लोगों वर्ष नोड्स के बीच संतुलित कर रहे थे
  • वर्ष नोड्स, बंद लाइन (एक-एक करके ले लिया गया की संख्या रखने के लिए सीमा के भीतर प्रति नोड ग्राहकों)
  • एक ही समय में, नए संस्करण के बंद लाइन "पुराने" नोड्स में तैनात किया गया और वे नए नोड्स
  • EJB क्लस्टरिंग के कारण के रूप में लाया गया, सत्र और सेम अन्य पुराने नोड्स
  • अंततः द्वारा उठाया गया (कुछ ही घंटों में), केवल एक वर्ष नोड बाईं, पुराने संस्करण और पुराने संस्करण का उपयोग सभी ग्राहकों का एक उदाहरण होने
  • जब पिछले वर्ष ग्राहक डिस्कनेक्ट हो गई से जुड़े थे, उस नोड भी लाया गया

अब, मैं नेटवर्किंग लड़का नहीं हूं, और आपको कई विवरण नहीं दे सकता (जैसे राउटर हार्डवेयर और ऐसा क्या था)। मेरी समझ को यह बहुत आसान बना दिया जा सकता है, सिवाय, अगर मुझे सही याद है, तो हमें एप्लिकेशन के नए संस्करणों को तैनात करने के लिए एक अतिरिक्त वेबलॉगिक डोमेन स्थापित करना होगा (अन्यथा यह जेएनडीआई नामों पर पुराने के साथ विवादित होगा)।

आशा है कि मदद करता है।

पीएस इकोरस ने एक टिप्पणी प्रदान की जिसमें कहा गया है कि ऐप ग्राहकों के सर्वर पर तैनात है। तो राउटर चाल संभव नहीं हो सकता है। अब, मैं अभी केवल एक व्यवहार्य समाधान देख रहा हूं (यह 21:52 है, मैं चीजों को नजरअंदाज कर सकता हूं :)) -

  • "संस्करण" जेएनडीआई नामों के साथ नए संस्करण का विकास; जैसे यदि ग्राहक बीन संस्करण 1 में ईजेबी/ग्राहक के अधीन था, तो संस्करण 2 में यह ईजेबी/ग्राहक 2
  • के साथ एक स्थिर बुनियादी इंटरफेस (फैक्ट्री-स्टाइल) के साथ एक व्यावसायिक मुखौटा है, जिसे ग्राहक बीन के लिए पूछे जाने पर, उच्चतम संस्करण वाले जेएनडीआई नाम को खोजने का प्रयास करता है (बेशक, हर कॉल पर नहीं, एक घंटे या उससे भी ज्यादा कैश कर सकते हैं)। वह मुखौटा एक अलग अनुप्रयोग के रूप में तैनात किया जा सकता है (और चाहिए) - और कभी भी बहुत ही कम अपडेट नहीं किया गया
  • अब हर नए ग्राहक को तैनात नवीनतम एप्लिकेशन तक पहुंच प्राप्त होगी, और एप्लिकेशन संघर्ष नहीं करेंगे।

यह दृष्टिकोण सावधानीपूर्वक योजना और परीक्षण लेता है, लेकिन आईएमएचओ काम करना चाहिए।

मैंने हाल ही में कुछ अनुप्रयोगों को उसी डोमेन में संशोधित करने के लिए संशोधित किया है (इससे पहले कि वे अलग-अलग डेटा स्रोतों के लिए उसी जेएनडीआई नाम का उपयोग करें)।

+0

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

+0

ओह, तो आप अपने ऐप को ग्राहकों के सर्वर पर तैनात कर रहे हैं? यह निश्चित रूप से बहुत बदलता है। जब तक आप जेएनडीआई नामों में किसी प्रकार का संस्करण लागू नहीं करते हैं, तो यह असंभव है, मैं कहूंगा ... –

+0

मैं _a ** स्मार्ट राउटर पर अधिक जानना चाहता था ** लोड-बैलेंसर_ के रूप में उपयोग किया गया था, क्या आप उपयोगकर्ता सत्र की जांच करते हैं और उन्हें पुराने संस्करण में रूट करें? – Ryan

1

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

मुझे यकीन नहीं है कि अन्य एप्लिकेशन सर्वर इसका समर्थन करता है या नहीं।

रेफरी: एक लोड संतुलन का उपयोग कर के आसपास http://edocs.bea.com/wls/docs100/deployment/redeploy.html#wp1022490

+0

जानना अच्छा है! लेकिन मुझे यह देखने में कठिनाई है कि एक ही यूआरएल को संभालने वाले सर्वलेट्स के दो संस्करण कैसे मिल सकते हैं। यह सुविधा केवल आरएमआई ग्राहकों के साथ शुद्ध ईजेबी ऐप्स के लिए काम कर सकती है ... –

+0

हम्म ... असल में ... सर्वलेट सत्रों का उपयोग करना संभव है, मुझे लगता है ... –

1

व्लादिमीर के सुझाव तुम क्या चाहते प्राप्त करने के एक यकीन है कि तरीका है। ध्यान रखें, यह जरूरी नहीं है कि एक उच्च अंत हार्डवेयर लोड बैलेंसर हो। इसके बजाय, यदि आप अपने जेबॉस सर्वर को देशी वेब सर्वर (अपाचे या आईआईएस) और mod_jk या mod_proxy के साथ सामने रखते हैं, तो आप एक सामान्य वेब मुखौटा बनाए रख सकते हैं और ईएआर अपग्रेड समय पर लागू लोडिंग और रूटिंग रूटीन को कार्यान्वित कर सकते हैं।

// निकोलस