Quais são os limites da execução de servidores NTP em máquinas virtuais?


15

Quero configurar vários servidores de horário Stratum 2 na minha rede local. Máquinas virtuais certamente seriam uma maneira mais barata de fazer isso do que comprar três servidores de 1U. Que limitações isso o imporia? Ou seja, em que grau a precisão será afetada negativamente?

Além disso, meu instinto é que esses servidores de horário local residam em diferentes máquinas físicas para atenuar qualquer irregularidade de hardware. Esta intuição está correta?

Editar Devo dizer que por "máquinas virtuais" não me refiro especificamente ao VMware . Antes, eu quis dizer o conceito geral de instâncias virtualizadas.

Respostas:


19

O simples fato é que a precisão do relógio em uma VM ainda é muito ruim. Isso vem de alguns pontos, mas o mais interessante é que a deriva no tempo não é constante; o fator de desvio muda de momento para momento. O NTP é um protocolo que possui compensação de clock, mas foi projetado com um fator de desvio estático incorporado. Por exemplo, se uma máquina física perde 12 segundos a cada 30 dias, o NTP pode compensar isso e faz muito bem. Mas se essa máquina puder perder de 4 a 70 segundos a cada 30 dias, o NTP não será tão bom em acompanhar esse nível de mudança.

O que torna realmente difícil para o NTP acompanhar um ambiente de VM é que o relógio local que ele vê pode alterar seu fator de desvio ao longo de um minuto. Dependendo da frequência em que está verificando suas fontes de tempo pai, pode causar grandes alterações nos fatores de desvio e sair da sincronia com muito mais frequência. O tempo fora de sincronia se espalha por toda a organização.

O NTP para uma rede local é um protocolo de impacto relativamente baixo, com um espaço de memória muito pequeno e pode ser transferido com facilidade para outros servidores de infraestrutura de rede, como os servidores DNS e DHCP. Alguns roteadores também podem fornecer a funcionalidade NTP, portanto, convém examinar isso.

Idealmente, você deseja dois servidores separados em locais separados, cada um sincronizado com um conjunto diferente de servidores de estrato superior. Também seria uma idéia muito boa de os dois servidores de horário estarem configurados para usar o outro servidor como um 'par', o que minimizará o impacto no serviço de horário, caso uma das fontes de tempo upstream dê errado; haverá uma alteração no estrato, mas pelo menos não será relatada fora de sincronia. E, finalmente, seja gentil com seus provedores de tempo upstream e configure seus servidores para passarem muito tempo entre as pesquisas quando o tempo estiver bem estabelecido. Esse é o parâmetro 'maxpoll' na linha 'server' e é uma potência de dois em segundos entre as tentativas de sincronização.

Se você absolutamente tivesse que usar VMs para isso, eu configuraria nada menos que três desses servidores NTP. Cada um deles precisa estar em um host diferente e, se possível, em um data center diferente. Assim como o que acabei de sugerir, eles precisam de fontes de tempo diferentes e devem se espelhar. Em seguida, configure todos os seus clientes NTP para usar os três como fontes pai. Verifique se os valores de maxpoll são baixos o suficiente para nunca passar mais de uma hora e meia entre pacotes de sincronização fora da rede e 30 minutos na rede. As chances são boas de que pelo menos um dos três esteja sincronizado a qualquer momento. Para clientes que só podem conversar com um host, eles precisam apenas suportar um evento ocasionalmente fora de sincronia. No geral, a qualidade do tempo nesse cenário não seria tão exata quanto seria com os servidores físicos.

Se eu tivesse que parar, eu diria que seu tempo de consenso no ambiente de VM pura provavelmente estaria dentro de, oh, 30 a 100ms de verdade. Em um ambiente puramente físico, seu tempo de consenso provavelmente chegaria a 10 ms depois que os servidores estivessem funcionando por tempo suficiente para resolver.


1
Estou bastante certo de que quero pelo menos três , não apenas dois servidores NTP locais. Como um cliente desambiguaria entre apenas dois?
James A. Rosen

Você precisa de um mínimo de quatro por algum motivo misterioso. Dito isto, apenas temos dois servidores internos sincronizados com meia dúzia de servidores externos (e seus relógios locais como backups). Funciona bem o suficiente para nós.
James

James A Rosen - Essa é a alegria da configuração de grupo de pares. Contanto que pelo menos um membro do grupo de pares tenha uma conexão externa e esteja sincronizado, todo o grupo de pares estará sincronizado. Os clientes podem degradar um estrato, mas pelo menos não ficam fora de sincronia. Tem três no grupo de colegas? Sem problemas.
sysadmin1138

1
Em relação ao número de servidores que você precisa, está tudo aqui: support.ntp.org . Se você listar apenas um, não há dúvida de que será considerado "certo" ou "errado". [...] Com dois, é impossível dizer qual é o melhor [...]. Esta é realmente a pior configuração possível [...]. Com três servidores, você tem o número mínimo de fontes de tempo [...] Esta configuração não fornece redundância. Com pelo menos quatro servidores upstream, o [...] ntpd terá um número suficiente de fontes para escolher.
9156 Mathieu

11

Consulte o documento de cronometragem do vmware . A execução de um daemon NTP em uma VM provavelmente não é uma boa ideia, principalmente se você precisar de um tempo confiável.


2
Haha - "especialmente se você precisar de tempo confiável"
squillman

1
Eu não poderia concordar mais com você, na verdade, eu não consigo pensar em um único servidor menos apropriado para ser executado em uma máquina virtual :)
Chopper3

6

infelizmente, ntp e virtualização não combinam muito bem. os clientes estão bem na maioria dos casos, no entanto, o servidor ntp (esp str2 e acima) geralmente não funciona de maneira confiável no servidor virtual.

Estou comentando da perspectiva empresarial xen e xen, mas acredito que o vmware / kvm será o mesmo.

Em servidores diferentes, sim, você está certo, o ideal é que eles também estejam em ambientes diferentes, para que a temperatura / umidade também não afete a precisão, mas pelo menos eu não me importo com isso. também não esqueça que, o que quer que você faça, ainda não será tão preciso quanto o relógio atômico adequado; portanto, aceite esse desvio (muito leve).


1

Ao executar o NTP em um ambiente virtualizado, você terá sorte em atingir uma precisão de 20ms (foi o que fizemos usando o VMware). O desvio do relógio virtualizado é ruim, principalmente em um ambiente virtualizado com contenção de recursos.

Depende da precisão que você precisa ser. Se você se preocupa apenas com o segundo (EG para servidores da Web), provavelmente ficará bem, desde que não tenha contenção de recursos. Se você deseja uma precisão de milissegundos (como um banco de dados ocupado, servidor de log, projeto de pesquisa), esqueça os servidores de horário virtualizados.

Os servidores NTP sempre devem estar em hosts físicos. Você deve ter pelo menos três deles em um pool (para que um servidor não autorizado seja votado pelo pool); e, se possível, obtenha tempo usando GPS ou outra fonte local de nível 0, e não pela Internet.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.