एक सर्वर पर कई Mongos


11

मैं तेज करने की बात नहीं कर रहा हूं । हमारे पास एक परीक्षण सर्वर (लिनक्स) था और पहले से ही एक है mongoजो किसी अन्य परियोजना / उपशीर्षक के अंतर्गत आता है। इसे चलाने के लिए संभव है कई, अलग-थलग उदाहरणों की mongodbएक मशीन पर? मैं यह कैसे कर सकता हूं?

जवाबों:


14

हां, आप इसके अन्य इंस्टेंसेस के लिए अलग-अलग पोर्ट नंबर और डेटा निर्देशिकाओं को mongodनिर्दिष्ट करके और फिर क्लाइंट में नए पोर्ट नंबर को निर्दिष्ट करके कर सकते हैं।

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

./mongod --dbpath /foo/bar/otherpath --port some_other_port

यदि आप की जरूरत है तो आप शार्द सर्वर और कॉन्फिग सर्वर पोर्ट नंबरों को भी बदल सकते हैं


1
क्या इसे mongodb.conf के भीतर निर्दिष्ट करना संभव है? या मुझे ऐसा करने के लिए एक स्क्रिप्ट बनानी होगी? (* निक्स पर)
जस्टिन

@ जस्टिन, आप निश्चित रूप से इन विकल्पों को एक विन्यास फाइल के भीतर निर्दिष्ट कर सकते हैं - mongodb.org/display/DOCS/File+Based+Configuration देखें । लेकिन फिर भी आपको अलग-अलग उदाहरणों के लिए अलग-अलग कॉन्फ़िगरेशन फ़ाइलों को पास करना होगा।
dsolimano

धन्यवाद @dsolimano, मैं Mongo के दो उदाहरणों के लिए rdd में दो स्क्रिप्ट प्राप्त कर चुका हूं। मैंने db, pid, लॉगिंग के लिए अलग-अलग रास्ते निर्दिष्ट किए हैं और उन्हें सुनने के लिए अलग-अलग पोर्ट दिए हैं। यह भी कांटा हो रहा है, और जब दूसरी स्क्रिप्ट चलती है तो यह विफल हो जाती है क्योंकि मोंगो पहले से ही चल रहा है (पहला उदाहरण)। तो मुझे लगता है कि मेरा असली सवाल था (II को वेब पर इसे खोजने का बहुत सौभाग्य नहीं मिला है) क्या आप एक ही समय में दो कांटे वाले इंस्टेंसेस चला सकते हैं? धन्यवाद
जस्टिन

@ जस्टिन, मुझे लगता है कि यह शायद एक नए प्रश्न के स्तर तक बढ़ गया है, शायद आपको इसे इस साइट पर पूछना चाहिए? ऐसा लगता है कि मानगो को शुरू करने के तरीके के बारे में कुछ है जो एक समस्या पैदा कर रहा है।
dsolimano

3

मैंने जो कदम उठाए हैं, वे हैं:

  1. प्रतिलिपि फ़ाइल /etc/mongod.conf को mongod2.conf और mongod3.conf पर भी कॉपी करें
  2. अलग-अलग पोर्ट और अलग-अलग डेटाबेस पथ के लिए गोपनीय फ़ाइलों को संपादित करें
  3. Init.d कॉपी स्क्रिप्ट /etc/init.d/mongod को mongod2 और mongod3 को भी कॉपी करें
  4. बाइनरी मोंगॉड / यूएसआर / बिन / मोंगोड को / यूएसआर / बिन / मोंगोड 2 और प्रति / यूएसआर / बिन / मोंगोड 3 को कॉपी करें
  5. Init.d को संपादित करें स्क्रिप्ट शुरू करें और निम्नलिखित को बदल दें:

    CONFIGFILE = "/ etc / mongod2.conf" (mongod3.conf, क्रमशः)

    ....

    mongod = $ {MONGOD- / usr / bin / mongod2} (mongod3, क्रमशः)

जहाँ भी मैंने इसे पाया, उसके साथ बदला हुआ / var / lock / subsys / mongod / var / lock / subsys / mongod2 (mongod3, क्रमशः)।

Mongod2lock को mongod2.lock (या क्रमशः mongod3.lock, के साथ बदलने के लिए) के प्रलोभन का विरोध करें। वे विभिन्न फ़ोल्डरों में हैं (डेटाबेस फ़ोल्डर अलग हैं) और संघर्ष नहीं करेंगे।

अब मैं कर सकता हूँ

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

और भी

mongo --port <port_number> 

प्रत्येक मोंगो उदाहरण के लिए (गोपनीय फ़ाइलों से पोर्ट सेटिंग्स याद रखें)

मैं मंगोल बाइनरी का नाम बदलने के किसी भी दुष्प्रभाव से अवगत नहीं हूं।

उम्मीद है की यह मदद करेगा।

[बाद में संपादित करें] उदाहरणों को स्वचालित रूप से शुरू करने के लिए, बस ln -s /etc/init.d/mongod2/etc/rc.d/rc3.d/S86mongod और ln -s /etc/init.dmongod3 / etc / rc .d / rc3.d / S87mongod :)


आह अच्छा एक! पहले बहुत किस्मत के बिना भी ऐसा ही था क्योंकि मुझे नहीं लगता था कि हमें खुद भी मोंगॉड को अंजाम देना चाहिए। अभी सब अच्छा है।
बाच

मेरे मामले में, उपयोग करते हुए Ubuntu 16.01, कोई init.dस्क्रिप्ट नहीं थी । क्या आप init.dस्क्रिप्ट सामग्री प्रदान कर सकते हैं ?
शुभम ए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.