2015-09-04 9 views
6

के लिए mongos और config सर्वर के लिए init स्क्रिप्ट्स मैंने परीक्षण के उद्देश्य के लिए स्थानीय वातावरण में एक sharding बनाया।मोंगो डीबी sharding

मेरे पास 1 मशीन पर तीन कॉन्फ़िगरेशन सर्वर और एक ही मशीन पर 1 क्वेरी राउटर और दो अलग-अलग मशीनों पर दो डेटा नोड्स हैं।

सब कुछ ठीक काम करता है लेकिन मेरी समस्या मैं अलग बंदरगाहों पर सभी प्रक्रिया सक्रिय क्रियाशील बनाए रखने के रूप में मैं किसी भी शुरू की जरूरत नहीं है/लिपि को रोकने में असमर्थ हूँ है। मैं सक्रिय बनाने के लिए & के साथ कमांड लाइन पर प्रक्रिया चलाता हूं जो प्रोसेस सक्रिय रखने के लिए बहुत ही खराब तरीका है और कभी-कभी यह स्वचालित रूप से मर जाता है।

मदद या स्क्रिप्ट का उपयोग करने का तरीका प्रदान और भी स्क्रिप्ट एक मशीन पर सभी प्रक्रिया सक्रिय करने के लिए विभिन्न बंदरगाहों संभाल कर सकते हैं करें।

उत्तर

0

config सर्वर के लिए हम नीचे स्क्रिप्ट का उपयोग कर सकते हैं:

#!/bin/bash 

### BEGIN INIT INFO 
# Provides:  MongoDB Config Server 
# Required-Start: $network 
# Required-Stop: $network 
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
# Short-Description: Start/Stop MongoDB Config server 
### END INIT INFO 

start() { 
     /usr/bin/mongod --configsvr --dbpath /home/configdb/ --port 27018 & 
} 

stop() { 
     for a in `ps -ef | grep 27018 | awk '{print $2}'`; do kill -9 $a; done 
} 

case $1 in 
    start|stop) $1;; 
    restart) stop; start;; 
    *) echo "Run as $0 <start|stop|restart>"; exit 1;; 
esac 

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

#!/bin/bash 

### BEGIN INIT INFO 
# Provides:  MongoDB Config Server 
# Required-Start: $network 
# Required-Stop: $network 
# Default-Start: 2 3 4 5 
# Default-Stop: 0 1 6 
# Short-Description: Start/Stop MongoDB Config server 
### END INIT INFO 

start() { 
     /usr/bin/mongos --configdb 192.168.3.187:27018 --port 27019 & 
} 

stop() { 
     for a in `ps -ef | grep 27019 | awk '{print $2}'`; do kill -9 $a; done 
} 

case $1 in 
    start|stop) $1;; 
    restart) stop; start;; 
    *) echo "Run as $0 <start|stop|restart>"; exit 1;; 
esac 

हम mongos के लिए डिफ़ॉल्ट मोंगो विन्यास का उपयोग नहीं कर सकते क्योंकि इसे स्टार्ट-अप में कॉन्फ़िगरेशन डेटाबेस और पोर्ट जानकारी को भी परिभाषित करने की आवश्यकता है।

6

आप नहीं कभी नहीं इस अतिरिक्त प्रशासनिक कार्य की एक पूरी राशि बनाता है के रूप में जब आप स्टार्टअप/उदाहरणों में से किसी एक को बंद कर रहे हैं, एक init स्क्रिप्ट से कई उदाहरण को आकर्षित करना चाहते किया जाना चाहिए।

आपको प्रत्येक व्यक्तिगत डेटाबेस प्रक्रिया उदाहरण के लिए एक init स्क्रिप्ट देखना चाहिए क्योंकि यह लिनक्स सर्वोत्तम अभ्यास है।

अधिकांश भाग आप सामान्य MongoDB उपयोग करने के लिए सक्षम होना चाहिए के लिए init स्क्रिप्ट प्रदान की और उसके बाद प्रत्येक डेटाबेस उदाहरण के लिए एक नया नाम दिया प्रतिलिपि बनाने के।

फिर आप प्रत्येक उदाहरण के लिए अलग-अलग config फाइल, जो थोड़ा अलग विन्यास होते हैं और अपने स्वयं के बंदरगाह, खुद dbpath और खुद लॉगफ़ाइल पर प्रत्येक उदाहरण चलाना चाहिए बनाना चाहिए।

फिर आप प्रत्येक इंस्टिट स्क्रिप्ट को कॉन्फ़िगरेशन फ़ाइल पर इसके उदाहरण के लिए इंगित कर सकते हैं और सबकुछ योजनाबद्ध रूप से कार्य करना चाहिए।

अंत में, MongoDB के भीतर, आप --fork विकल्प है, जो एक सुरक्षित तरीका एक खोल उदाहरण से MongoDB अलग करने प्रदान करता है का उपयोग करना चाहिए। यदि आपको पूरी तरह से खोल कांटा (& ऑपरेटर) का उपयोग करना जारी रखना चाहिए, तो आपको अपने शेल को समाप्त करने से रोकने के लिए "नोहुप" में मोंगोडीबी को लपेटना चाहिए। यह विचार करेंगे कुछ की तरह: nohup <mongodb cmd and arguments> &

संपादित करें: आप उसी प्रक्रिया का उपयोग कर सकते MongoS शुरू करने के लिए एक ही init स्क्रिप्ट का उपयोग करने के लिए। आपको उस लाइन को खोजने की ज़रूरत है जो mongod बाइनरी को निष्पादित करने के लिए सेट करता है। सभी डेबियन डेरिवेटिव के तहत यह DAEMON चर होगा। इसे mongos पर mongod के बजाय इंगित करने के लिए बदलें और आप बाहर जाएं।

+0

धन्यवाद। मैं mongodb डिफ़ॉल्ट init स्क्रिप्ट का उपयोग कर अन्य उदाहरणों के लिए init स्क्रिप्ट बनाउंगा लेकिन मोंगो और क्वेरी राउटर के लिए क्या होगा? इसके लिए कोई डिफ़ॉल्ट इनिट स्क्रिप्ट नहीं है। मैं इनिट स्क्रिप्ट के माध्यम से क्वेरी राउटर और मोंगो को भी चलाने के लिए चाहता हूं। –

+0

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

+0

कृपया क्वेरी राउटर के लिए कौन से चर बताएं .. –

संबंधित मुद्दे