Múltiples mongos en un servidor

11

No estoy hablando de fragmentación . Teníamos un servidor de prueba (Linux) y ya hay uno mongoque pertenece a otro proyecto / sub-equipo. ¿Es posible ejecutar varias instancias, aislados de mongodben una máquina? ¿Cómo puedo hacerlo?

Om nom nom
fuente

Respuestas:

14

Sí, puede hacerlo especificando diferentes números de puerto y directorios de datos para las otras instancias de mongod, y luego especificando el nuevo número de puerto en el cliente.

Por ejemplo:

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

También puede cambiar el servidor de fragmentos y los números de puerto del servidor de configuración si es necesario.

dsolimano
fuente
1
¿Es posible especificar esto dentro de mongodb.conf? ¿O tendría que crear un script para hacer eso? (on * nix)
Justin el
@Justin, ciertamente puede especificar estas opciones dentro de un archivo de configuración; consulte mongodb.org/display/DOCS/File+Based+Configuration . Pero aún necesita pasar diferentes archivos de configuración a las diferentes instancias.
dsolimano
Gracias @dsolimano, tengo dos scripts en rc.d para dos instancias de Mongo. He especificado diferentes rutas para db, pid, logging y les he dado diferentes puertos para escuchar. También se está bifurcando, y cuando se ejecuta el segundo script, falla ya que mongo ya se está ejecutando (la primera instancia). Así que supongo que mi verdadera pregunta fue (no he tenido mucha suerte al encontrar esto en la web): ¿puedes tener dos instancias bifurcadas ejecutándose al mismo tiempo? Gracias
Justin
@Justin, creo que esto probablemente se eleva al nivel de una nueva pregunta, ¿tal vez deberías preguntar en este sitio? Parece que hay algo en la forma en que está iniciando Mongo que está causando un problema.
dsolimano
3

Los pasos que he tomado son:

  1. Copie el archivo conf /etc/mongod.conf en mongod2.conf y también en mongod3.conf
  2. Edite archivos conf para tener diferentes puertos y diferentes rutas de bases de datos
  3. Copie el script de inicio init.d /etc/init.d/mongod en mongod2 y también en mongod3
  4. Copie mongod / usr / bin / mongod binario en / usr / bin / mongod2 y también en / usr / bin / mongod3
  5. Edite los scripts de inicio init.d y cambió lo siguiente:

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

    ....

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

Reemplazado / var / lock / subsys / mongod con / var / lock / subsys / mongod2 (mongod3, respectivamente) donde lo encontré.

Resista la tentación de reemplazar mongod.lock con mongod2.lock (o mongod3.lock, respectivamente). Están en diferentes carpetas (las carpetas de la base de datos son diferentes) y no entrarán en conflicto.

Ahora puedo

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

y también

mongo --port <port_number> 

para cada instancia de mongo (recuerde la configuración del puerto de los archivos conf)

No conozco ningún efecto secundario de renombrar el binario mongod.

Espero que esto ayude.

[Edición posterior] Para iniciar las instancias automáticamente, solo ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod y ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)

aemilianvs
fuente
¡Ah, bonita! hice exactamente lo mismo sin mucha suerte antes porque no pensé que también deberíamos duplicar el ejecutable mongod. Todo bien ahora.
Bach
En mi caso, usando Ubuntu 16.01, no había init.dscripts. ¿Puedes proporcionar init.dcontenido de script?
Shubham A.