Quali sono i limiti di esecuzione dei server NTP nelle macchine virtuali?


15

Voglio configurare diversi server orari Stratum 2 sulla mia rete locale. Le macchine virtuali sarebbero certamente un modo più economico per farlo rispetto all'acquisto di tre server 1U. Quali limiti imporrebbe questo? Cioè, fino a che punto la precisione sarà influenzata negativamente?

Inoltre, il mio istinto è che questi server dell'ora locale dovrebbero risiedere su macchine fisiche diverse al fine di mitigare eventuali irregolarità hardware. Questa intuizione è corretta?

Modifica Dovrei dire che per "macchine virtuali" non intendevo specificamente VMware . Piuttosto, intendevo il concetto generale di istanze virtualizzate.

Risposte:


19

Il semplice fatto è che la precisione dell'orologio all'interno di una VM è ancora molto negativa. Questo viene da alcuni punti, ma la cosa killer è che la deriva del tempo non è costante; il fattore di deriva cambia di momento in momento. NTP è un protocollo con al suo interno una compensazione dell'orologio, ma è stato progettato con un fattore di deriva statico incorporato. Ad esempio, se una macchina fisica perde 12 secondi ogni 30 giorni, NTP può compensare ciò e lo fa molto bene. Ma se quella macchina può perdere da 4 a 70 secondi ogni 30 giorni, NTP non è così bravo a rintracciare quel livello di cambiamento.

Ciò che rende davvero difficile per NTP tenere il passo in un ambiente VM è che l'orologio locale che vede può cambiare il suo fattore di deriva nel corso di un minuto. A seconda della frequenza con cui sta controllando le fonti temporali dei genitori, può causare importanti variazioni del fattore di deriva e causare una fuori sincronizzazione molto più frequente. Il tempo fuori sincrono si diffonde in tutta l'organizzazione.

L'NTP per una rete locale è un protocollo a impatto relativamente basso con un ingombro di memoria molto ridotto e può essere felicemente trasferito su altri server dell'infrastruttura di rete come i server DNS e DHCP. Alcuni router possono anche fornire funzionalità NTP, quindi potresti voler esaminare questo.

Idealmente, vuoi due server separati in posizioni separate che si sincronizzino con un diverso set di server di livello superiore. Sarebbe anche un'ottima idea che entrambi i time-server siano stati configurati per utilizzare l'altro server come un "peer", il che ridurrà al minimo l'impatto sul time-service nel caso in cui una delle sorgenti del tempo a monte vada male; ci sarà un cambio di strato ma almeno non verrà segnalato fuori sincrono. E infine, sii gentile con i tuoi provider di servizi a monte e configura i tuoi server in modo che passino molto tempo tra i sondaggi una volta stabilito il tempo. Questo è il parametro 'maxpoll' sulla linea 'server', ed è una potenza di due in secondi tra i tentativi di sincronizzazione.

Se dovessi assolutamente usare le VM per questo, configurerei non meno di tre di questi server NTP. Ognuno di questi deve trovarsi su un host diverso e, se possibile, in un data center diverso. Come per quello che ho appena suggerito, hanno bisogno di diverse fonti di tempo e dovrebbero scrutare l'un l'altro. Quindi configurare tutti i client NTP per utilizzare tutti e tre come origini padre. Assicurati che i tuoi valori di maxpoll siano abbastanza bassi da non passare mai più di un'ora e mezza tra i pacchetti di sincronizzazione fuori rete e 30 minuti in rete. È probabile che almeno uno dei tre sia sincronizzato in un dato momento. Per i clienti che possono parlare con un solo host di tempo, dovranno semplicemente sopportare l'evento occasionale non sincronizzato. Nel complesso, la qualità del tempo in questo scenario non sarebbe esatta come nei server fisici.

Se dovessi parcheggiare a palla, direi che il tuo tempo di consenso nell'ambiente della VM pura sarebbe probabilmente entro, da 30 a 100 ms di valore reale. In un ambiente puramente fisico, il tuo tempo di consenso sarebbe probabilmente entro 10 ms una volta che i server fossero stati abbastanza a lungo da consentire al tempo di stabilizzarsi.


1
Sono abbastanza certo di volerne almeno tre , non solo due server NTP locali. Come farebbe un cliente a disambiguare tra solo due?
James A. Rosen,

Hai bisogno di un minimo di quattro per qualche motivo arcano. Detto questo, abbiamo solo due server interni che sono sincronizzati con mezza dozzina di server esterni (e i loro orologi locali come backup). Funziona abbastanza bene per noi.
James,

James A Rosen - Questa è la gioia della configurazione del gruppo di pari. Finché almeno un membro del gruppo peer ha una connessione esterna ed è sincronizzato, l'intero gruppo peer è sincronizzato. I clienti possono degradare uno strato, ma almeno non vanno fuori sincrono. Ne hai tre nel gruppo dei pari? Nessun problema.
sysadmin1138

1
Per quanto riguarda il numero di server necessari, è tutto qui: support.ntp.org . Se ne elenchi solo uno, non ci possono essere dubbi che saranno considerati "giusti" o "sbagliati". [...] Con due, è impossibile dire quale è meglio [...]. Questa è in realtà la peggior configurazione possibile [...]. Con tre server, hai il numero minimo di fonti di tempo [...] Questa configurazione non fornisce ridondanza. Con almeno quattro server upstream, [...] ntpd avrà un numero sufficiente di fonti tra cui scegliere.
Mathieu,

11

Vedi il documento di cronometraggio vmware . L'esecuzione di un demone NTP in una VM non è probabilmente una buona idea, soprattutto se hai bisogno di tempo affidabile.


2
Haha - "in particolare se hai bisogno di tempo affidabile"
squillman

1
Non potrei essere più d'accordo con te, infatti non riesco a pensare a un singolo server meno adatto per l'esecuzione in una VM :)
Chopper3

6

sfortunatamente ntp e la virtualizzazione non vanno molto bene insieme. i client sono ok nella maggior parte dei casi, tuttavia il server ntp (esp str2 e successivi) generalmente non funziona in modo affidabile sul server virtuale.

sto commentando dal punto di vista xen e xen enterprise, ma credo che vmware / kvm sarà lo stesso.

per quanto riguarda server diversi, sì, hai ragione, idealmente dovrebbero trovarsi anche in ambienti diversi, in modo che la temperatura / umidità non influiscano sulla precisione, ma almeno non me ne preoccupo. inoltre, non dimenticare che qualunque cosa tu faccia, non è ancora preciso come un vero orologio atomico, quindi accetta questa (leggerissima) deviazione.


1

Eseguendo NTP in un ambiente virtualizzato, avrai la fortuna di ottenere una precisione di 20 ms (è quello che abbiamo fatto usando VMware). L'inclinazione dell'orologio virtualizzato è errata, in particolare in un ambiente virtualizzato con contesa di risorse.

Dipende da quanto devi essere preciso. Se ti preoccupi solo del secondo (ad es. Per i server Web), probabilmente starai bene, purché non disponga di contese di risorse. Se si desidera una precisione di millisecondi (come un database occupato, un server di registro, un progetto di ricerca), dimenticare i time server virtualizzati.

I server NTP devono sempre trovarsi su host fisici. Dovresti avere almeno 3 di loro che scrutano in un pool (in modo che un server non autorizzato venga escluso dal pool); e, se possibile, ottenere il proprio tempo dal GPS o da altre fonti locali di livello 0 anziché tramite Internet.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.