2017-06-04 42 views
18

मैं एक डॉकर स्वर्म सेवा के रूप में एक आदि क्लस्टर को तैनात करने का एक तरीका ढूंढना चाहता हूं जो स्वचालित रूप से बिना किसी बातचीत के स्वयं को कॉन्फ़िगर करेगा। मूल रूप से, मैं इस आदेश की भावना में कुछ के बारे में सोच:एक डॉकर स्वाद सेवा के रूप में एक आदि क्लस्टर की स्वचालित स्व-कॉन्फ़िगरेशन

docker service create --name etcd --replicas 3 my-custom-image/etcd 

मैं यह सोचते हैं रहा है कि ओवरले नेटवर्क को सुरक्षित हो सकता है और दोनों एन्क्रिप्शन और प्रमाणीकरण प्रदान करने के लिए कॉन्फ़िगर किया गया है, तो मेरा मानना ​​है कि मैं टीएलएस की जरूरत नहीं है, यहां तक ​​कि नहीं --auto-tls। प्रमाण पत्रों को प्रावधान करने के लिए एक अतिरिक्त सिरदर्द नहीं ढूंढना चाहते हैं, जब इसे किसी अन्य परत पर हल किया जा सकता है।

मुझे प्रत्येक उदाहरण के लिए एक अद्वितीय --name की आवश्यकता है, लेकिन मैं इसे एंट्रीपॉइंट स्क्रिप्ट से प्राप्त कर सकता हूं जो export ETCD_NAME=$(hostname --short) का उपयोग करेगा।

समस्या यह है कि, मैं प्रारंभिक कॉन्फ़िगरेशन पर फंस गया हूं। clustering guide के आधार पर तीन विकल्प हैं, लेकिन कोई भी फिट करने के लिए लगता है:

  • डीएनएस खोज परिदृश्य है कि मैं क्या तलाश कर रहा हूँ के सबसे करीब है, लेकिन डोकर पल में doesn't support DNS SRV records खोज। मैं etcd देख सकता हूं और मुझे अपने नोड्स के कंटेनर के सभी आईपी मिलेंगे, लेकिन _etcd-server._tcp रिकॉर्ड नहीं हैं।
  • मैं स्वचालित रूप से ETCD_INITIAL_CLUSTER नहीं बना सकता क्योंकि मुझे आईपी पता है, मुझे अन्य नोड्स के नाम नहीं पता हैं और मुझे उनको समझने के किसी भी तरीके से अवगत नहीं है। (मैं इसके लिए आदि कंटेनर पर डॉकर एपीआई सॉकेट का पर्दाफाश नहीं करने जा रहा हूं।)
  • कोई पूर्ववर्ती आदि क्लस्टर नहीं है, और प्रारंभिक कॉन्फ़िगरेशन यूआरआई की खोज करते समय discovery.etcd.io एक संभावित कामकाज है जिसमें मुझे रूचि है ऐसा नहीं कर रहा मेरा लक्ष्य है "बस इस docker-compose.yml से एक ढेर को तैनात करें और यह स्वचालित रूप से सही काम करेगा, कोई प्रश्न नहीं पूछा" नो-ब्रेनर परिदृश्य।

क्या कोई चाल है जिसे मैं खींच सकता हूं?

उत्तर

2

के रूप में आप सही ढंग से कहा है आप अपने नोड्स 'कंटेनरों के आईपी पता है, तो सुझाव चाल बस प्रत्येक नोड के आईपी पते के डेरिवेटिव के रूप में आवश्यक etcd नाम का निर्माण करना है।

  • प्रत्येक कंटेनर etcd अंदर का उपयोग कर के नाम पर है इस विशेष कंटेनर के आईपी यानी
  • ETCD_INITIAL_CLUSTER एक समान तरीके से अन्य कंटेनरों 'आईपी का उपयोग कर

नाम या यहाँ तक कि के रूप में सरल हो सकता है से भर जाता है बेहतर अर्थ है कि हम नाम बनाने के लिए इस नेटवर्क पर नोड के आईपी की गणना करने के लिए netmask का उपयोग कर सकते हैं।

इस मामले में एक साधारण 3 नोड्स विन्यास एक की तरह etcd-02etcd-03 आदि

कोई विशिष्ट आवश्यकताओं name विशेषता के लिए मौजूद नामों होने लग सकती है में, यह सिर्फ अद्वितीय और मानव पठनीय होने की जरूरत है। हालांकि यह वास्तव में एक चाल की तरह दिखता है, यह

+0

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

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