Portanto, estou tentando depurar minha configuração atual do NTP e constatou que o deslocamento do meu único servidor configurado é superior a 3 segundos e não está sendo ajustado. O asterisco no LOCAL (0) na saída ntpq parece indicar que o sistema está sincronizando felizmente consigo mesmo, em vez do servidor 10.130.33.201 (que é outra caixa linux em nosso sistema com a qual queremos que tudo seja sincronizado).
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.130.33.201 LOCAL(0) 9 u 49 64 377 0.242 -3742.2 1.049
*LOCAL(0) .LOCL. 10 l 2 64 377 0.000 0.000 0.001
E este é o meu arquivo ntp.conf. Escrito por outra pessoa, por isso não tenho 100% de certeza de que tudo está correto.
server 10.130.33.201 burst iburst minpoll 4 maxpoll 11
driftfile /mnt/active/etc/ntp.drift
restrict -4 default nomodify nopeer notrap
restrict -6 default ignore
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
Eu li sobre o burst e iburst e minpoll / maxpoll, então percebo que esses podem não ser necessários, mas acho que isso não tem nada a ver com o meu problema atual.
Além disso, devido à maneira como ele é implantado, esse arquivo de configuração levará muito trabalho para mudar, então espero que não exista nada que realmente precise ser alterado. Espero que este seja um caso em que eu não entenda como o NTP funciona.
EDIT -
Portanto, parece que esta é uma duplicata desta pergunta , mas não acho que o pôster tenha uma resposta suficiente; portanto, ainda gostaria de saber por que a hora local está sendo preferida ao servidor. Além disso, conforme uma das respostas abaixo, tentei usar a prefer
palavra-chave na linha do servidor de configuração e reinicialização, mas isso não parece ter tido efeito.
Se eu remover todas as linhas "locais" na configuração, como sugerem as respostas para a outra pergunta, o que acontecerá se o servidor estiver inacessível? O NTP morre ou continua tentando?
EDIÇÃO IMPORTANTE -
Ok, normalmente, 10.130.33.201 (O "servidor") não tem acesso à Internet e não possui uma fonte de tempo GPS para usar. A parte importante é que todos os dispositivos no sistema tenham o mesmo horário que o servidor, independentemente de quão correto seja esse horário.
Portanto, apenas para ver o que aconteceria, adicionei um dos servidores de pool NTP ao arquivo de configuração do servidor para obter tempo a partir daí e não local. Agora ele obtém tempo corretamente do servidor de horário NTP.
Depois disso, os clientes agora sincronizam com o servidor, em vez de preferirem LOCAL (0)
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*10.130.33.201 38.229.71.1 3 u 58 64 377 0.216 715621. 1.001
LOCAL(0) .LOCL. 10 l 18 64 377 0.000 0.000 0.001
NOVA PERGUNTA - Quando meu servidor está usando local (exemplo original que foi dado), parece que os clientes estão dizendo: "Oh, 10.130.33.201 está usando LOCAL (0). Hmm, eu também tenho um servidor LOCAL (0) - - Vou usar isso diretamente, em vez de obter as mesmas informações em 10.130.33.201 ".
É esse o caso? Eles estão tentando ir "diretamente para a fonte", que é incorretamente LOCAL (0)? Eu preciso do meu servidor para obter tempo de LOCAL (0) e dos clientes para obter tempo do servidor. No momento, remover o servidor "local" dos arquivos de configuração do cliente é a única opção, mas eu gostaria de entender por que isso está acontecendo e, se possível, evitar alterar suas configurações (a alteração da configuração será muito trabalhosa devido a Nosso ambiente...).
Além disso, isso parece outra duplicata sem uma boa resposta.
Respostas:
Com apenas um servidor NTP configurado, o algoritmo não tem muita certeza em quem confiar. Embora o estrato seja menor com o host remoto, aposto que o algoritmo considera a hora local mais confiável.
Tente usar a
prefer
palavra-chave com suaserver
declaração para defini-la como uma fonte de tempo preferencial.Para uma resposta realmente suficiente, você vai cavar as entranhas de um algoritmo muito complexo. A documentação nem fica muito específica, mas tenho certeza de que há um white paper ou especificação por aí.
O daemon NTP não morre ou para, mas pára o tempo de sincronização após falha ao acessar o servidor remoto. É por isso que as práticas recomendadas sugerem no mínimo três servidores remotos e não devem ser usadas a LCL, a menos que você esteja desconectado da rede. Três servidores são sugeridos porque, quando existem apenas dois, e eles discordam, qual deles escolherá? O terceiro servidor deve ajudar o algoritmo a eliminar o servidor falso.
Por fim, acabei de perceber que você não define a
driftfile
. Isso pode ajudar?fonte
Parece-me que o intervalo de deslocamento (diferença entre a hora do sistema e a hora do host NTP) é muito diferente para o NTP configurá-lo corretamente.
Minha sugestão,
Você não deve ter problemas depois disso.
fonte
tinker panic 0
opção ntp para forçar o NTP a aceitar compensações. Mas use isso apenas com servidores NTP que você nunca terá problemas.prefer
faria o truque.O estrato de 10.130.33.201 como servidor LOCAL é 9, o que faz com que o estrato local calculado a partir disso (9 + 1 = 10) concorra com o servidor LOCAL local no estrato 10. Como o estrato LOCAL local não possui atrasos ou instabilidade de rede, pode parecer um pouco melhor para ntpd do que o remoto.
Se você deseja que essa configuração funcione, defina o servidor LOCAL 'master' com um nível inferior a 9. Não muito baixo se desejar que um tempo rastreável para um servidor do nível 1 seja preferido.
fonte
Eu sei que isso é velho, mas acho que você está certo. Ninguém mostra nenhuma maneira de depurar problemas ntpd. Acontece que é factível.
Acho que você estava no caminho certo quando suspeitou que o uso de LOCAL (0) localmente e no servidor upstream pode ser um problema.
Certamente estava em um console de tempo de 4 servidores com os quais tive um problema semelhante. Tudo estava pronto para ser um do outro, então, possivelmente, um problema diferente do seu.
Primeiro, porém, há uma maneira melhor de lidar com ilhas de tempo, chamada modo órfão, suportada pelas versões ntpd dos últimos anos:
Modo órfão em doc.ntp.org
Inicialmente, todos os 4 servidores tinham o mesmo estrato de 10 e preferiam o relógio local. Eu consertei isso e ainda assim eles preferiam o relógio local (o estrato parece ser importante).
Eu usei o comando ntpq pe (peer), as, rv para obter uma idéia do que estava acontecendo. Você precisa usar rv (readvar) no número de associação para o servidor despejar as informações. pe e como parecem ser classificados pelo mesmo índice para que você possa obter o número as dessa maneira. como tem um campo chamado condição que pode mostrar o valor rejeitado se não gostar do servidor.
Na saída rv existe um campo chamado flash. Se tudo estiver bem, será zero. Caso contrário, é uma máscara de bit (exibida em hexadecimal) dos problemas. Eles podem ser consultados aqui:
decodificações internas ntpd
O problema que tive foi 0800 peer_loop. Descobriu-se que refid do relógio é importante. Vendo LOCAL (0) tanto no relógio local quanto no servidor remoto, o ntpd achou que havia um loop. David Mills confirma que nas postagens em comp.protocols.time'How to evitar loop in NTP '(atingi meu limite de 2 links, desculpe!)
O uso do argumento refid para alterar a definição do refid exclusivo não funcionou - ele ainda aparece como LOCAL (0) no destinatário.
O que parecia funcionar foi o uso de números de instância exclusivos para o driver local. 127.127.1. [0-3]. Use o mesmo ID no servidor e na linha de falsificação. Quando eu fiz isso, os servidores geralmente sincronizavam com o servidor de camada mais baixa, que geralmente usava o relógio local. No entanto, ocasionalmente, tentava usar um dos outros servidores que o estavam usando como fonte. No entanto, os tempos entraram em sincronia e parecem continuar assim.
Provavelmente é tarde demais para ajudar, mas eu ofereço para mostrar que o NTP é passível de lógica e solução de problemas. Levei horas para chegar à resposta por tentativa e erro e depois encontrei os documentos mais tarde.
fonte
Use iburst para forçar o servidor a enviar a solicitação NTP para o NTS desejado, mesmo se uma solicitação falhar
fonte