Como um atraso maior pode ser colocado entre dois serviços upstart ou /etc/init.d interdependentes?

1

Meu PostgreSQL service deve iniciar após OpenVPN , e quando eu verificar os diretórios rc.X, eles são listados como S16openvpn e S19postgresql, então eles estão na ordem correta.

No entanto, a conexão a um banco de dados por meio da VPN falha e os logs sempre indicam que PostgreSQL não pôde ser vinculado na inicialização. Meu palpite é que leva algum tempo para que todos os serviços do OpenVPN sejam iniciados e PostgreSQL é iniciado antes que o carregamento das OpenVPN redes seja concluído.

Existe uma maneira de o PostgreSQL tentar recarregar e tentar se ligar à rede OpenVPN antes de desistir?

    
por vfclists 03.02.2013 / 20:02

3 respostas

4

Parece-me que você está tentando vincular postgres a um IP associado ao túnel. Se for esse o caso, o ip_nonlocal_bind é a solução para seus problemas. Definir o ip_nonlocal_bind permite ligar a qualquer IP, mesmo um não associado ao seu computador, que é exatamente o que você deseja quando deseja vincular a um IP que ainda não possui - por exemplo, ao usar IPs virtuais que flutuam entre ativos e nós passivos.

Assumindo que isso seja apenas o ipv4;

echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

Ou jogue em /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind
    
por 03.02.2013 / 21:29
2

Esta é a minha solução que usei muito tempo nessas situações: edite o script de início postresql rc.d e adicione um atraso com o comando sleep bash. Eu sei que isso não é tão limpo, talvez alguém tenha uma solução melhor.

    
por 03.02.2013 / 20:12
0

Recorte os dois scripts de inicialização separados, e faça um que chame os dois na sequência certa, com a lógica que você quiser

    
por 03.02.2013 / 21:34