Quelles sont les limites de l'exécution de serveurs NTP sur des machines virtuelles?

15

Je souhaite configurer plusieurs serveurs horaires Stratum 2 sur mon réseau local. Les machines virtuelles seraient certainement un moyen moins coûteux de le faire que d'acheter trois serveurs 1U. Quelles limitations cela imposerait-il? Autrement dit, dans quelle mesure la précision sera-t-elle affectée négativement?

De plus, mon instinct est que ces serveurs d'heure locale doivent résider sur différentes machines physiques afin d'atténuer les irrégularités matérielles. Cette intuition est-elle correcte?

Modifier Je dois dire que par « machines virtuelles » Je ne l' ai pas spécifiquement dire VMware . Je voulais plutôt parler du concept général des instances virtualisées.

James A. Rosen
la source

Réponses:

19

Le simple fait est que la précision de l'horloge dans une machine virtuelle est toujours très mauvaise. Cela vient de quelques endroits, mais ce qui tue, c'est que la dérive temporelle n'est pas constante; le facteur de dérive change d'instant en instant. NTP est un protocole qui intègre une compensation d'horloge, mais il a été conçu avec un facteur de dérive statique intégré. Par exemple, si une machine physique perd 12 secondes tous les 30 jours, NTP peut compenser cela et le fait très bien. Mais si cette machine peut perdre de 4 à 70 secondes tous les 30 jours, NTP n'est pas si bon pour suivre ce niveau de changement.

Ce qui rend vraiment difficile pour NTP de suivre dans un environnement VM, c'est que l'horloge locale qu'il voit peut changer son facteur de dérive en une minute. Selon la fréquence à laquelle il vérifie ses sources de temps parent, il peut provoquer des changements majeurs de facteur de dérive et entraîner une désynchronisation beaucoup plus fréquente. Le temps hors synchronisation tombe en cascade dans toute votre organisation.

Le NTP pour un réseau local est un protocole à impact relativement faible avec une très petite empreinte mémoire, et peut se greffer avec plaisir sur vos autres serveurs d'infrastructure réseau comme vos serveurs DNS et DHCP. Certains routeurs peuvent également fournir des fonctionnalités NTP, vous pouvez donc y réfléchir.

Idéalement, vous voulez deux serveurs distincts dans des emplacements distincts qui se synchronisent chacun avec un ensemble différent de serveurs de couche supérieure. Ce serait également une très bonne idée que les deux serveurs de temps ont été configurés pour utiliser l'autre serveur en tant que «pair», ce qui minimisera l'impact sur le service de temps si l'une des sources de temps en amont tournait mal; il y aura un changement de strate mais au moins il ne signalera pas de désynchronisation. Et enfin, soyez gentil avec vos fournisseurs de temps en amont et configurez vos serveurs pour passer très longtemps entre les sondages une fois que le temps est bien établi. Il s'agit du paramètre 'maxpoll' sur la ligne 'serveur', et c'est une puissance de deux en secondes entre les tentatives de synchronisation.

Si vous deviez absolument utiliser des machines virtuelles pour cela, je configurerais pas moins de trois de ces serveurs NTP. Chacun doit se trouver sur un hôte différent, et si possible dans un centre de données différent. Comme pour ce que je viens de suggérer, ils ont besoin de différentes sources de temps et doivent se comparer. Configurez ensuite tous vos clients NTP pour utiliser les trois en tant que sources parent. Assurez-vous que vos valeurs maxpoll sont suffisamment faibles pour ne jamais dépasser une heure et demie entre les paquets de synchronisation hors réseau et 30 minutes sur le réseau. Les chances sont bonnes, au moins l'un des trois sera synchronisé à tout moment. Pour les clients qui ne peuvent parler qu'à un seul hôte, ils n'auront qu'à supporter l'événement occasionnel hors synchronisation. Dans l'ensemble, la qualité du temps dans ce scénario ne serait pas aussi exacte qu'avec des serveurs physiques.

Si je devais me garer, je dirais que votre temps de consensus dans l'environnement pur-VM serait probablement dans, oh, 30 à 100 ms de vrai. Dans un environnement purement physique, votre temps de consensus serait probablement dans les 10 ms une fois que les serveurs de temps auraient été suffisamment longs pour que le temps se stabilise.

sysadmin1138
la source
1
Je suis assez certain que je veux au moins trois , pas seulement deux serveurs NTP locaux. Comment un client peut-il lever l'ambiguïté entre deux seulement?
James A. Rosen
Vous avez besoin d'un minimum de quatre pour une raison mystérieuse. Cela dit, nous avons juste deux serveurs internes qui sont synchronisés avec une demi-douzaine de serveurs externes (et leurs horloges locales en tant que sauvegardes). Fonctionne assez bien pour nous.
James
James A Rosen - C'est la joie de la configuration du groupe de pairs. Tant qu’au moins un membre du groupe de pairs a une connexion extérieure et est synchronisé, le groupe de pairs entier est synchronisé. Les clients peuvent dégrader une strate, mais au moins ils ne se désynchronisent pas. Vous en avez trois dans le groupe de pairs? Aucun problème.
sysadmin1138
1
Concernant le nombre de serveurs dont vous avez besoin, tout est là: support.ntp.org . Si vous n'en citez qu'une seule, il ne peut y avoir de question qui sera considérée comme «bonne» ou «mauvaise». [...] Avec deux, il est impossible de dire lequel est le meilleur [...]. Il s'agit en fait de la pire configuration possible [...]. Avec trois serveurs, vous disposez du nombre minimum de sources de temps [...] Cette configuration n'offre aucune redondance. Avec au moins quatre serveurs en amont, [...] ntpd disposera d'un nombre suffisant de sources parmi lesquelles choisir.
Mathieu
11

Voir le document de chronométrage vmware . L'exécution d'un démon NTP dans une machine virtuelle n'est probablement pas une bonne idée, surtout si vous avez besoin de temps fiable.

Zoredache
la source
2
Haha - "surtout si vous avez besoin de temps fiable"
squillman
1
Je ne pourrais pas être plus d'accord avec vous, en fait, je ne peux pas penser à un seul serveur moins approprié pour fonctionner dans une machine virtuelle :)
Chopper3
6

malheureusement ntp et virtualisation ne vont pas très bien ensemble. les clients sont ok dans la plupart des cas, cependant le serveur ntp (esp str2 et supérieur) ne fonctionne généralement pas de manière fiable sur le serveur virtuel.

Je commente du point de vue de l'entreprise xen et xen, mais je crois que vmware / kvm sera tout de même.

re différents serveurs, oui, vous avez raison, idéalement, ils devraient également être dans des environnements différents, de sorte que la température / humidité n'affecte pas la précision non plus, mais au moins je ne me soucie pas de cela. N'oubliez pas non plus que quoi que vous fassiez, ce n'est toujours pas aussi précis qu'une horloge atomique appropriée, alors acceptez simplement cette (très légère) déviation.

rytis
la source
1

En exécutant NTP dans un environnement virtualisé, vous aurez la chance d'atteindre une précision de 20 ms (c'est ce que nous avons fait en utilisant VMware). Le décalage d'horloge virtualisé est mauvais, en particulier dans un environnement virtualisé avec conflit de ressources.

Cela dépend de la précision dont vous avez besoin. Si vous ne vous souciez que du second (EG pour les serveurs Web), tout ira bien, tant que vous n'avez pas de conflit de ressources. Si vous voulez une précision en millisecondes (comme une base de données chargée, un serveur de journaux, un projet de recherche), oubliez les serveurs de temps virtualisés.

Les serveurs NTP doivent toujours être sur des hôtes physiques. Vous devriez avoir au moins 3 d'entre eux à regarder dans un pool (de sorte qu'un serveur escroc soit rejeté par le pool); et si possible, obtenez leur heure à partir du GPS ou d'une autre source locale de niveau 0 plutôt que sur Internet.

Steve Shipway
la source