VPC के बाहर RDS उदाहरण से कनेक्ट करने में असमर्थ (ERROR 2003 (HY000) MySQL सर्वर से कनेक्ट नहीं हो सकता)


12

मैंने एक VPC बनाई है, और इसके अंदर एक RDS उदाहरण है। RDS उदाहरण सार्वजनिक रूप से सुलभ है और इसकी सेटिंग्स निम्नानुसार हैं:

आरडीएस सेटिंग्स

RDS उदाहरण से जुड़ा सुरक्षा समूह सभी ट्रैफ़िक को स्वीकार करता है:

सुरक्षा समूह सेटिंग्स

मेरे सभी नेटवर्क एसीएल सभी ट्रैफ़िक को स्वीकार करते हैं। हालाँकि, मैं अपने VPC के बाहर मशीन से अपने उदाहरण तक नहीं पहुँच सकता। मुझे निम्नलिखित त्रुटि मिलती है:

    root@vps151014:~# mysql -h mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com -P 3306 -u skullberry -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql1.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com' (110)

अगर मैं अपने VPC के अंदर EC2 से एक ही कमांड चलाता हूं, तो मैं कनेक्ट करने में सक्षम हूं। मैंने कई मशीनों से जुड़ने की कोशिश की है, उनमें से सभी बिना फ़ायरवॉल (यानी पोर्ट 3306 खुले)।

मैं स्पष्ट रूप से कुछ याद कर रहा हूं, लेकिन लगता है कि सब कुछ सही ढंग से कॉन्फ़िगर किया गया है। मामला क्या हो सकता है?


1
(110)त्रुटि संदेश में अर्थ है "कनेक्शन का समय समाप्त," इसलिए निश्चित रूप से यह एक आईपी कनेक्टिविटी समस्या है। आपका RDS उदाहरण दो सबनेट से जुड़ा होना दर्शाता है। VPC कंसोल में, उन दो सबनेट्स का डिफ़ॉल्ट मार्ग क्या है? एक "igw-xxxxxxxx" है या यह एक "i-xxxxxxxx" है?
माइकल - sqlbot

दोनों सबनेट वीपीसी के मुख्य रूट टेबल के साथ जुड़े हुए हैं ।
१४:०४ पर dazzviper

1
स्पष्ट रूप से दोनों सबनेट्स को एक कस्टम रूट टेबल के साथ जोड़ना जो वीपीसी के इंटरनेट गेटवे के लिए सभी आउटबाउंड ट्रैफिक को रूट करता है, जो भी कोई फर्क नहीं पड़ता है।
dazzviper

1
खैर, यह एक bummer है। "Igw" के लिए डिफ़ॉल्ट मार्ग सबसे संभावित लापता टुकड़ा की तरह लग रहा था ... और किसी भी घटना में यह काम करने के लिए आवश्यक होना चाहिए। यह मानते हुए कि सबनेट को तदनुसार परिवर्तित करने के बाद आपको VPC को पृष्ठभूमि में पुन: कॉन्फ़िगर करने के लिए पर्याप्त समय दिया गया है, मैं विचारों से बाहर हूं।
माइकल - sqlbot

2
आह, आप सभी आईपी पते के लिए आवश्यक ब्लॉक है 0.0.0.0/0। मैं जवाब पोस्ट करूँगा।
माइकल - sqlbot

जवाबों:


21

VPC में RDS उदाहरण के लिए "सार्वजनिक रूप से" (इंटरनेट) सुलभ, सभी सबनेट्स जो "पब्लिक" से जुड़े होने चाहिए - "प्राइवेट" - VPC के सबनेट्स के विपरीत।

एक सार्वजनिक सबनेट को अनिवार्य रूप से एक सबनेट के रूप में परिभाषित किया गया है जिसमें इंटरनेट गेटवे ऑब्जेक्ट (igw-xxxxxxxx) है जो "इंटरनेट," या कम से कम किसी भी इंटरनेट गंतव्य तक पहुंचने के लिए आपके मार्ग के रूप में है। आमतौर पर, यह एक गंतव्य पता होता है 0.0.0.0/0। सार्वजनिक सबनेट का उपयोग इंस्टेंस के लिए किया जाना चाहिए (RDS सहित) जिसमें एक संबद्ध सार्वजनिक IP पता होगा, और ऐसे उदाहरणों के लिए उपयोग नहीं किया जाना चाहिए, जिनके पास सार्वजनिक IP पते नहीं होंगे, क्योंकि निजी पते बिना अनुवाद के इंटरनेट पर काम नहीं करते हैं।

एक निजी सबनेट, इसके विपरीत, इसकी रूटिंग तालिका को एक और EC2 उदाहरण, आमतौर पर NAT उदाहरण के माध्यम से इंटरनेट गंतव्यों तक पहुंचने के लिए कॉन्फ़िगर किया गया है। यह VPC मार्ग तालिका में उस सबनेट से संबंधित है जिसे "igw" के बजाय i-xxxxxxxx के रूप में दिखाया गया है। वह मशीन (जो स्वयं, वास्तव में उन लोगों की तुलना में एक अलग सबनेट पर होगी जिसके लिए वह रूट डेस्टिनेशन के रूप में कार्य करता है) एक अनुवादक के रूप में कार्य करता है, निजी-आईपी-केवल उदाहरणों को NAT मशीन के सार्वजनिक उपयोग से पारदर्शी रूप से आउटबाउंड इंटरनेट अनुरोध करने की अनुमति देता है। उनकी इंटरनेट जरूरतों के लिए आई.पी. यदि कोई निजी सबनेट से जुड़ा है, तो सार्वजनिक IP पते वाले इंस्टेंस इंटरनेट के साथ ठीक से इंटरैक्ट नहीं कर सकते हैं।

विशिष्ट स्थिति में, यहाँ, RDS उदाहरण से जुड़े सबनेट्स को वास्तव में कुछ के रूप में कॉन्फ़िगर नहीं किया गया था, जिसे या तो निजी या सार्वजनिक सबनेट के रूप में वर्गीकृत किया जा सकता था, क्योंकि सबनेट का कोई डिफ़ॉल्ट मार्ग नहीं था। "Igw" ऑब्जेक्ट के माध्यम से एक डिफ़ॉल्ट मार्ग जोड़ना, या, जैसा कि ओपी ने किया, इंटरनेट आईपी पते के लिए एक स्थैतिक मार्ग को जोड़ना जहां कनेक्टिविटी की आवश्यकता थी, सबनेट के लिए वीपीसी मार्ग तालिका में कनेक्टिविटी समस्या को ठीक करता है।

हालाँकि ... यदि आप एक समान समस्या का अनुभव करते हैं, तो आप रूट तालिका को बदल नहीं सकते हैं या नए रूट टेबल नहीं बना सकते हैं और सबनेट को उनके साथ जोड़ सकते हैं, जब तक कि आपके पास सबनेट पर सही तरीके से काम करने के अलावा और कुछ नहीं हो, क्योंकि परिवर्तन यथोचित हो सकता है मौजूदा कनेक्टिविटी को तोड़ने की उम्मीद है। सही पाठ्यक्रम, उस स्थिति में, अलग-अलग सबनेट पर इंस्टेंस को सही रूट टेबल एंट्रीज़ के साथ व्यवस्थित करना होगा।

VPC की स्थापना करते समय, यह सबनेट भूमिकाओं को स्पष्ट रूप से परिभाषित करने के लिए आदर्श है और VPC के पहली बार चालू होने पर आवश्यक मार्गों के साथ पूरी तरह से प्रावधान करता है। यह याद रखना भी महत्वपूर्ण है कि संपूर्ण VPC "LAN" एक सॉफ्टवेयर-परिभाषित नेटवर्क है। एक भौतिक नेटवर्क के विपरीत, जहां राउटर एक अड़चन बन सकता है और यह अक्सर एक ही सबनेट पर उनके बीच भारी ट्रैफ़िक वाली मशीनों को रखने के लिए समझदार होता है ... ट्रैफ़िक क्रॉसिंग सबनेट्स का वीपीसी पर कोई प्रदर्शन नुकसान नहीं होता है। मशीनों को सबनेट पर रखा जाना चाहिए जो मशीन के आईपी पते की जरूरतों के लिए उपयुक्त हैं - सार्वजनिक पता, सार्वजनिक सबनेट; कोई सार्वजनिक पता नहीं, निजी सबनेट।

VPC में निजी / सार्वजनिक सबनेट के लॉजिस्टिक्स की अधिक चर्चा वीपीसी में व्हाट डू नीड प्राइवेट सबनेट पर (स्टैक ओवरफ्लो में) की जा सकती है।


2

इसका पहले से ही एक शानदार जवाब है, लेकिन जब आप "सार्वजनिक रूप से सुलभ" विकल्प चुनते हैं तो AWS आपके लिए एक सार्वजनिक सबनेट बनाता है। बल्कि, मेरे लिए समस्या डिफ़ॉल्ट VPC सुरक्षा समूह थी। मैं नेटवर्क एसीएल नियमों को देख रहा था - सुरक्षा समूह को नहीं । (आरडीएस में "सार्वजनिक रूप से सुलभ" विकल्प चुनना सुरक्षा समूह को जोड़ता है लेकिन स्वचालित रूप से इनबाउंड नियमों को नहीं जोड़ता है।)

RDS पर क्लिक करें और पहचान कर सुरक्षा समूह पर क्लिक करें। फिर "इनबाउंड नियम" के तहत पोर्ट 3306 जोड़ें और अपने कनेक्टिंग IPV4 एड्रेस, xxxx / 32 (या 0.0.0.0/32 - यदि आप चाहते हैं कि पूरा इंटरनेट कनेक्ट हो - लेकिन इसके साथ सावधान रहें) जोड़ें।


0

यह भी सुनिश्चित करने के लिए जांचें कि आप जिस नेटवर्क से जुड़े हैं, वह पोर्ट 3306 पर किसी अन्य सर्वर से कनेक्शन को ब्लॉक नहीं कर रहा है। मेरे कॉर्पोरेट नेटवर्क से कनेक्ट होने पर मेरे लिए यही स्थिति थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.