Wiele Mongołów na jednym serwerze


11

Nie mówię o dzieleniu . Mieliśmy serwer testowy (linux) i już istnieje taki, mongoktóry należy do innego projektu / podzespołu. Czy to możliwe, aby uruchomić wiele, izolowane przypadki z mongodbna jednym komputerze? Jak mogę to zrobić?

Odpowiedzi:


14

Tak, możesz to zrobić, określając różne numery portów i katalogi danych dla innych instancji mongod, a następnie określając nowy numer portu w kliencie.

Na przykład:

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

W razie potrzeby możesz także zmienić serwer niezależnego fragmentu i skonfigurować numery portów serwera.


1
Czy można to określić w mongodb.conf? A może musiałbym stworzyć skrypt, aby to zrobić? (on * nix)
Justin

@ Justin, z pewnością możesz określić te opcje w pliku konfiguracyjnym - patrz mongodb.org/display/DOCS/File+Based+Configuration . Ale nadal musisz przekazać różne pliki konfiguracyjne do różnych instancji.
dsolimano

Dzięki @dsolimano, mam dwa skrypty w rc.d dla dwóch instancji Mongo. Podałem różne ścieżki dla db, pid, logowania i podałem im różne porty do nasłuchiwania. Jest również rozwidlany, a gdy uruchamia się drugi skrypt, kończy się niepowodzeniem, ponieważ mongo już działa (pierwsza instancja). Wydaje mi się, że moje prawdziwe pytanie brzmiało: (Nie miałem szczęścia znaleźć tego w Internecie). Czy możesz mieć jednocześnie dwie rozwidlone instancje? Dzięki
Justin

@Justin, myślę, że to prawdopodobnie podnosi poziom nowego pytania, być może powinieneś zadać je na tej stronie? Wygląda na to, że jest coś w sposobie uruchamiania Mongo, który powoduje problem.
dsolimano

3

Kroki, które podjąłem to:

  1. Skopiuj plik conf /etc/mongod.conf do mongod2.conf, a także do mongod3.conf
  2. Edytuj pliki conf, aby mieć różne porty i różne ścieżki do bazy danych
  3. Skopiuj skrypt init.d start script /etc/init.d/mongod do mongod2, a także do mongod3
  4. Skopiuj binarny mongod / usr / bin / mongod do / usr / bin / mongod2, a także do / usr / bin / mongod3
  5. Edytuj skrypty startowe init.d i zmieniłem:

    CONFIGFILE = "/ etc / mongod2.conf" (odpowiednio mongod3.conf)

    mongod = $ {MONGOD- / usr / bin / mongod2} (odpowiednio mongod3)

Zamieniono / var / lock / subsys / mongod na / var / lock / subsys / mongod2 (odpowiednio mongod3), gdziekolwiek go znalazłem.

Oprzyj się pokusie zamiany mongod.lock na mongod2.lock (lub odpowiednio na mongod3.lock). Znajdują się w różnych folderach (foldery bazy danych są różne) i nie powodują konfliktów.

Teraz mogę

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

i również

mongo --port <port_number> 

dla każdej instancji mongo (pamiętaj ustawienia portu z plików conf)

Nie znam żadnych skutków ubocznych zmiany nazwy pliku binarnego mongod ..

Mam nadzieję że to pomoże.

[Późniejsza edycja] Aby automatycznie uruchomić instancje, po prostu ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod i ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)


Ach, miło! robił dokładnie to samo bez większego szczęścia wcześniej, ponieważ nie sądziłem, że powinniśmy powielić sam plik wykonywalny mongod. Wszystko dobrze teraz.
Bach,

W moim przypadku przy użyciu Ubuntu 16.01nie było init.dskryptów. Czy możesz podać init.dtreść skryptu?
Shubham A.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.