Régler l’heure de serveurs virtuels sous Debian

Régler l’heure de serveurs virtuels sous Debian 1

Debian etch ne synchronise pas d’office l’horloge avec un serveur de temps internet – Voici un petit tuto très bien fait expliquant comment ajouter cette fonctionnalité.

Quand des serveurs ont besoin de communiquer entre eux, il devient vite indispensable d’utiliser la même référence de temps. Cela semble évident mais, en pratique, ce petit détail est souvent négligé. Résultat : synchronisation de données défectueuses, résultats incohérents, documents écrasés par d’anciennes versions, fichiers de log illisibles… Que du bonheur !

Pourtant, mettre à l’heure un serveur est simple. Et quand le serveur accueille des serveurs virtuels ? Comme nous allons le voir, cela reste toujours simple !

Lire l’heure

L’heure d’un serveur sous Debian (comme sur d’autres distributions Linux) est gérée par la commande date. Sans paramètre, elle retourne la date et l’heure du système :
# datemar avr 18 12:47:53 CEST 2006
On remarque au passage que le résultat est formaté selon les paramètres de localisation du système (ici en français pour l’heure locale de Paris).

Pour obtenir l’heure UTC, c’est-à-dire l’heure universelle ou heure de Greenwich, on ajoute le paramètre -u :

# date -umar avr 18 10:47:53 UTC 2006


On obtient bien un décalage de 2 heures par rapport à l’heure de Paris.

Modifier l’heure

Pour modifier l’heure, on utilise le paramètre –set :

# date –set 12:53:20


Et si la date n’est pas bonne, même remède :

# date –set 2006-05-18

Configuration du fuseau horaire

Si le fuseau horaire ne convient pas, inutile de réinstaller le système ! On utilise simplement la commande tzconfig et on répond aux questions :

# tzconfigYour current time zone is set to Europe/ParisDo you want to change that? [n]: y

Please enter the number of the geographic area in which you live:[…]Number: 8

[…]

Please enter the name of one of these cities or zones[…]Name: ParisYour default time zone is set to ‘Europe/Paris’.Local time is now: mar avr 18 13:07:02 CEST 2006.Universal Time is now: mar avr 18 11:07:02 UTC 2006.


Facile ! Pour information, la configuration du fuseau horaire est stockée dans le fichier /etc/timezone.

Temps système et temps BIOS

Tout semble parfait mais il y a un détail sournois : votre serveur gère deux références de temps, celle du système et celle de la carte-mère (horloge BIOS) ! Et elles peuvent très bien ne pas indiquer la même heure ! Dans certains cas, cette subtile différence peut avoir des conséquences agaçantes lors du redémarrage du serveur (par exemple, perte de l’heure système). Comme dit le proverbe, “l’homme qui a une montre sait l’heure qu’il est, celui qui en a deux n’est jamais sûr.”

Donc, autant régler une bonne fois pour toute l’heure matérielle avec la commande hwclock. Comme nous avons déjà réglé l’heure système, on utilise l’option –systohc pour la récupérer et –utc pour la définir en heure UTC :

# hwclock –systohc –utc

Synchronisation avec un serveur de temps

“Bon, tout est à l’heure, je passe à autre chose.”

Pas encore ! Car le quartz qui pilote l’oscillation de l’horloge de la carte-mère n’est jamais parfait. L’heure va donc se décaler petit à petit (parfois de plusieurs secondes par jour !). Heureusement, le protocole NTP (Network Time Protocol) vient à notre secours et offre la possibilité de synchroniser l’horloge du serveur avec un serveur de temps qui fait référence. Là encore, rien de bien méchant.

Il faut d’abord installer les paquets qui permettront d’utiliser NTP :

# apt-get install ntp-simple ntpdate


Puis, on configure NTP :

# vi /etc/ntp.conf


Concernant les serveurs NTP, choisissez sans hésiter ceux du projet pool.ntp.org qui optimisent les requêtes NTP par l’utilisation de clusters répartis dans le monde entier. Une rapide visite de ce site vous indiquera les serveurs NTP à utiliser dans votre zone géographique. Si votre serveur est en France, on ajoute donc les lignes suivantes dans ntp.conf :

server 0.fr.pool.ntp.orgserver 1.fr.pool.ntp.orgserver 2.fr.pool.ntp.org


Avant de mettre en place le démon qui synchronisera l’heure automatiquement, il faut le faire manuellement (ici, avec le serveur principal de pool.ntp.org) :

# ntpdate -q pool.ntp.org


Maintenant que l’heure système est bonne, reste à mettre à jour celle de l’horloge BIOS :

# hwclock –systohc –utc


Pourquoi choisir l’heure UTC ? Pour éviter de perdre l’heure si les serveurs NTP ne sont pas accessibles au redémarrage de votre serveur.

Il reste à charger nos modifications et la synchronisation automatique est en place :

# /etc/init.d/ntp-server restart


On termine par le redémarrage du serveur qui est obligatoire pour éviter quelques mauvaises surprises (par exemple, les tâches cron qui se déclenchent à l’heure UTC ou les fonctions de temps de PHP qui perdent deux heures…). Si le redémarrage n’est pas possible, il faut relancer tous les services actifs.

Si vous souhaitez mettre à jour l’heure manuellement, le paquet ntp-server n’est pas utile. Gardez simplement le paquet ntpdate et utilisez directement la commande ntpdate. Vous pouvez aussi désactiver le chargement du démon NTP au démarrage :

# update-rc.d ntp remove


Et pour le remettre en place :

# update-rc.d ntp defaults

Régler l’heure d’un serveur virtuel (vserver)

“Et les serveurs virtuels dans tout ça ? Faut-il faire toutes ces opérations pour chacun des 100 vservers installés sur ma machine ?”

Non, heureusement ! Pour que le système de fichiers fonctionne correctement, tous les vservers utilisent la même référence de temps, celle du serveur principal. On ne peut donc pas modifier l’heure d’un vserver. Par contre, un vserver peut avoir sa propre configuration de fuseau horaire, très utile pour proposer des services à des utilisateurs de zones géographiques différentes.

Comme nous l’avons vu plus haut, la commande tzconfig permet de définir le fuseau horaire pour calculer le décalage horaire entre l’heure UTC du serveur principal et celle du vserver. On remarque au passage la nécessité d’utiliser l’heure UTC comme référence de temps sur un serveur.

Les puristes (ou plutôt les administrateurs qui ont la responsabilité d’exploiter des serveurs de production en toute sécurité) se pencheront sur les nombreuses options de configuration de NTP : installation d’un serveur NTP local, filtrage des adresses IP, portée des requêtes, périodicité de la synchronisation, etc. A chacun sa cuisine !

source: http://blog.christophelebot.fr/2006/04/18/regler-heure-serveurs-virtuels-debian

A propos Olivier Olejniczak

Cofondateur de SynerGeek.fr. Passionné d'informatique, je m'intéresse plus particulièrement aux technologies de virtualisation et de stockage. J'apprécie la liberté et la quasi-absence de frontières à mon imagination qu'offre l'OpenSource et Linux. Professionnellement, je travaille exclusivement avec les outils Microsoft. Les pieds bien sur terre et ancrés dans le quotidien de l'entreprise, j'aime faire partager mes découvertes et contribuer à un meilleur usage des technologies. Vous aussi, rejoignez-nous sur Synergeek et partagez votre expérience!

Je vous propose également...

Memento - Centos revenir en arrière après un yum update 2

Memento – Centos revenir en arrière après un yum update

Depuis quelques mois, j’utilise un serveur dédié chez EvxOnline, un très bon hébergeur et très …

Memento - Problème https et certificate error 3

Memento – Problème https et certificate error

J’utilise depuis plus d’un an un outil d’administration de sites web appelé i-MSCP (pour Internet …

2 commentaires

  1. Bonjour,
    Ce texte est très intéressant et m’a bien rendu service, mais à quoi bon le copier intégralement puisque la source que vous citez est accessible ?
    (bien que l’adresse ait changé :
    http://blog.christophelebot.fr/2006/04/18/regler-heure-serveurs-virtuels-debian/)
    Je trouve assez triste qu’un texte original disponible sur un site sans pub se retrouve copié intégralement sur un site plein de pubs…
    Bonne journée.
    Jean

    • Merci pour ce commentaire, je vais essayer d’y répondre:
      1- Les blogs apparaissent et disparaissent tous les jours, si on ne met qu’un lien et que le blog disparait ou que le lien change (comme c’est le cas ici, je te remercie de nous le donner, je vais le corriger), on perd l’information… Mais nous citons toujours la source. Bien sûr il ne faut pas uniquement faire de la recopie d’articles pris ailleurs mais je pense que nous sortons assez d’articles originaux pour nous permettre quelques “écarts” parfois.
      2- Cela ne fait qu’un mois 1/2 que nous avons mis de la pub sur ce site et on ne peut pas dire qu’il yen ait vraiment beaucoup (1 pub google en haut et un encart google tout en bas). La location du serveur devenait trop chère pour ma bourse et dans notre monde de la consommation internet tout gratuit, nous n’avons jamais reçu le moindre don en remerciement

      J’espère que cela répond à tes questions