Configuração do cluster do Mongodb

0

Instalei o Mongodb usando as instruções Depois de configurá-lo, posso ver todos os meus serviços expostos, mas ainda recebo a mensagem: esse db não tem sharding ativado ... quando eu executo o comando sh.status () de o shell mongo. Além disso, quando eu me conecto a mongos do shell, eu não recebo um "mongos >" prompt, acabei de receber o ">" pronto. Eu não sei como resolver o problema.

Eu tenho 5 nós. Eu uso o nó 1 como meu mongos e o nó 2 como meu servidor de configuração (executando 3 instâncias). A configuração para o nó 3, 4 e 5 é a seguinte: Nó 3: shard1 / 0, shard2 / 1, shard3 / 2. Nó 4: shard2 / 0, shard3 / 1, shard1 / 2 e Nó 5 shard3 / 0, shard1 / 1, shard2 / 1.

Qual poderia ser o problema

    
por Conrad 19.05.2015 / 17:25

3 respostas

0

Encontrei um bug no script hooks.py do charme mongodb. Na linha 1053, vemos uma chamada para a função enable_configuresvr:

enable_configsvr(config_data['config_server_port'])

No entanto, a lista de parâmetros de função do enable_configuresvr não corresponde:

def enable_configsvr(config_data, wait_for=default_wait_for,
                 max_tries=default_max_tries):

O config_data ['config_server_port'] não deve ser o parâmetro passado; config_data deve ser.

O mesmo problema está na linha 1069 com enable_mongos passando config_data ['mongos_port'] ao invés de config_data.

Vou tentar executar alguns testes para confirmar que esses são os únicos bugs.

Fora do preenchimento de um relatório de bug, alguém mais passou por esse problema? Parece que deveria ser mais difundido que apenas Conrad e eu: P

    
por Charles 23.05.2015 / 03:44
0

Conrad, ainda não executei o teste com as correções que comentei acima, mas também pode resolver o problema do arquivo de log mencionado mais recentemente.

Juju ainda é muito valioso. Espero que meu bug capture o problema que estamos enfrentando e nos permita implementar nosso cluster mongo sharted corretamente. Com Juju, poderemos escalar horizontalmente com muita facilidade.

Eu também estou usando o Juju para implantar o nosso charme php personalizado (instalar o php, conecta-se ao Apache para configurar um vhost e coloca os nossos arquivos php no diretório correto) que eu quero coabitar com cada instância do mongos. Quando forem feitas alterações em nossos arquivos php de produção, poderemos atualizar o encanto e todos os nós que estiverem executando o encanto, com um comando juj update-charm.

Eu não encontrei nada do que é o Open Source, e amadurecer o suficiente, isso é muito mais do que Juju ainda. Eu já testei capataz e marionete antes de me instalar em Maas e Juju.

    
por Charles 24.05.2015 / 01:48
0

Eu tive mais tempo para investigar e executar alguns testes. Não consigo ver como esse código está na natureza há anos. Estamos faltando alguma coisa? Não só existem valores de parâmetros incorretos sobre os quais eu já postei, mas parece que também há um bug lógico.

Eu acredito que a razão pela qual as unidades congifsvr e mongos não estão assumindo suas identidades é porque enable_configsvr e enable_mongos nunca são realmente chamados! Ambos estão em um bloco if que requer que já exista um configsvr e mongos em execução (respectivamente). Nem são, mas não há outro lugar no código que realmente instancia o configsvr e os mongos.

Como o enable_configsvr pode ser executado quando a declaração if nunca é satisfeita? (linha 1050 do hooks.py)

if configsvr_pid is not None:
    configsvr_port = re.search('--port (\w+)', configsvr_cmd_line).group(2)
    disable_configsvr(configsvr_port)
    enable_configsvr(config_data['config_server_port'])
else:
    open_port(config_data['config_server_port'])

A mesma lógica se aplica a enable_mongos na linha 1066:

    if mongos_pid is not None:
    mongos_port = re.search('--port (\w+)', mongos_cmd_line).group(1)
    disable_mongos(mongos_port)
    enable_mongos(config_data['mongos_port'])
else:
    open_port(config_data['mongos_port'])

Eu publiquei um relatório de bug aqui: link

Alguém implantou com sucesso um cluster mongo sharded usando o charme?

    
por Charles 02.06.2015 / 04:14