आइए उस पर विस्तार करें जो हमने कुछ हफ्ते पहले CentOS 7.2 के साथ शुरू किया था। उस गाइड में, हमने सीखा कि डॉकर 1.12 में अंतर्निहित मूल क्लस्टरिंग और ऑर्केस्ट्रेशन कार्यक्षमता को कैसे आरंभ और प्रारंभ किया जाए। लेकिन हमारे पास केवल हमारा मैनेजर नोड था और कोई अन्य वर्कर नहीं। आज, हम इसका विस्तार करेंगे।
मैं आपको दिखाऊंगा कि स्वार्म में गैर-सममित नोड्स कैसे जोड़े जाएं, यानी एक फेडोरा 24 जो हमारे CentOS बॉक्स के साथ-साथ बैठेगा, और वे दोनों क्लस्टर में भाग लेंगे, सभी संबंधित फैंसी लोड बैलेंसिंग और क्या नहीं के साथ। बेशक, यह तुच्छ नहीं होगा, और हम कुछ अड़चनों का सामना करेंगे, और इसलिए यह काफी दिलचस्प होना चाहिए।
पूर्वापेक्षाएँ
कई चीजें हैं जिन्हें हमें अतिरिक्त नोड्स को स्वार्म में सफलतापूर्वक जोड़ने से पहले करने की आवश्यकता है। एक, आदर्श रूप से, सभी नोड्स को डॉकर के समान संस्करण पर चलना चाहिए, और यह मूल ऑर्केस्ट्रेशन का समर्थन करने के लिए कम से कम 1.12 होना चाहिए। CentOS की तरह, फेडोरा के रेपो में नवीनतम संस्करण नहीं है, इसलिए आपको मैन्युअल रूप से सही सॉफ़्टवेयर संस्करण को जोड़ना और इंस्टॉल करना होगा, या तो मैन्युअल रूप से या डॉकर रिपॉजिटरी का उपयोग करके, और फिर कुछ निर्भरता संघर्षों को ठीक करना होगा। मैंने आपको CentOS के साथ ऐसा करना दिखाया है, और अभ्यास समान है।
इसके अलावा, आपके सभी नोड्स को एक दूसरे के साथ संवाद करने में सक्षम होना चाहिए। रूटिंग और फ़ायरवॉल नियम होने चाहिए ताकि मैनेजर और वर्कर आपस में बात कर सकें। अन्यथा, आप नोड्स को स्वार्म में शामिल नहीं कर पाएंगे। समस्याओं को हल करने का सबसे आसान तरीका अस्थायी रूप से फ़ायरवॉल नियमों को फ्लश करना है (iptables -F), लेकिन यह आपकी सुरक्षा को कमजोर कर सकता है। सुनिश्चित करें कि आप पूरी तरह से समझते हैं कि आप क्या कर रहे हैं, और आप अपने नोड्स और पोर्ट के लिए सही नियम बनाते हैं।
Error response from daemon: Timeout was reached before node was joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node.
आपके होस्ट पर समान डॉकर इमेज उपलब्ध होनी चाहिए। हमारे पिछले ट्यूटोरियल में, हमने एक Apache इमेज बनाई थी, और आपको अपने वर्कर नोड्स पर भी ऐसा ही करना होगा, या बनाई गई इमेज को वितरित करना होगा। यदि आप ऐसा नहीं करते हैं, तो आपको त्रुटियों का सामना करना पड़ेगा। यदि आपको डॉकर सेटअप में मदद चाहिए, तो कृपया मेरा परिचय गाइड और नेटवर्किंग ट्यूटोरियल पढ़ें।
7vwdxioopmmfp3amlm0ulimcu \_ websky.11 my-apache2:latest localhost.localdomain Shutdown Rejected 7 minutes ago "No such image: my-apache2:lat&"
शुरू करते हैं
तो हमारे पास हमारा CentOS बॉक्स चालू और चल रहा है, और यह सफलतापूर्वक कंटेनर स्पॉन कर रहा है। आप होस्ट पोर्ट का उपयोग करके सेवाओं से जुड़ने में सक्षम हैं, और सब कुछ बढ़िया दिखता है। फिलहाल, आपके स्वार्म में केवल मैनेजर है।
वर्कर्स को जोड़ें
नए नोड्स जोड़ने के लिए, आपको join कमांड का उपयोग करना होगा। लेकिन पहले आपको यह पता लगाना होगा कि वर्कर नोड्स पर उन्हें स्वार्म मैनेजर के खिलाफ सही ढंग से प्रमाणित करने के लिए कौन सा टोकन, IP पता और पोर्ट प्रदान करना होगा। फिर निष्पादित करें (फेडोरा पर)।
[root@localhost ~]# docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-0xvojvlza90nrbihu6gfu3qm34ari7lwnza ... \ 192.168.2.100:2377
यदि आप फ़ायरवॉल और रूटिंग नियमों को ठीक नहीं करते हैं, तो आपको टाइमआउट त्रुटियां मिलेंगी। यदि आप पहले ही स्वार्म में शामिल हो चुके हैं, तो join कमांड को दोहराने से अपना शोर पैदा होगा:
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
यदि कभी संदेह हो, तो आप स्वार्म छोड़ सकते हैं और फिर से प्रयास कर सकते हैं:
[root@localhost ~]# docker swarm leave Node left the swarm. docker swarm join --token SWMTKN-1-0xvojvlza90nrbihu6gfu3qnza4 ... 192.168.2.100:2377 This node joined a swarm as a worker.
वर्कर नोड पर, आप स्थिति की जांच करने के लिए docker info का उपयोग कर सकते हैं:
Swarm: active NodeID: 2i27v3ce9qs2aq33nofaon20k Is Manager: false Node Address: 192.168.2.103
इसी तरह, मैनेजर पर:
Swarm: active NodeID: cneayene32jsb0t2inwfg5t5q Is Manager: true ClusterID: 8degfhtsi7xxucvi6dxvlx1n4 Managers: 1 Nodes: 3 Orchestration: Task History Retention Limit: 5 Raft: Snapshot Interval: 10000 Heartbeat Tick: 1 Election Tick: 3 Dispatcher: Heartbeat Period: 5 seconds CA Configuration: Expiry Duration: 3 months Node Address: 192.168.2.100
सेवाएं बनाएं या स्केल करें
अब, हमें यह देखने की जरूरत है कि क्या और कैसे डॉकर नोड्स के बीच कंटेनरों को वितरित करता है। मेरा परीक्षण बहुत हल्के लोड के तहत एक बल्कि सरल संतुलन एल्गोरिदम दिखाता है। एक या दो बार, डॉकर ने नई सेवाओं को स्केल और अपडेट करने का प्रयास करने के बाद भी, मौजूदा सेवाओं को नए वर्कर्स को पुनर्वितरित करने की कोशिश नहीं की। इसी तरह, एक अवसर पर, इसने वर्कर नोड पर पूरी तरह से एक नई सेवा बनाई। शायद यह सबसे अच्छा विकल्प था।
नई सेवा पूरी तरह से वर्कर नोड पर बनाई गई।
कुछ समय बाद, मौजूदा सेवाओं के लिए दोनों के बीच कंटेनरों का कुछ पुनर्वितरण था, लेकिन इसमें कुछ समय लगा। नई सेवाओं ने ठीक काम किया। यह केवल एक प्रारंभिक अवलोकन है, इसलिए मैं इस बिंदु पर अधिक कुछ नहीं कह सकता। अभी के लिए, यह अन्वेषण और ट्वीकिंग शुरू करने के लिए एक अच्छा प्रारंभिक बिंदु है।
कुछ समय बाद लोड बैलेंसिंग शुरू होती है।
निष्कर्ष
डॉकर एक साफ-सुथरा छोटा जानवर है, और यह केवल बड़ा, अधिक जटिल, अधिक शक्तिशाली, और निश्चित रूप से, अधिक सुंदर होता रहेगा। यह केवल समय की बात है इससे पहले कि इसे एक बड़े, रसदार उद्यम द्वारा खा लिया जाए। जब इसके मूल ऑर्केस्ट्रेशन की बात आती है, तो स्वार्म मोड काफी अच्छी तरह से काम करता है, लेकिन इसके एल्गोरिदम और स्केलेबिलिटी की शक्ति का पूरी तरह से उपयोग करने के लिए केवल कुछ कंटेनरों से अधिक की आवश्यकता होती है।
मेरा ट्यूटोरियल दिखाता है कि कैसे एक CentOS बॉक्स द्वारा चलाए जा रहे क्लस्टर में एक फेडोरा नोड जोड़ा जाए, और दोनों साथ-साथ ठीक काम करते हैं। लोड बैलेंसिंग के आसपास कुछ सवाल हैं, लेकिन यह कुछ ऐसा है जिसका मैं भविष्य के लेखों में पता लगाऊंगा। कुल मिलाकर, मुझे उम्मीद है कि यह एक सार्थक सबक था। हमने कुछ पूर्वापेक्षाओं और सामान्य समस्याओं से निपटा है जिनका सामना आप स्वार्म सेटअप करने की कोशिश करते समय कर सकते हैं, हमने एक गुच्छा कंटेनर चलाए, और हमने संक्षेप में यह भी छुआ कि सेवाओं को कैसे स्केल और वितरित किया जाए। और याद रखें, यह तो बस एक शुरुआत है।
Cheers.