2016-09-01 9 views
5

मैं डॉकर स्विम मोड में नया हूं (और मैं विशेष रूप से डॉकर v1.12 में झुंड मोड के बारे में बात कर रहा हूं, और मेरा मतलब पुराने गैर एकीकृत 'डॉकर झुंड' नहीं है)।कई विफलता डोमेनों में डॉकर स्वार मोड सेवाओं को तैनात करना

मैं एक नए सॉफ्टवेयर प्रोजेक्ट के लिए एक बड़े वितरित कंटेनर प्लेटफार्म बनाने के लिए अपनी उपयुक्तता का मूल्यांकन करने का प्रयास कर रहा हूं (मैं मेसोस्फीयर, कुबेरनेट्स एट अल जैसी समान तकनीकों की तुलना कर रहा हूं)।

पुराने गैर-एकीकृत डॉकर झुंड (झुंड मोड नहीं) की मेरी समझ यह है कि आप फिल्टर का उपयोग कर कई विफलता डोमेन पर तैनात करने के लिए नोड्स को लक्षित कर सकते हैं। क्या डॉकर स्वार मोड में समतुल्य है?

उदाहरण के लिए एक परीक्षण वातावरण में, मेरे पास 6 वीएम है - सभी चलने वाले डॉकर।

मैं वी एम 1 और 2 को शुरू करने तथा फोन है कि मेरी असफलता डोमेन 1
मैं वी एम 3 शुरू करने और 4 और फोन है कि मेरी असफलता डोमेन 2
मैं वी एम 5 को शुरू करने तथा 6 और फोन है कि मेरी असफलता DOMAIN3

सभी विफलता डोमेन में एक झुंड प्रबंधक और एक झुंड कार्यकर्ता शामिल है। असल में, मेरे पास प्रति डोमेन 2 नोड्स हैं जो सेवा कंटेनर होस्ट कर सकते हैं।

मैं डॉकर को एक नई सेवा बनाने के लिए कहता हूं, और एक साधारण वेब सेवा वाली छवि के आधार पर 3 कंटेनर चलाता हूं। डॉकर यह चीज करता है और 3 कंटेनर स्पिन करता है और मेरी सेवा चल रही है; मैं बिना किसी समस्या के अपने लोड संतुलित वेब सेवा तक पहुंच सकता हूं। हुर्रे!

हालांकि, मैं विशेष रूप से डोमेन 3, डोमेन 2 और डोमेन 3 में अपने 3 कंटेनर वितरित करने के लिए डॉकर को बताना चाहता हूं।

मैं यह कैसे कर सकता हूं? (भी - क्या मैं सही साइट पर पोस्ट कर रहा हूं - क्या यह अन्य स्टैक एक्सचेंज साइटों में से एक पर होना चाहिए?)

उत्तर

3

आप इंजन लेबल का उपयोग करना जारी रख सकते हैं जैसा कि आपके पास है। या नए झुंड के साथ आप झुंड नोड्स पर नोड लेबल परिभाषित कर सकते हैं। फिर, नए डॉकर झुंड के साथ, आप अपनी सेवा पर एक बाधा परिभाषित करेंगे और 3 अलग-अलग सेवाओं को बनाएंगे, प्रत्येक आपके विफलता डोमेन में से किसी एक में भागने के लिए बाध्य होगा।

नोड लेबल के लिए, आप docker node update --label-add az=1 vm1 का उपयोग करेंगे जो आपके vm1 नोड में az1 लेबल जोड़ देगा। अपने अन्य एजेड के लिए इस प्रक्रिया को दोहराएं (उपलब्धता क्षेत्र वह शब्द है जिसका मैं उपयोग करता हूं) और वीएम।

अब जब आपके काम का समय निर्धारण, आप एक बाधा की तरह

docker service create --constraint node.labels.az==1 \ 
    --name AppAZ1 yourimage 

एक नोड लेबल के लिए या एक इंजन लेबल के लिए जोड़ें:

docker service create --constraint engine.labels.az==1 \ 
    --name AppAZ1 yourimage 

अपने AZ के से प्रत्येक के लिए इस दोहरा।

दुर्भाग्यवश, जब आप --replicas 3 जैसे कुछ का उपयोग करते हैं तो प्रत्येक एएम के स्वचालित रूप से फैलाने के लिए एक तरीका नहीं सोच सकता है जिसमें प्रत्येक वीएम क्लस्टर में दूसरे नोड में विफलता शामिल होती है। हालांकि, यदि आप प्रत्येक कार्य के लिए एक एकल वीएम प्रति क्लस्टर चुनते हैं, तो आप उनमें से प्रत्येक को एक ही लेबल (उदा। --label-add vm=a) लेबल कर सकते हैं और फिर अपने प्रत्येक एन नोड्स पर एक सेवा चलाने के लिए --mode global --constraint node.label.vm==a कर सकते हैं।

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