AWS ऑटोस्लिंग समूह से आउटगोइंग ट्रैफ़िक के लिए स्टेटिक आईपी एड्रेस


27

मैं एक VPC में एक डिफ़ॉल्ट सबनेट में एक इलास्टिक बीनस्टॉक ऑटोसालिंग समूह में कई EC2 इंस्टेंसेस रखने वाला हूं। इन EC2 इंस्टैंस पर ऐप को किसी थर्ड पार्टी सर्विस से कनेक्ट करने की ज़रूरत होती है जो एक्सेस की अनुमति देने के लिए IP एड्रेस वाइटलिस्ट का इस्तेमाल करती है। इसलिए मुझे एक या एक से अधिक स्थिर आईपी पते चाहिए जो मैं इस सेवा प्रदाता को दे सकता हूं ताकि उन्हें श्वेतसूची में जोड़ा जा सके। मेरी समझ यह है कि एक स्थिर आईपी प्राप्त करने का एकमात्र तरीका एक इलास्टिक आईपी पता प्राप्त करना है। और मैं केवल एक समय में एक EC2 उदाहरण के साथ इलास्टिक आईपी को जोड़ सकता हूं - मैं इसे अपने पूरे सबनेट या इंटरनेट गेटवे के साथ नहीं जोड़ सकता (क्या यह सही है?)। तो क्या मुझे प्रत्येक EC2 उदाहरण के लिए एक इलास्टिक आईपी की आवश्यकता है, इसलिए प्रत्येक उदाहरण को अलग से श्वेत किया जा सकता है? यदि ऑटोसालिंग एक और उदाहरण जोड़ता है तो यह कैसे काम करेगा? क्या मेरे पास एक लोचदार IP के साथ एक EC2 उदाहरण होना चाहिए, और उस उदाहरण के माध्यम से सभी आउटगोइंग ट्रैफ़िक को रूट करें? यदि हां, तो क्या इस उदाहरण को इस उद्देश्य के लिए पूरी तरह से होना चाहिए या यह उन उदाहरणों में से एक हो सकता है जो मेरा ऐप चला रहे हैं?

जवाबों:


19

आपको NAT की आवश्यकता है। यह कॉन्फ़िगरेशन आमतौर पर VPC में निजी सबनेट का समर्थन करने के लिए उपयोग किया जाता है, यहां काफी विस्तृत मार्गदर्शिका है । एक बार जब आपका VPC NAT उदाहरण का उपयोग करने के लिए कॉन्फ़िगर किया गया है तो सभी आउटबाउंड ट्रैफिक को NAT उदाहरण के EIP के लिए जिम्मेदार ठहराया जाएगा।

यदि हां, तो क्या इस उदाहरण को इस उद्देश्य के लिए पूरी तरह से होना चाहिए या यह उन उदाहरणों में से एक हो सकता है जो मेरा ऐप चला रहे हैं?

तकनीकी रूप से आप शायद कर सकते हैं, लेकिन यह एक अच्छा विचार नहीं है:

  • भूमिकाओं को अलग-थलग रखना अच्छी सुरक्षा है।
  • आप चाहते हैं कि आपके एप्लिकेशन सर्वर में समान या समान लोड प्रोफ़ाइल हों। यदि एक उदाहरण में NAT की वजह से अतिरिक्त 10% लोड होता है तो आपको उस उदाहरण की सीमा को हिट करने पर समय से पहले स्केल करना होगा। क्योंकि NAT अधिक व्यस्त हो जाएगा क्योंकि इससे अधिक उदाहरण आपके क्लस्टर में जुड़ जाएंगे।
  • आप चाहते हैं कि आपके एप्लिकेशन सर्वर समान और अल्पकालिक हों, ताकि जब भी कोई समस्या हो या आप उन्हें स्केल कर सकें, तो उन्हें फाड़ सकें और / या उनकी जगह ले सकें। एक अनुप्रयोग सर्वर जो बाकी के लिए अलग है एक प्रमुख सिरदर्द होगा।

आप हो सकता है इसके साथ दूर होने के लिए सक्षम हो अगर आपके उदाहरणों कंटेनरीकृत कर रहे हैं लेकिन यह अभी भी शायद एक बहुत अच्छा विचार नहीं है।

यह भी ध्यान रखें कि आपका NAT उदाहरण विफलता का एकल बिंदु हो सकता है, इसलिए आप अतिरेक के बारे में सोचना चाह सकते हैं।


NAT का उपयोग करने से एक अतिरिक्त इंटरफ़ेस b / w क्लाइंट और सर्वर को जोड़ने के अनुरोध का प्रतिक्रिया समय बढ़ जाएगा?
आर। भारद्वाज

1
मैंने उद्देश्य को प्राप्त करने के लिए NAT गेटवे का उपयोग किया है ( docs.aws.amazon.com/elasticbeanstalk/latest/dg/vpc-rds.html ), लेकिन फिर भी जब मैं अपने सर्वर पर nslookup करता हूं तो यह किसी भी सार्वजनिक आईपी पते पर लौट रहा होता है प्रवेशद्वार
r.bhardwaj

12

मैं समझता हूं कि यह एक पुराना धागा है - किसी ऐसे व्यक्ति के लिए, जिसके पास अब समान उपयोग का मामला है, AWS नेट-गेटवे एक बेहतर समाधान होगा।


4

उपरोक्त उत्तरों पर टिप्पणी करने के लिए मेरे पास पर्याप्त प्रतिष्ठा नहीं है, लेकिन मैं इसे प्राप्त करने के लिए एक नेट गेटवे का उपयोग करते हुए आपको कुछ जानकारी जोड़ना चाहता हूं जो आपको जानना होगा। जब आप NAT गेटवे बनाते हैं, तो आप एक सबनेट और एक इलास्टिक आईपी एड्रेस का चयन करते हैं।

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

समाधान है, इससे पहले कि आप अपना NAT गेटवे बनाएं, NAT के लिए एक नया सबनेट बनाएं, ताकि NAT का अपना सबनेट और रूट टेबल हो। NAT के रूट टेबल में, इंटरनेट गेटवे के सभी ट्रैफ़िक को इंगित करें। अपनी मुख्य मार्ग तालिका में, अपने बाहरी IP को NAT में इंगित करें। फिर, जब आपके EC2 इंस्टेंस आपके बाहरी आईपी से जुड़ने की कोशिश करते हैं, तो वे उन्हें मुख्य रूट टेबल (या आपके रूट के सबनेट्स के लिए आपने जो रूट टेबल परिभाषित किया है) में देखेंगे, और NAT खोजें। फिर, आपका NAT उस आईपी को अपने रूट टेबल में देखेगा, और इंटरनेट को ढूंढेगा।


मैं शायद कुछ स्क्रीन शॉट्स देखना पसंद करूंगा। मुझे लगता है कि यह मेरी समस्या है, लेकिन इसे केवल 50% तक
भुना सकते हैं

मुझे लगता है कि मेरे पास इस तरह का सेटअप है, लेकिन जब मैं अपने उदाहरण के सार्वजनिक आईपी में ssh करने की कोशिश करता हूं तो यह कई बार खत्म हो जाता है। उदाहरण के लिए नेट के माध्यम से जाने और सार्वजनिक आईपी से आने वाले कनेक्शन प्राप्त करने में सक्षम होने के लिए दो नेटवर्क उपकरणों की आवश्यकता होगी?
justin.m.chase 16

आपको एक दूसरे नेटवर्क इंटरफ़ेस को एक इंस्टेंस में जोड़ना होगा और इसे बाहरी सबनेट पर, फिर उस नेटवर्क इंटरफ़ेस में एक लोचदार आईपी असाइन करना होगा। फिर आप उस आईपी के माध्यम से इसे कनेक्ट कर सकते हैं लेकिन अन्य सभी ट्रैफ़िक अभी भी डिफ़ॉल्ट रूप से नेट के माध्यम से जाएंगे।
justin.m.chase
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.