Qual é a maneira recomendada de sincronizar o tempo usando o NTP?

18

Esta questão surgiu várias vezes de maneira localizada, com o objetivo de fornecer o método preferido / melhor para sincronizar o relógio de um sistema usando o NTP.

A solução deve lidar com vários problemas corretamente, como:

  1. Corrija o tempo na inicialização rapidamente, onde o relógio tem uma grande inclinação.

  2. Forneça uma configuração que proteja e / ou corrija situações em que o relógio às vezes possa desenvolver uma grande inclinação ao longo do tempo.

  3. Uma solução robusta que pode gerenciar e sincronizar o horário rapidamente quando surgem certos problemas, como: "o servidor de horário não estava acessível durante a inicialização" ou "a internet está inacessível durante a inicialização".

A solução ideal seria um único arquivo de configuração NTP capaz de lidar com tudo isso.

Referências

Muitas das peças que fornecerão a solução "definitiva" estão espalhadas pelo site de U&L em questões como estas:

É provável que existam outros, mas esses são os que eu vi que vêm à mente como relevantes.

slm
fonte
1
Discussão sobre o escopo desta pergunta
Gilles 'SO- stop be evil'
1
FYI: Planejando trabalhar em uma resposta abrangente para isso. Veja o registro do bate-papo iniciando em chat.stackexchange.com/transcript/message/11350138#11350138
derobert,
# 2 não deve acontecer se ntpd está em execução
dfc
@dfc - isso pode acontecer quando uma VM é pausada e depois retomada, há outras situações em que também pode acontecer.
slm
@slm "desenvolve" significa um salto no tempo após a reinicialização da VM? Parece que dentro de algumas horas após a reinicialização, o ntpd deve controlar a inclinação. Definitivamente não vai piorar as coisas. Quais são as outras situações?
dfc

Respostas:

6

Como você não pode corrigir grandes desvios no tempo usando o ntp (a menos que você tenha algumas horas para o relógio acelerar ou desacelerar), faço o seguinte:

serviço ntpd stop
ntpdate us.pool.ntp.org
serviço ntpd start

Eu crono uma vez por dia, todos os dias. Também coloquei o ntpdate em um script init para executar antes do ntp iniciar após a inicialização, pois reinicializações e ciclos de energia são os eventos mais prováveis ​​/ frequentes que interferem na hora do sistema.

Andrew
fonte
Se o ntpd estiver sendo executado com êxito, por que você precisa parar e iniciá-lo? Parece uma péssima ideia.
DFC
3
O ntpdate não funcionará se o ntpd estiver em execução.
Grizly 10/10
4

O que você está procurando é ntpdcom a --panicgateopção.

A opção panicgate permite que o primeiro ajuste após o ntpdinício seja de qualquer tamanho. Isso é exatamente para o caso de uso que você descreveu onde uma máquina é acionada e seu relógio é impreciso. Quando o ntpd inicia com esta opção ativada, pode levar um momento para encontrar um servidor e estabelecer a sincronização com ele.

Essa opção, por si só, resolve o item nº 1.

# 2 é ntpd de baunilha. O Ntpd mantém um arquivo de deriva, que é a taxa de distorção do relógio do sistema.

O nº 3 também é o mesmo que o nº 1. A --panicgateopção não se limita a imediatamente quando o ntpd é iniciado, mas ao "primeiro ajuste", sempre que esse ajuste for.

Patrick
fonte
digitação ntpd --panicgate e data não faz absolutamente nada
AlxVallejo
Você modifica os arquivos init para serem aprovados -gou existe uma opção equivalente para definir ntp.conf?
Jérôme
Acabei de perceber que -gjá é usado por padrão na minha instalação da Debian, mas não sei em qual arquivo init / config isso é feito.
Jérôme
2

Use chronyd / chronyc em vez de ntp / ntpdate. Já é o método padrão no fedora e, suponho, estará no RHEL 7.0 assim que estiver pronto.

A documentação pode ser encontrada em http://chrony.tuxfamily.org/

alvo
fonte