Como solução alternativa, por que você não define o mongodb para não começar a usar o systemctl e configurá-lo para iniciar em rclocal antes dos itens que você precisa?
Eu tenho o seguinte script no meu rc.local
:
Isso executa os serviços nas portas 8080, 8081, 8082, 8083. Eles são, na verdade, servidores de nós que precisam do mongod para a inicialização.
Então, eu editei /lib/systemd/system/rc-local.service
e adicionei:
After=network.target syslog.target mongod.service
Mas não: os scripts ainda falham porque, em tempo de execução, eles descobrem que o servidor de banco de dados está inativo.
O que eu poderia estar fazendo de errado? Como eu depuraria isso?
UPDATE : Agora que adicionei After=
, o erro não é a conexão mongoDb (eu estava olhando para logs antigos), mas sim o fato de que rc-local não parece ser começando de todo. Executar manualmente systemctl restart rc-local.service
funciona embora ...
UPDATE 2 : pegando syslog.target
, e assim:
After=network.target mongod.service
tem o estranho efeito colateral de que o METADE dos servidores (2 de 4) iniciam bem, e o outro HALF não consegue se conectar ao banco de dados. Isso me faz pensar que o systemd roda o mongodb, mas ainda não está pronto para receber conexões quando o rc-local é executado
Como solução alternativa, por que você não define o mongodb para não começar a usar o systemctl e configurá-lo para iniciar em rclocal antes dos itens que você precisa?