Prováveis ​​causas de morte inesperada de NTPD e soluções

9

Em um aplicativo Web que usa s3 para armazenamento físico de documentos, estamos enfrentando problemas com o NTP morrendo continuamente. Isso parece acontecer aproximadamente uma ou duas vezes por dia. Há muito pouca informação fornecida quando isso ocorre, exceto que o arquivo PID existe, mas o serviço está inoperante quando verifico o status.

Alguém pode sugerir causas prováveis ​​de morte de NTPD? Estou assumindo que talvez o desvio do relógio esteja causando sua morte, mas também não tenho certeza do que causaria isso. Há memória mais do que suficiente e espaço em disco disponível.

A última vez que o serviço morreu, esta foi a saída:

Sep  6 06:15:25 vm02 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="988" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Sep  6 06:17:06 vm02 ntpd[10803]: 0.0.0.0 0618 08 no_sys_peer
Sep  6 08:01:10 vm02 ntpd[10803]: 0.0.0.0 0617 07 panic_stop -28101 s; set clock manually within 1000 s.
user275940
fonte
Qual SO e versão? Existe um esconderijo em execução? Quantos servidores ntp estão configurados? Quais opções ntpd são ativas?
Nils
Você poderia tentar remover o arquivo ntp.drift, seu valor pode ser muito alto e causando inclinação
Rqomey

Respostas:

6

Eu diria que não existe um método de 1 minuto para encontrar o motivo exato.

Tínhamos problemas semelhantes antes em nosso ambiente ESXi. Para encurtar a história, descobrimos que o relógio do host ESXi diminuiu bastante e as VMs convidadas estavam sincronizando o tempo do host ESXi e do servidor NTP upstream. Isso causou confusão no NTPd em VMs, portanto, morreu com bastante frequência.

Também descobrimos em alguns casos raros que a perda aleatória de pacotes também causou o encerramento do NTPd porque o tempo de ida e volta entre o servidor e o servidor NTPd upstream é usado para calcular o tempo de desvio.

Nos dois casos acima, se o NTPd perceber uma grande variação no tempo, por exemplo, mais de mil, ele será encerrado por padrão. -g opção ajudará um pouco.

   -g      Normally,  ntpd  exits  with  a  message to the system log if the offset exceeds the panic threshold,
           which is 1000 s by default. This option allows the time to be set to any value  without  restriction;
           however,  this  can  happen only once. If the threshold is exceeded after that, ntpd will exit with a
           message to the system log. This option can be used with the -q and -x options. See the tinker command
           for other options.

Você pode dar uma olhada no log do sistema , que deve ter algumas palavras para lhe dar uma dica. Você também pode monitorar a saída "ntpq -p" para ter uma idéia aproximada de como o deslocamento se desenvolve.

Enzo Wang
fonte
Ao executar o ntpd nas VMs, você também não deve sincronizar a hora com o host e não deve incluir o relógio local como referência.
Paul Engrenagem
3

A mensagem de log indica claramente que o desvio do relógio é o motivo da saída. Soluções possíveis:

  • Inicie o ntpd com o sinalizador -g; no entanto, isso não corrigirá a causa raiz, que é a inclinação do relógio.
  • Execute o ntpdate antes de iniciar o ntpd; provavelmente a mesma ressalva.
  • Adicione mais fontes de tempo; O NTP precisa de 4-6 fontes para manter uma boa precisão. Uma maneira simples de fazer isso é incluir repetidas referências a [0-3] .YOURREGION.pool.ntp.org na sua configuração, por exemplo

    server 0.au.pool.ntp.org iburst
    server 1.au.pool.ntp.org iburst
    server 2.au.pool.ntp.org iburst
    server 3.au.pool.ntp.org iburst
    
    server 0.au.pool.ntp.org iburst
    server 1.au.pool.ntp.org iburst
    server 2.au.pool.ntp.org iburst
    server 3.au.pool.ntp.org iburst
    
Paul Gear
fonte
1

Outra opção que você pode tentar é crony. Em nossos testes, ele tem desempenho mais estável que o ntpd e lida melhor com o desvio de tempo experimentado em ambientes virtuais.

http://chrony.tuxfamily.org/

Jokajak
fonte