क्या मुझे डॉक कंटेनर को स्केल करने के लिए AWS इलास्टिक बीनस्टॉक या Amazon EC2 कंटेनर सर्विस (ECS) का उपयोग करना चाहिए?


81

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

अब तक, इलास्टिक बीनस्टॉक मल्टी-कंटेनर-एनवायरनमेंट का समर्थन करता है। यह बहुत अच्छा है क्योंकि हर microservice में डॉकटर कंटेनर के अंदर अपना स्वयं का एप्लिकेशन सर्वर होता है। अगली समस्या स्केलिंग है:

मैं नहीं जानता कि स्केलिंग तंत्र कैसे काम करता है। उदाहरण के लिए: मेरे इलास्टिक बीनस्टॉक पर्यावरण में 5 डॉकटर कंटेनर हैं। अब केवल पाँचवाँ डॉकटर कंटेनर भारी भार के अधीन है, क्योंकि इसमें SQS संदेशों को संसाधित करने के लिए भारी मात्रा में है, अन्य चार लगभग निष्क्रिय हैं, क्योंकि उन्हें बहुत अधिक CPU की आवश्यकता नहीं है या शायद बहुत सारे SQS संदेशों की आवश्यकता नहीं है। मान लें कि 5 वाँ कंटेनर JBoss एप्लिकेशन सर्वर चलाता है। जहाँ तक मुझे पता है, सर्वर केवल एक सीमित मात्रा में समानांतर अनुरोधों का उपभोग कर सकता है, भले ही पर्याप्त सीपीयू / मेमोरी उपलब्ध हो।

यदि JBoss डॉकटर कंटेनर अनुरोधों की मात्रा को संभालने में सक्षम नहीं है, लेकिन पर्याप्त CPU / मेमोरी उपलब्ध है, तो निश्चित रूप से मैं उसी उदाहरण पर स्वचालित रूप से एक दूसरा Docker / JBoss कंटेनर शुरू करना चाहता हूं। लेकिन क्या होता है, अगर मेरे पास पर्याप्त सीपीयू / मेमोरी नहीं है? बेशक मैं एक दूसरे उदाहरण पर स्पिन करना चाहता हूं, जो ईबी में एक ऑटो-स्केलिंग समूह के माध्यम से कॉन्फ़िगर करने योग्य है। अब एक दूसरा उदाहरण सामने आता है, लेकिन 5 वें को छोड़कर प्रत्येक कंटेनर लगभग निष्क्रिय है, निश्चित रूप से मैं नहीं चाहता कि उन्हें दूसरे उदाहरण पर भी 4 अनावश्यक स्पॉन करें, जो संसाधनों की बर्बादी होगी। केवल 5 वें स्थान पर होना चाहिए और दूसरों को 5 वें पैमाने की तरह कॉन्फ़िगर करने योग्य मापदंडों पर आधारित होना चाहिए जैसे कि: सीपीयू / मेमोरी / एसक्यूएस।

मुझे ठीक से पता नहीं है कि अमेज़ॅन ईसीएस ऐसा कर रहा है, या यदि यह संभव है, लेकिन मैं वास्तव में इस विषय के बारे में इंटरनेट पर कोई स्रोत नहीं पा सकता हूं, जो सामान्य रूप से कहा जाता है, उदाहरणों / कंटेनरों के आधार पर स्केलिंग।


क्या आपको लगता है कि आपकी समस्या हल हो गई है? मुझे ईबी के बारे में एक समान चिंता है, मुझे संदेह है कि यह सभी 5 कंटेनरों को एक अलग उदाहरण में लॉन्च करता है
कैमरन सिंगे

3
मैं भी उलझन में हूं। चयनित उत्तर वास्तव में यह नहीं बताता है कि स्केलिंग दोनों सेवाओं में कैसे काम करती है। इसके अलावा ईसीएस / ईबी वास्तव में एक और 5 वें कंटेनर की किक करता है और फिर पर्याप्त संसाधन होने पर एक ही उदाहरण के समानांतर दोनों चलाता है?
कोडपुश्र

जवाबों:


69

ईबी बनाम ईसीएस वास्तव में नियंत्रण के लिए नीचे आता है। क्या आप अपनी स्केलिंग और क्षमता को नियंत्रित करना चाहते हैं या क्या आप चाहते हैं कि अधिक सार और इसके बजाय मुख्य रूप से अपने ऐप पर ध्यान केंद्रित करें। ईसीएस आपको नियंत्रण देगा, क्योंकि आपको क्लस्टर में आकार और संख्याओं को निर्दिष्ट करना होगा और ऑटो-स्केलिंग का उपयोग करना चाहिए या नहीं। EB के साथ, आप बस एक Dockerfile प्रदान करते हैं और EB आपकी संख्या और नोड्स के आकार के प्रावधान को मापता है, आप मूल रूप से EB मार्ग के साथ बुनियादी ढांचे के बारे में भूल सकते हैं।

यहाँ डॉकर पर ईबी प्रलेखन: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.html

ECS के साथ आपको पहले बुनियादी ढाँचे का निर्माण करना होगा, इससे पहले कि आप Dockerfile को तैनात करना शुरू कर सकें इसलिए यह वास्तव में बुनियादी ढांचे के साथ 1) आपकी परिचितता और प्रयास के 2 स्तर) जिसे आप आधारभूत संरचना ऐप पर खर्च करना चाहते हैं।


7
हां, लेकिन दोनों सेवाओं के ऑटो-स्केलिंग तंत्र कैसे काम करता है, इलास्टिक बीनस्टॉक कंटेनर को प्रति कंटेनर में स्केल करता है, इसलिए यदि केवल एक लोड के तहत है, तो यह केवल एक को मापता है, या क्या यह हमेशा इंस्टेंसेस को स्केल करता है और सभी को शुरू करता है कंटेनर, कोई फर्क नहीं पड़ता कि वे किस लोड के तहत हैं?
परिक्रमा

6
अब ECS GA है, EB, ECS को मल्टी-कंटेनर इन्फ्रास्ट्रक्चर प्रदान करने के लिए इसका लाभ उठाता है। ऑटो-स्केलिंग को विशिष्ट EC2 ऑटो स्केलिंग समूह आदिम का उपयोग करके किया जाता है। ऊपर या नीचे पैमाने पर ट्रिगर करने वाला कारक हालांकि कंटेनर नहीं है लेकिन उदाहरण नोड है। यानी अगर नेटवर्क इंटरफेस ट्रैफिक, या सीपीयू लोड या डिस्क लोड एक निश्चित सीमा तक पहुंचता है, तो क्लस्टर बाहर या बाहर हो सकता है। इसलिए आपके उदाहरण में, यदि 5 वें कंटेनर का नोड भारी सीपीयू लोड के तहत था तो आप एक ऑटो स्केलिंग ग्रुप ट्रिगर सेट कर सकते हैं। उस पर।
एलनविल

आपकी सहायता के लिए यहां कुछ संसाधन दिए गए हैं: aws.amazon.com/blogs/aws/aws-elastic-beanstalk-for-docker docs.aws.amazon.com/elasticbeanstalk/latest/bg/…
alanwill

यह भी ध्यान दें कि आप एडब्ल्यूएस फारगेट का उपयोग करके अधिक नियंत्रित कंटेनर-उन्मुख ईसीएस दृष्टिकोण और डीफ़र क्लस्टर नियंत्रण जिम्मेदारी के साथ रह सकते हैं
dululter

मूल्य निर्धारण के बारे में कैसे? क्या यह अलग है?
डैनियल विलाला

12

एक मृत प्रश्न को फिर से जीवित करने के लिए नहीं, लेकिन उम्मीद है कि यह किसी की मदद करता है।

स्वीकृत उत्तर पर्याप्त नहीं है: ओपी ने जो वर्णन किया है उसके आधार पर, ओपी ईसीएस चाहता है, न कि मल्टी-कंटेनर इलास्टिक बीनस्टॉक (एमसीईबी)। जहाँ तक मैं बता सकता हूँ, MCEB कभी भी कुशलता से उदाहरणों में कंटेनर पैक करने का प्रयास नहीं करता है। ओपी एक टिप्पणी में पूछता है, "यदि केवल एक ही भार के अधीन है, तो यह केवल एक को मापता है, या क्या यह हमेशा उदाहरणों को मापता है और सभी कंटेनरों को शुरू करता है, कोई फर्क नहीं पड़ता कि वे किस भार के तहत हैं?" और उत्तर "बाद" है; MCEB उदाहरणों को मापता है और सभी कंटेनरों को शुरू करता है, चाहे वे किसी भी भार के अधीन हों।

संपादित करें

उस वास्तुकला का उपयोग न करें जिसकी आप कल्पना कर रहे हैं।

आपके माइक्रोसर्विसेस कितने माइक्रो हैं? क्या उन्हें प्रत्येक t2.nano देना हास्यास्पद होगा? फिर उन्हें एक-कंटेनर डॉकटर ईबी ऐप बनाएं - ईबी कार्यकर्ता अनुप्रयोगों को एसक्यूएस संदेशों द्वारा संचालित किया जा सकता है। या एपेक्स का उपयोग करें

1/31/18 संपादित करें:

AWS फ़रगेट बहुत अच्छा लगता है।

संपादित करें 6/5/19:

यदि आपको एक खुजली को पूरा करने के लिए कंटेनरों को ऑर्केस्ट्रेट करने की आवश्यकता है, तो ईकेएस का उपयोग करें। लेकिन वास्तव में, इससे बचने की कोशिश करें। वितरित सिस्टम कठिन हैं।


1
यह ठीक यही करता है। हमारे लिए यह एक बहुत बड़ा मुद्दा नहीं है क्योंकि हम अपने ऐप्स को स्टैक फैशन में बनाते हैं जहां यह आमतौर पर ठीक है कि वे एक साथ बढ़े हुए हैं। यदि इसे स्वतंत्र रूप से स्केल करने के लिए किसी एप्लिकेशन की आवश्यकता है, तो मैं कहूंगा कि ईबी पर एक और ऐप होना चाहिए। मैं वास्तव में एक अच्छे परिदृश्य के बारे में सोचने की कोशिश कर रहा हूं जहां इसकी जरूरत है। मैं इस इच्छा को बताते हुए लोगों के कई मामलों को पढ़ रहा हूं और मैं तय नहीं कर सकता कि क्या यह सिर्फ अकादमिक है, एक डिजाइन मुद्दा है, या वास्तव में वैध मामला है।
जैकब थॉमसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.