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?

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.


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 :)


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.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.