Quando você escreve "geralmente" , parece uma condição de corrida. É então aleatório qual das instâncias consegue sobreviver.
Não há nenhum problema básico no que você está tentando fazer com os scripts rc. Os scripts rc só iniciam os comandos. As coisas que você tenta iniciar, no entanto, precisam ser executadas em várias instâncias. O sistema rc não faz nada (como tal) magicamente para fazer isso.
Pelo que você descreve, eu acho que partes do projeto 1 & 2 estão usando os mesmos recursos, portanto, node.js só pode executar uma instância. Um exemplo seria que ambos os projetos se ligam à mesma porta. Duas instâncias não podem servir na mesma porta - então apenas a primeira a começar (a corrida) começa a viver.
Para depurar isso, comece a garantir que você manipule várias instâncias corretamente. Tente desativar seus scripts de inicialização. Então inicie ambos projetos manualmente ao mesmo tempo.
Primeiro você executa:
/usr/local/bin/node /usr/home/ec2-user/dev/projects/my_project_1/index.js
E então:
/usr/local/bin/node /usr/home/ec2-user/dev/projects/my_project_2/index.js
À medida que o nó sai para STDOUT e os erros vão para STDERR, é mais fácil ver o que está errado. Tenho certeza de que seu problema está por aqui e que a saída pode ajudá-lo a aprofundar sua investigação.
Se o acima realmente funcionar (contrariamente à minha suspeita), então você precisa obter a saída de log dos processos do nó inicial em seu script de inicialização. Não parece que os logs do node.js estão em um arquivo ou syslog. Isso significa que, se você tentar iniciar o script rc manualmente, deverá obter uma saída de erro na tela. Então tente controlar seu script rc usando:
service my_service_1 start
Para pesquisar mais sobre o registro, consulte onde está o nodejs-log-file .
NOTA: Você está jogando com seus próprios scripts em /etc/rc.d/your_script
, que é destinado ao sistema básico. Você deve colocar seus scripts em /usr/local/etc/rc.d/your_script
. O comando service
pesquisa os dois locais para que funcione da mesma forma. Nenhuma alteração incluída em /etc/rc.conf
.