आदर्श लक्ष्य परिदृश्य
हां, आपको एक लोड बैलेंसर का उपयोग करना चाहिए और एक समय में एक उदाहरण को अपडेट करना चाहिए। मुझे यकीन नहीं है कि अंतर-कंटेनर संचार कहाँ आता है।
एक उदाहरण के रूप में, कल्पना कीजिए कि आपके पास एक लोड बैलेंसर है जो आपकी साइट को सेवा प्रदान करता है। उपयोगकर्ता केवल इसे कनेक्ट करते हैं और केवल इसे "ए" के रूप में जानते हैं। लोड बैलेंसर जानता है कि दो या अधिक बैकेंड (बी, सी, आदि) हैं, और क्या वे वीएम या कंटेनर हैं, इससे कोई फर्क नहीं पड़ता।
फिर, आप बैकएंड को अपग्रेड करना चाहते हैं, जो इस मामले में अपाचे उदाहरण हैं।
- B लोड बैलेंसर के लिए योग्य बैकएंड से बाहर ले जाएं ताकि यह अब किसी ट्रैफ़िक को स्वीकार नहीं कर रहा है।
- वर्तमान में दिए जाने वाले अनुरोधों की प्रतीक्षा करें और मौजूदा कनेक्शन बंद कर दिए जाएं।
- कंटेनर या अंतर्निहित VM को अपडेट करें जो B की सेवा करता है
- बी को पुनरारंभ करें, इसे लोड करने और काम करना शुरू करने के लिए प्रतीक्षा करें
- यह सुनिश्चित करने के लिए B परीक्षण करें कि यह नए अनुरोधों की ठीक से सेवा कर रहा है
- ट्रैफ़िक को फिर से सक्षम करने के लिए लोड बैलेंसर बैकएंड पूल में वापस बी जोड़ें
फिर, सी, डी, आदि के लिए एक ही प्रक्रिया करें।
ध्यान दें कि डॉकर कंटेनर के इन-प्लेस अपग्रेड के लिए नवंबर 2013 से एक खुला अनुरोध है , लेकिन यह बहुत प्रगति के लिए प्रकट नहीं होता है इसलिए उपरोक्त समाधान वह है जो आपको मतलब समय में करना चाहिए।
मौजूदा लाइव साइट के लिए क्या करें
संभवतः, आप यह इसलिए पूछ रहे हैं क्योंकि आप पहले से ही इस मॉडल में एक लाइव साइट चला रहे हैं और आप इसे डाउनटाइम के बिना अपग्रेड करना चाहते हैं। इसलिए, हमें ऊपर दिए गए आदर्श लक्ष्य राज्य में जाने की आवश्यकता है, लेकिन वृद्धिशील रूप से।
मान लेते हैं कि:
- आपके पास अपने कंटेनर को इंगित करने वाला DNS नाम है
- आपका कंटेनर कुछ IP पते पर चलता है
- आपके उपयोगकर्ता कंटेनर के IP पते को नहीं जानते हैं और यह कहीं भी हार्ड-कोडेड नहीं है
यदि ये धारणाएँ झूठी हैं, तो आपको पहले इसे ऐसे ठीक करना चाहिए कि यह सही है।
फिर, इन चरणों का पालन करें:
- एक नए आईपी में एक लोड बैलेंसर बनाएं और इसे मौजूदा कंटेनर में केवल बैकएंड के रूप में इंगित करें
- सीधे कंटेनर आईपी के बजाय लोड बैलेंसर को इंगित करने के लिए डीएनएस बदलें
- समान VM + कंटेनर सेटअप के साथ एक समान Apache बैकएंड जोड़ें
- अब आपके पास दो बैकेंड बी और सी के साथ एक लोड बैलेंसर है, इसलिए उन्हें एक बार में अपग्रेड करने के लिए "आदर्श लक्ष्य परिदृश्य" अनुभाग में निर्देशों का पालन करें
कैसे एक लोड बैलेंसर अद्यतन करने के लिए
आसान (होस्टेड) तरीका
सबसे आसान विकल्प है कि आप अपना खुद का बैलेंसर न चलाएं। उदाहरण के लिए, यदि आप क्लाउड प्लेटफ़ॉर्म का उपयोग कर रहे हैं जो सेवा के रूप में लोड संतुलन प्रदान करता है, तो इसका उपयोग करने पर विचार करें और फिर लोड बैलेंसर के रखरखाव और अद्यतन कोई समस्या नहीं है।
मैनुअल तरीका है
यदि आप अपना खुद का लोड बैलेंसर चला रहे हैं, तो अप्रत्यक्ष (यानी, DNS) की एक और परत जोड़ने से मदद मिलेगी। चलो निम्नलिखित मान लेते हैं:
- हमारे पास हमारे लोड बैलेंसर ए के आईपी को हल करने वाला एक होस्ट नाम है जिसे हम अपडेट करना चाहते हैं
- हमारे लोड बैलेंसर में P1, P2, आदि का बैकेंड पूल है।
हम निम्नानुसार आगे बढ़ते हैं:
और आपने कल लिया।
विवरण, आरेख, और टूलींग
इन राइट-अप और टूल को देखें जो प्रक्रिया को स्वचालित करने में आपकी मदद कर सकते हैं, लेकिन सामान्य विचार समान है:
सीख
"कंप्यूटर विज्ञान में सभी समस्याओं को परोक्ष के एक और स्तर द्वारा हल किया जा सकता है, बहुत अधिक अप्रत्यक्ष की समस्या के लिए पाठ्यक्रम को छोड़कर।" - डेविड व्हीलर