Mongos multipli su un server


11

Non sto parlando di sharding . Avevamo un server di test (Linux) e ce n'è già uno mongoche appartiene a un altro progetto / subteam. È possibile eseguire più istanze isolate di mongodbsu una macchina? Come posso farlo?

Risposte:


14

Sì, è possibile farlo specificando numeri di porta e directory dati diversi per le altre istanze di mongod, quindi specificando il nuovo numero di porta nel client.

Per esempio:

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

È inoltre possibile modificare il numero di porta del server shard e del server di configurazione, se necessario.


1
È possibile specificarlo in mongodb.conf? O dovrei creare uno script per farlo? (su * nix)
Giustino

@Justin, puoi sicuramente specificare queste opzioni all'interno di un file di configurazione - vedi mongodb.org/display/DOCS/File+Based+Configuration . Ma poi devi ancora passare diversi file di configurazione alle diverse istanze.
dsolimano,

Grazie @dsolimano, ho due script in rc.d per due istanze di Mongo. Ho specificato percorsi diversi per db, pid, logging e ho dato loro diverse porte su cui ascoltare. Viene anche biforcato e quando viene eseguito il secondo script non riesce poiché mongo è già in esecuzione (la prima istanza). Quindi suppongo che la mia vera domanda fosse (non ho avuto molta fortuna a trovarlo sul web) è possibile avere due istanze biforcate in esecuzione contemporaneamente? Grazie
Giustino

@Justin, penso che questo probabilmente salga al livello di una nuova domanda, forse dovresti chiederlo su questo sito? Sembra che ci sia qualcosa nel modo in cui inizi Mongo che sta causando un problema.
dsolimano,

3

I passi che ho preso sono:

  1. Copia il file conf /etc/mongod.conf in mongod2.conf e anche in mongod3.conf
  2. Modifica i file conf per avere porte e percorsi di database diversi
  3. Copia init.d start script /etc/init.d/mongod su mongod2 e anche su mongod3
  4. Copia binario mongod / usr / bin / mongod in / usr / bin / mongod2 e anche in / usr / bin / mongod3
  5. Modifica gli script di avvio init.d e cambia quanto segue:

    CONFIGFILE = "/ etc / mongod2.conf" (mongod3.conf, rispettivamente)

    ....

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

Sostituito / var / lock / subsys / mongod con / var / lock / subsys / mongod2 (rispettivamente mongod3) ovunque l'ho trovato.

Resistere alla tentazione di sostituire mongod.lock con mongod2.lock (o rispettivamente a mongod3.lock). Si trovano in cartelle diverse (le cartelle del database sono diverse) e non entreranno in conflitto.

Ora posso

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

e anche

mongo --port <port_number> 

per ogni istanza di mongo (ricordare le impostazioni della porta dai file conf)

Non sono a conoscenza di alcun effetto collaterale della ridenominazione del file binario mongod.

Spero che questo ti aiuti.

[Modifica successiva] Per avviare automaticamente le istanze, basta ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod e ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)


Ah bello! fatto esattamente lo stesso senza molta fortuna prima perché non pensavo che dovessimo duplicare lo stesso eseguibile mongod. Va tutto bene adesso.
Bach,

Nel mio caso, usando Ubuntu 16.01, non c'erano init.dscript. Potete fornire il init.dcontenuto dello script?
Shubham A.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.