मैंने ".ebextensions" नामक एक फ़ोल्डर और "aws.config" नामक एक फ़ाइल बनाई। इस फ़ाइल की सामग्री इस प्रकार है:-
files:
"/etc/yum.repos.d/mongodb.repo":
mode: "000644"
content: |
[MongoDB]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
container_commands:
01_enable_rootaccess:
command: echo Defaults:root \!requiretty >> /etc/sudoers
02_install_mongo:
command: yum install -y mongo-10gen-server
ignoreErrors: true
03_turn_mongod_off:
command: sudo chkconfig mongod off
04_create_mongos_startup_script:
command: sudo sh -c "echo '/usr/bin/mongos -configdb $MONGO_CONFIG_IPS -fork -logpath /var/log/mongo/mongos.log --logappend' > /etc/init.d/mongos.sh"
05_update_mongos_startup_permissions:
command: sudo chmod +x /etc/init.d/mongos.sh
06_start_mongos:
command: sudo bash /etc/init.d/mongos.sh
यह फ़ाइल क्या करती है:-
- एक "mongodb.repo" फ़ाइल बनाता है (देखें http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/)।
4 कंटेनर कमांड चलाता है (ये सर्वर बनने के बाद लेकिन WAR लागू होने से पहले चलाए जाते हैं। ये हैं:-
- रूट पहुंच सक्षम करें - यह "sudo" कमांड के लिए आवश्यक है।
- मोंगो स्थापित करें - यम कमांड का उपयोग करके मोंगो को एक सेवा के रूप में स्थापित करें। हमें केवल "मोंगोस" की आवश्यकता है लेकिन इसे अभी तक मोंगो सर्वर से अलग नहीं किया गया है। यह भविष्य में बदल सकता है।
- मोंगॉड के लिए कॉन्फ़िगरेशन को "ऑफ" में बदलें - इसका मतलब है कि यदि सर्वर पुनरारंभ होता है तो सर्वर पुनरारंभ होने पर मोंगोड प्रोग्राम नहीं चलता है।
- मोंगो चलाने के लिए स्क्रिप्ट बनाएं। चरण 4 में $MONGO_CONFIG_IPS पर ध्यान दें, आप लोचदार बीनस्टॉक में कॉन्फ़िगरेशन पृष्ठ का उपयोग करके इन्हें पास कर सकते हैं। यह सर्वर रीबूट पर चलेगा।
- निष्पादन के लिए अनुमतियां सेट करें। इन कारणों से मैंने एक फाइल में डालने के विरोध में 4/5 किया:अनुभाग यह है कि इसने पर्यावरण चर से आईपी पते नहीं बनाए।
- चरण 4 में बनाई गई स्क्रिप्ट चलाएँ।
यह मेरे लिए काम करता है। मेरी WAR फ़ाइल बस लोकलहोस्ट से जुड़ती है और सारा ट्रैफ़िक राउटर से होकर जाता है। मैं इस पर कुछ दिनों के लिए ठोकर खाई क्योंकि अमेज़ॅन एडब्ल्यूएस और मोंगोडीबी दोनों में दस्तावेज़ीकरण काफी पतला है।
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
अपडेट करें :- यदि आपको मेरे पुराने उत्तर में समस्या हो रही है, तो कृपया निम्नलिखित प्रयास करें - यह मोंगो के संस्करण 3 के लिए काम करता है और वर्तमान में हमारे उत्पादन मोंगोडीबी क्लस्टर में उपयोग किया जा रहा है।
यह संस्करण इस मायने में अधिक उन्नत है कि यह आंतरिक DNS (AWS रूट53 के माध्यम से) का उपयोग करता है - mongo-cfg1.internal ...
पर ध्यान दें . रूट53 का उपयोग करके अपने निजी क्षेत्र को स्थापित करने के लिए यह सर्वोत्तम प्रथाओं और अच्छी तरह से अनुशंसित है। इसका मतलब है कि अगर MongoDB कॉन्फिग इंस्टेंस में से किसी एक के साथ कोई समस्या है तो आप टूटे हुए इंस्टेंस को बदल सकते हैं और रूट 53 में निजी आईपी एड्रेस अपडेट कर सकते हैं - प्रत्येक लोचदार बीनस्टॉक में कोई अपडेट आवश्यक नहीं है जो वास्तव में अच्छा है। हालाँकि, यदि आप एक ज़ोन नहीं बनाना चाहते हैं तो आप बस configDB
में IP पते डाल सकते हैं। विशेषता (मेरे पहले उदाहरण की तरह)।
files:
"/etc/yum.repos.d/mongodb.repo":
mode: "000644"
content: |
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
"/opt/mongos.conf":
mode: "000755"
content: |
net:
port: 27017
operationProfiling: {}
processManagement:
fork: "true"
sharding:
configDB: mongo-cfg1.internal.company.com:27019,mongo-cfg2.internal.company.com:27019,mongo-cfg3.internal.company.com:27019
systemLog:
destination: file
path: /var/log/mongos.log
container_commands:
01_install_mongo:
command: yum install -y mongodb-org-mongos-3.0.2
ignoreErrors: true
02_start_mongos:
command: "/usr/bin/mongos -f /opt/mongos.conf > /dev/null 2>&1 &"