एक मौजूदा आरडीएस उदाहरण को इलास्टिक बीनस्टॉक पर्यावरण से कैसे जोड़ा जाए?


22

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

इलास्टिक बीनस्टाक कॉन्फ़िगरेशन पृष्ठ कहता है:

आपके पास डेटाबेस नहीं है।  आप एक नया आरडीएस डेटाबेस बना सकते हैं या मौजूदा डेटाबेस का उपयोग कर सकते हैं।

यद्यपि पहला लिंक एक RDS उदाहरण को इन-प्लेस बनाता है और वर्तमान परिवेश से जोड़ता है, लेकिन दूसरा लिंक इस दस्तावेज़ पृष्ठ पर पुनर्निर्देशित करता है , जो दुर्भाग्यवश केवल यह बताता है कि एक नया आरडीएस उदाहरण कैसे बनाया जाए, लेकिन किसी मौजूदा लिंक को कैसे जोड़ा जाए।

मैं एक मौजूदा आरडीएस उदाहरण को अपने इलास्टिक बीनस्टॉक पर्यावरण से कैसे जोड़ सकता हूं?

जवाबों:


24

"चयनित" उत्तर सही है, लेकिन मैं कुछ अतिरिक्त जानकारी जोड़ना चाहता था क्योंकि ईबी और आरडीएस का उपयोग करने वाले अधिकांश लोगों को एक ही आवश्यकता होनी चाहिए - भले ही वे अभी तक इसे नहीं जानते हों।

पहला सवाल : आप ईडी वातावरण के बाहर आरडीएस का उदाहरण क्यों देना चाहेंगे? उत्तर : ताकि आरडीएस उदाहरण का जीवनकाल ईबी वातावरण के जीवनकाल से बंधा न हो। जब आप किसी वातावरण को निकालते हैं, तो आप इसके साथ DB को नष्ट नहीं करना चाहते हैं। बहुत कम कारण हैं कि आप वास्तव में अपने RDS उदाहरण को अपने परिवेश से बाँधना चाहते हैं।

ईबी के स्वतंत्र रूप से आरडीएस की सेटिंग्स के साथ एक समस्या यह है कि आपको आरडीएस_ * वैरिएबल स्वचालित रूप से नहीं मिलते हैं और इसलिए उन्हें अपने मूल्यों को प्राप्त करने और वेब कंसोल या .ebextensions के माध्यम से अपने आप को आबाद करने की आवश्यकता है। यह अनुशंसित नहीं है कि आप अपने कोड में क्रेडेंशियल जोड़ते हैं, हालांकि यह एक सुरक्षा छेद हो सकता है।

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

आदर्श समाधान EB के लिए एक वृद्धि है, ताकि प्रश्न में उल्लिखित "एक मौजूदा डेटाबेस का उपयोग करें" लिंक वास्तव में आपको मौजूदा RDS डेटाबेस को मैन्युअल रूप से संबद्ध करने देता है और फिर RDS_ * पर्यावरण चर स्वचालित रूप से फिर से आबाद हो जाता है, बजाय आपको अप्रतिष्ठित दस्तावेज़ के पुनर्निर्देशित करने के। । AWS सपोर्ट ने कहा कि यह एक सुविधा अनुरोध के रूप में उठाया गया है लेकिन निश्चित रूप से कोई समय सीमा नहीं दी गई है।


एक साल बाद और यह अभी भी मामला है?
Lifeofguenter

1
अभी भी मामला जहाँ तक मुझे पता है।
rgareth

हम इस AWS को कैसे टक्कर देंगे?
मैथ्यू

एक साल बाद, अब भी वही है।
करण कुमार

Rds docs.aws.amazon.com/elasticbeanstalk/latest/dg/… (सिर्फ मुझे खोज रहे लोगों के लिए पूर्णता के लिए) जोड़ने के लिए चरण वे आपके लिए एक एनवायरनमेंट कॉन्फ़िगरेशन नहीं बनाते हैं और इसे निर्माण के लिए कॉन्फ़िगरेशन फ़ाइल के माध्यम से लोड करते हैं। इसमें env var को जोड़ना चाहिए, जब तक कि वे नहीं बदलते, यह ठीक होना चाहिए?
मैनुअल

18

AWS समर्थन से उत्तर :

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

यदि आप चाहते हैं कि आरडीएस का उदाहरण पर्यावरण के बाहर मौजूद हो, तो आप कनेक्शन मानकों को ईबी कंसोल के माध्यम से पर्यावरण चर के रूप में प्रदान कर सकते हैं: कॉन्फ़िगरेशन -> वेब परत -> सॉफ्टवेयर कॉन्फ़िगरेशन। फिर, आप PHP के माध्यम से पर्यावरण चर पढ़ सकते हैं


मैंने RDS_ * नामों के साथ पर्यावरण चर को परिभाषित करते हुए दूसरा दृष्टिकोण लिया, सम्मेलन का पालन करने के लिए। सुरक्षा समूह बहुत तंग हैं, लेकिन पर्यावरण चर में DB पासवर्ड डालने के लिए यह अभी भी थोड़ा ढीला लगता है।
जोसेफ शीडी

@velotron मेरे लिए समान है, लेकिन मुझे इसकी आदत है!
बेंजामिन

2

मुझे हाल ही में इसकी आवश्यकता थी और AWS CLI / EB CLI का उपयोग करके चरणों को स्वचालित करना चाहता था। किसी भी स्थिति में, मूल रूप से मेरे द्वारा अनुसरण किए जाने वाले चरण हैं (यह मानते हुए कि आपने पहले ही एक आरडीएस उदाहरण बनाया है):

  1. सुनिश्चित करें कि आपके पास अपने RDS उदाहरण (VPC डिफ़ॉल्ट समूह नहीं) के लिए एक अलग सुरक्षा समूह सेटअप है। आप इसके लिए aws ec2 create-security-group(AWS CLI) का उपयोग कर सकते हैं और इसे RDS उदाहरण aws rds modify-db-instance(AWS CLI) के साथ जोड़ सकते हैं ।
  2. अपने बीनस्टॉक एप्लिकेशन (मैंने उसके लिए eb init(ईबी सीएलआई) का उपयोग किया है ) को प्रारंभ करें ।
  3. अपने RDS डेटाबेस (DB नाम, होस्ट नाम, पोर्ट, आदि) से प्रासंगिक कॉन्फ़िगरेशन डेटा पढ़ें। मैंने उसके लिए इस्तेमाल किया aws rds describe-db-instances
  4. उस डेटा का उपयोग करते हुए RDS_*पर्यावरण के चर को ईबी उदाहरण पर सेट करें जब आप पर्यावरण बनाते हैं (या बाद में पर्यावरण को तैनात करते हैं)। आप के साथ ऐसा कर सकते हैं eb create/ eb deploy(ईबी CLI)। जब आप वातावरण बनाते हैं तो शुरू में इसे नीचा दिखाया जाएगा, क्योंकि सुरक्षा समूह आरडीएस डेटाबेस तक पहुंचने के लिए ठीक से सेट नहीं हैं।
  5. EB कॉन्फ़िगरेशन से संबंधित सुरक्षा समूह प्राप्त करें। आपको ऑटोसालिंग समूह के लिए और लोचदार लोड बैलेंसर के लिए एक की आवश्यकता है। आप उसके लिए aws elasticbeanstalk describe-configuration-settings(AWS CLI) का उपयोग कर सकते हैं ।
  6. चरण 1 में आपके द्वारा सेट किए गए सुरक्षा समूह के लिए अपने डेटाबेस में इनबाउंड ट्रैफ़िक के लिए अपने ऑटोसालिंग समूह को अधिकृत करें। मैंने इसके लिए aws ec2 authorize-security-group-ingress(AWS CLI) का उपयोग किया था, जो VPC सुरक्षा समूहों (DB सुरक्षा समूह नहीं) का उपयोग करता है। यदि आप अपने क्षेत्र में समर्थित हैं, तो आप संभवतः DB सुरक्षा समूहों के साथ इसे प्राप्त कर सकते हैं। इनबाउंड ट्रैफिक नियम सेट करते समय सुनिश्चित करें कि आप अपने डेटाबेस इंजन के लिए सही प्रोटोकल और पोर्ट का उपयोग करते हैं।
  7. अपने RDS उदाहरण aws rds modify-db-instance(AWS CLI का उपयोग करके ) के सुरक्षा समूहों में इलास्टिक लोड बैलेंसर समूह जोड़ें ।
  8. रिबूट या लोचदार बीनस्टॉक एप्लिकेशन (जैसे कि eb deployईबी सीएलआई) का उपयोग करके पुन: उपयोग करें । मुझे एक नया काम करना था, क्योंकि मैं तैनाती पर पलायन चलाता हूं।

वह ज्यादातर यह है। अब आप ईबी इंस्टेंस की परवाह किए बिना अपने आरडीएस इंस्टेंस को स्केल / डाउन करने में सक्षम हो सकते हैं, जब तक आप होस्टनाम और डीबी क्रेडेंशियल्स को एक समान रखते हैं। आप उस दृष्टिकोण के साथ नीले / हरे रंग की तैनाती भी कर सकते हैं (लेकिन आपको सुरक्षा समूह पहुंच को रद्द करने के लिए कुछ अतिरिक्त कदम उठाने की आवश्यकता हो सकती है)।


0

कॉन्फ़िगरेशन द्वारा EB EC2 उदाहरणों में मौजूदा सुरक्षा समूह को जोड़ने के लिए सबसे आसान है https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/ में वर्णित सरल फ़ाइल का उपयोग करना सुरक्षा-विन्यास / securitygroup-addexisting.config

उदाहरण के लिए:

$ cat .ebextensions/securitygroup-addexisting.config
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: rds-launch-wizard-1

0

मैं एक ही मुद्दे का सामना कर रहा था और निम्नलिखित चरणों का उपयोग करके तय किया गया था:

1) EC2 उदाहरण पर जाएं और अपने सुरक्षा समूह के उदाहरण पर ध्यान दें "sg-121212121212"

2) आरडीएस सिक्योरिटी ग्रुप ad = nd इनबाउंड ट्रैफ़िक पर जाएं

3) नियम संपादित करें सभी ट्रैफ़िक का चयन करें और अपने नए ईबीएस सुरक्षा समूह को जोड़ें "sg-121212121212"

आशा है कि यह मददगार होगा


-2

लोचदार के तहत आरडीएस बनाएं; यह नया सही सुरक्षा समूह जोड़ देगा; पुराने मौजूद RDS के सुरक्षा समूह को संशोधित करें; वेब कॉन्फिगरेशन और सभी कामों में सही कनेक्शन स्ट्रिंग सेट करें ...

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