Configuração NTP adequada para alguns servidores

9

Eu tenho cerca de 20 servidores Linux em uma rede pequena e preciso dos relógios deles decentemente próximos um do outro (por exemplo, dentro de 20msec). Comecei com todos eles sincronizados com europe.pool.ntp.org e o trabalho está feito.

Agora eu tenho duas perguntas:

  1. Sou um fardo perceptível para a piscina? Ou seja, faz alguma diferença perceptível para a piscina se eu estiver acessando de 20 servidores ou de 2?
  2. Se isso faz alguma diferença, qual é a instalação / configuração que manterá minha sub-rede sincronizada e o pool sob carga leve? Existem diretrizes para redes enormes ( http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101 ), mas não encontrei nenhuma para redes pequenas.
ndemou
fonte
1
Normalmente, você deve ter um ou dois servidores de horário interno com os quais sincroniza sua rede interna. Seus dois servidores internos podem ter um peerrelacionamento. Veja, por exemplo, ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101
Marki
Obrigado pelos comentários e link Marki. Quanto ao link, observa que é para "uma enorme rede", o que certamente não é o meu caso. Em relação à sua sugestão: não acho que um servidor de horário interno seja uma boa ideia (ponto único de falha), mas 2 pareçam uma boa ideia. Você pode explicar o que é um relacionamento entre colegas (ou fornecer um link)?
Ndemou 27/12/14
Também deve observar que eu definitivamente não sou um especialista NTP - longe disso :-)
ndemou
Não vai doer se você pesquisar um pouco sobre o que é um colega. Observe que este site não serve nada em uma bandeja de prata quando as pessoas não fazem nenhuma pesquisa.
Marki
Não me entenda mal, eu fiz minha lição de casa, mas o NTP é um desses assuntos em que a maioria da documentação é muito difícil de engolir (esse é o ntp.conf - basta usá-lo) ou muito profunda (50 páginas da teoria da operação para ler antes de você) pode começar a entender os fatos básicos).
Ndemou

Respostas:

8
  1. Sou um fardo perceptível para a piscina? Ou seja, faz alguma diferença perceptível para a piscina se eu estiver acessando de 20 servidores ou de 2?

Dado que o pool está em constante necessidade de servidores por muitos anos (consulte [1]), eu diria que, embora 2 ou 20 servidores não façam realmente a diferença, você deve sempre lembrar que não está sozinho. Então é melhor você pensar em, digamos, 1000 administradores. Nesse caso, estamos falando de 2000 ou 20000 servidores, e isso faz a diferença.

  1. Se isso faz alguma diferença, qual é a instalação / configuração que manterá minha sub-rede sincronizada e o pool sob carga leve?

Você deve sincronizar dois [2] servidores em sua rede com o pool (vamos chamá-los de Servidores NTP Primários ) e depois sincronizar todos os outros servidores para esses dois. Esse método também tem a vantagem de que o tempo entre todos os seus servidores será correspondido mais de perto (em menos de 1 ms). Isso está de acordo com as melhores práticas da IETF .

1) A configuração para os servidores NTP principais

Substitua as linhas servere restrictdo seu ntp [d] .conf pelo seguinte e mantenha o restante nos padrões de distribuição [3]:

server 10.11.12.1  iburst peer
#      ^^^^^^^^^^^
#      The LAN IP of the _other_ Primary NTP server 
server 0.europe.pool.ntp.org 
server 1.europe.pool.ntp.org 
server 2.europe.pool.ntp.org 
server 3.europe.pool.ntp.org 
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

Observe que essa configuração também permite que hosts de toda a Internet consultem o horário do seu host por meio de consultas NTP. Use seu firewall se você não quiser. No meu exemplo, 10.11.12.1 e 10.11.12.2 são os IPs dos servidores NTP principais (eles têm duas placas de rede, uma voltada para a Internet pública e outra para a sub-rede 10.11.12.x local). Cada servidor NTP principal tem o outro declarado como ponto (ponto significa basicamente servidor e cliente - você usa o outro host como fonte de tempo e o outro host também como fonte de tempo). Portanto, ajuste o IP na 1ª linha para que a configuração de cada Servidor NTP Primário aponte para o outro como um par. Veja [4] sobre minha escolha de usar 4 servidores.

2) A configuração para todos os outros servidores

2A) Se você tiver duas interfaces de rede

É melhor usar a segunda interface para criar uma sub-rede local (por exemplo 10.11.12.0/24) e usá-la para consultas NTP. Nesse caso, as linhas restritas podem ser mais apertadas. Portanto, substitua novamente as linhas servere restrictdo seu ntp [d] .conf pelo seguinte e mantenha o restante com os padrões de distribuição [3]:

restrict -4 default ignore
restrict -6 default ignore
restrict 10.0.0.0 mask 255.0.0.0 kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

2B) Se você não possui duas interfaces de rede

Você deve usar as seguintes linhas restritas (e leia a observação sobre o uso do firewall para bloquear o acesso aos servidores NTP acima). Portanto, substitua novamente as linhas servere restrictdo seu ntp [d] .conf pelo seguinte e mantenha o restante com os padrões de distribuição [3]:

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

Notas

[1] De 2006 a 2012, eles constantemente solicitam a adesão de mais servidores: a solicitação de 2006 , a de 2009 e a de 2012 . Verifique www.pool.ntp.org para atualizações sobre o status atual.

[2] Dois servidores NTP principais são sugeridos apenas como uma maneira simples de ter redundância sem acordos complicados de alta disponibilidade. Você pode optar por 3 ou 4 por outros motivos (leia novamente as melhores práticas da IETF )

[3] Na prática e não importa a sua distribuição, a única outra coisa que você precisa incluir na configuração do ntpd é uma linha que define um diretório para colocar um arquivo de deriva e um nome para ele - por exemplo driftfile /var/lib/ntp/ntp.drift. Eu testei minha solução no CentOS, Debian e Ubuntu. Eu acho que funciona na maioria das outras distros.

[4] Configurei 4 servidores de pool seguindo as práticas recomendadas . A configuração de mais de 4 servidores é tecnicamente aceita, mas você aumentará a carga no pool NTP para obter um ganho questionável na disponibilidade; portanto, não faça isso. Nas práticas recomendadas, vejo que "a partir do ntp-4.2.6, a diretiva 'pool' gerará associações" suficientes "para fornecer um serviço de horário robusto", portanto, se você usar .pool. endereços como eu faço aqui e ntp> = 4.2.6 o número exato de linhas de servidor provavelmente não importa.

Rant Oh! Eu odeio NTP (exceto que eu gosto que ele funcione). A documentação oficial está cheia de informações obsoletas e elas têm "como eu as uso?" informações misturadas com detalhes científicos sobre os internos. E eu também odeio como restrict 127.0.0.1realmente significaallow everything for 127.0.0.1


Histórico de atualizações

Eu removi a iburstopção da configuração dos servidores NTP locais porque a facilidade de uso deles é discutível. (Ver comentários). A remoção deles adiciona apenas alguns minutos de tempo de espera à primeira sincronização.


Créditos

Comentários e respostas dos usuários do SF Marki e Sven forneceram um bom ponto de partida para esta resposta. Graças a ambos.

ndemou
fonte
1
+1 de mim. Eu executo um servidor de pool e não posso enfatizar demais a exatidão desta postagem, exceto que esse ibursté um parâmetro irritante para uso em servidores públicos, portanto, não faça isso (embora não seja tão irritante quanto burst). Os administradores de servidores de pool estão fazendo um favor a você sem saber quem você é e sem qualquer recompensa para si mesmos, apenas para o melhor funcionamento da Internet. Se você, trabalhando mais, pode facilitar a vida deles, deve isso a eles.
MadHatter
Obrigado MadHatter. Em relação ao iburst, achei aceitável para servidores "sempre ativos" típicos. Você tem algum link para apoiar seu conselho de não usar esta opção? (Eu verifiquei www.pool.ntp.org/en/use.html e também pesquisei para 10min, mas não encontrou nada conclusivo)
ndemou
Terei prazer em compartilhar minhas estatísticas de tráfego; uma amostra rápida sugere que hosts mal configurados, ou seja, hosts que transmitem mais de uma vez por minuto, compõem cerca de 45% dos meus clientes, mas são responsáveis ​​por cerca de 75% do tráfego. Isso será principalmente de servidores que usam burst, mas até iburstdiz (na ntpdpágina de manual) " com esta opção, uma saraivada de mensagens é trocada para ajustar os dados e ajustar o relógio em cerca de 10 segundos ". Usar o iburstcomando " ajustar meu relógio rapidamente é mais importante do que manter a carga no servidor baixa ", e isso é falta de educação.
21915 MadHatter
Você está certo sobre a "saraivada de mensagens", mas até onde eu entendi essa explosão só acontecerá durante a inicialização do daemon NTP e (talvez) se o servidor do pool estiver momentaneamente inacessível (eu sou da inicial). Aqui está um resumo da página NTPd do wiki do Arch: "A opção iburst é recomendada e envia uma explosão de pacotes apenas se não for possível obter uma conexão com a primeira tentativa. A opção de explosão sempre faz isso, mesmo na primeira tentativa, e nunca deve ser usado sem permissão explícita e pode resultar em lista negra ".
Ndemou
Você está certo que ibursté muito menos censurável que burst. O que quero dizer é que, quando você usa o recurso de outra pessoa de graça, há um argumento de que você deve se curvar para ser considerado; simplesmente não ser ativamente desatento pode não ser suficiente. Concordo que é uma boa prática, mas esses documentos não levam em consideração se os servidores upstream aos quais você está sincronizando fazem parte da sua empresa ou não; eles ditam as melhores práticas técnicas (que, eu concordo, é usar iburst), e não as melhores práticas sociais .
MadHatter
6

A abordagem usual para isso é usar uma configuração em camadas - você sincroniza um ou dois servidores em sua rede com o pool e os usa como sua fonte de horário local. Esses níveis são chamados de estratos no jargão NTP.

Além disso, pense sobre isso: se você fizer isso como descrito, não será realmente perceptível, mas se 1000 sites do seu tamanho começarem, você terá 20 mil solicitações desnecessárias e, em algum momento, ficará perceptível.

Leia http://en.wikipedia.org/wiki/Network_Time_Protocol

Sven
fonte
Mas considere o ponto de vista alternativo - mais vinte clientes, além de milhões de clientes existentes, são quase nada.
200_success
2
Como ele disse, se todo mundo começa a pensar dessa forma ...
Marki
Mas em que ponto você para? Pense em todos os dispositivos da classe Linksys que são fornecidos pré-configurados para uso pool.ntp.org. Certamente o tráfego DNS excede o tráfego NTP. Você também precisa armazenar em cache o DNS localmente? Mesmo o tráfego DNS provavelmente será minúsculo em comparação com o restante do consumo de largura de banda.
200_success
@ 200_success: Não vale a pena debater, mas a maioria desses dispositivos "da classe Linksys" realmente armazena o tráfego DNS localmente e eles consultam o DNS do ISP, que também armazena em cache ...
Sven
1
Se a Linksys enviar dispositivos sincronizados, ntp.pool.orgeles violam os termos do pool ; se eles fizeram isso corretamente aplicando uma zona de fornecedor (consulte o link), também é esperado que eles também contribuam para o projeto do pool na proporção da carga deles (novamente, consulte o link).
MadHatter