Vários Mongos em um servidor

11

Não estou falando de sharding . Tivemos um servidor de teste (linux) e já existe um mongoque pertence a outro projeto / subequipe. É possível executar várias instâncias, isoladas de mongodbem uma máquina? Como eu posso fazer isso?

om-nom-nom
fonte

Respostas:

14

Sim, você pode fazer isso especificando números de porta e diretórios de dados diferentes para as outras instâncias do mongode, em seguida, especificando o novo número da porta no cliente.

Por exemplo:

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

Você também pode alterar os números de porta do servidor shard e do servidor de configuração, se necessário.

dsolimano
fonte
1
É possível especificar isso no mongodb.conf? Ou eu teria que criar um script para fazer isso? (on * nix)
Justin
@ Justin, você certamente pode especificar essas opções em um arquivo de configuração - consulte mongodb.org/display/DOCS/File+Based+Configuration . Mas você ainda precisará passar arquivos de configuração diferentes para diferentes instâncias.
precisa saber é o seguinte
Obrigado @dsolimano, eu tenho dois scripts no rc.d para duas instâncias do Mongo. Especifiquei caminhos diferentes para o db, pid, log e dei a eles portas diferentes para escutar. Ele também está sendo bifurcado e, quando o segundo script é executado, ele falha, pois o mongo já está sendo executado (a primeira instância). Então, eu acho que minha pergunta real era (eu não tive muita sorte em encontrar isso na web): você pode ter duas instâncias bifurcadas em execução ao mesmo tempo? Obrigado
Justin
@ Justin, acho que isso provavelmente chega ao nível de uma nova pergunta, talvez você deva perguntar neste site? Parece que há algo na maneira como você inicia o Mongo que está causando um problema.
dsolimano
3

Os passos que tomei são:

  1. Copie o arquivo conf /etc/mongod.conf para mongod2.conf e também para mongod3.conf
  2. Edite arquivos conf para ter portas e caminhos de banco de dados diferentes
  3. Copie o script init.d start /etc/init.d/mongod para mongod2 e também para mongod3
  4. Copie o mongod binário / usr / bin / mongod para / usr / bin / mongod2 e também para / usr / bin / mongod3
  5. Edite os scripts init.d start e altere o seguinte:

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

    ....

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

Substituiu / var / lock / subsys / mongod por / var / lock / subsys / mongod2 (mongod3, respectivamente) onde quer que eu o encontrasse.

Resista à tentação de substituir mongod.lock por mongod2.lock (ou para mongod3.lock, respectivamente). Eles estão em pastas diferentes (as pastas do banco de dados são diferentes) e não entram em conflito.

Agora eu posso

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

e também

mongo --port <port_number> 

para cada instância do mongo (lembre-se das configurações de porta dos arquivos conf)

Não estou ciente de nenhum efeito colateral de renomear o binário mongod ..

Espero que isto ajude.

[Edição posterior] Para iniciar as instâncias automaticamente, 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 :)

aemilianvs
fonte
Ah, que legal! fez exatamente o mesmo sem muita sorte antes, porque eu achava que deveríamos duplicar o próprio executável mongod. Tudo bem agora.
Bach
No meu caso, usando Ubuntu 16.01, não havia init.dscripts. Você pode fornecer init.dconteúdo de script?
Shubham A.