Кілька монгів на одному сервері


11

Я не кажу про загострення . У нас був тестовий сервер (linux) і вже є той, mongoякий належить до іншого проекту / підтеми. Чи можна запускати кілька, ізольовані екземпляри з mongodbоднієї машини? Як я можу це зробити?

Відповіді:


14

Так, ви можете зробити це, вказавши різні номери портів і каталогі даних для інших примірників mongod, а потім вказавши новий номер порту в клієнті.

Наприклад:

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

Ви також можете змінити сервер обміну та настроїти номери портів сервера, якщо вам потрібно.


1
Чи можна вказати це в mongodb.conf? Або мені доведеться створити сценарій для цього? (on * nix)
Джастін

@Justin, ви, безумовно, можете вказати ці параметри у файлі config - див. Mongodb.org/display/DOCS/File+Based+Configuration . Але тоді вам все одно потрібно передавати різні конфігураційні файли в різні екземпляри.
dsolimano

Дякую @dsolimano, у мене є два сценарії в rc.d для двох примірників Mongo. Я вказав різні шляхи для db, pid, ведення журналів і дав їм різні порти для прослуховування. Він також розщеплений, і коли другий сценарій запускається, він виходить з ладу, оскільки mongo вже працює (перший екземпляр). Тож я думаю, що моє справжнє запитання було (я не мав великого шансу знайти це в Інтернеті) - чи можуть у вас одночасно працювати два роздвоєні екземпляри? Спасибі
Джастін

@ Джустін, я думаю, що це, мабуть, піднімається до рівня нового питання, можливо, ви повинні його задати на цьому сайті? Це здається, що є щось про те, як ви починаєте Монго, що викликає проблеми.
dsolimano

3

Створені мною кроки:

  1. Скопіюйте конф-файл /etc/mongod.conf на mongod2.conf, а також на mongod3.conf
  2. Редагуйте конф-файли, щоб вони мали різні порти та різні шляхи до бази даних
  3. Скопіюйте сценарій запуску init.d /etc/init.d/mongod на mongod2, а також на mongod3
  4. Скопіюйте двійковий mongod / usr / bin / mongod в / usr / bin / mongod2, а також в / usr / bin / mongod3
  5. Відредагуйте стартові сценарії init.d і змінивши наступні:

    CONFIGFILE = "/ etc / mongod2.conf" (mongod3.conf відповідно)

    ….

    mongod = $ {MONGOD- / usr / bin / mongod2} (mongod3 відповідно)

Замінено / var / lock / subsys / mongod на / var / lock / subsys / mongod2 (mongod3 відповідно), де б я не знайшов його.

Втримайтеся від спокуси замінити mongod.lock на mongod2.lock (або mongod3.lock відповідно). Вони знаходяться в різних папках (папки бази даних різні) і не конфліктують.

Тепер я можу

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

а також

mongo --port <port_number> 

для кожного екземпляра mongo (пам’ятайте про параметри порту з файлів conf)

Мені невідомо жодного побічного ефекту перейменування бінарного монгоду.

Сподіваюсь, це допомагає.

[Пізніше редагувати] Щоб автоматично запустити екземпляри, просто ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod та ln -s /etc/init.d/mongod3 / тощо / rc .d / rc3.d / S87mongod :)


Ах, хороший! робив саме так, без особливої ​​долі раніше, тому що я не думав, що ми також повинні дублювати виконувану програму mongod. Все добре зараз.
Бах

У моєму випадку, використовуючи сценарії Ubuntu 16.01, не було init.d. Чи можете ви надати init.dвміст сценарію?
Шубхам А.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.