Ich habe 5 Server in einem LAN ohne Internetverbindung. Ich brauche sie, um die Uhr synchron zu halten.
Ich könnte sie als NTP-Peers konfigurieren und eine hohe Schicht für die lokale Uhr von einem von ihnen setzen. Auf diese Weise würden die anderen vier mit dieser Uhr synchronisiert.
Was ich eigentlich will, ist, dass sie sich aus Gründen der Robustheit und Präzision auf eine Zeit einigen, die alle 5 lokalen Uhren verwendet (d. h. irgendeine Art von Durchschnitt ausführt). Ist es mit NTP möglich?
PS: Ich möchte nicht eine externe Taktquelle verwenden.
BEARBEITEN: und kein Scripting außerhalb von NTP-Funktionen, was die Genauigkeit nur verschlechtern könnte:)
Wenn du durchschnittlich 5 Driftuhren machst, erhältst du nur eine andere Driftuhr, die schwerer zu korrigieren ist. Es wird nicht präziser sein. NTP verwendet mehrere Server, um die Genauigkeit zu erhöhen, da es die Netzwerklatenz berücksichtigt. Da sich alle Ihre Systeme in einem schnellen lokalen Netzwerk befinden, benötigen Sie nur einen Server.
Richten Sie zwei Systeme als NTP-Server ein, einen als primärer, und wenn Sie das Bedürfnis haben, einen als Backup. Lassen Sie alle anderen Systeme mit ihnen synchronisieren. Dies wird wesentlich einfacher zu installieren sein als die Clock-Averaging-Lösung, und Sie müssen keine verrückten Skripts entwickeln.
Sie können möglicherweise einen von ihnen die Zeiten von jedem Computer abhören lassen, einen Durchschnitt durchführen, den Durchschnitt als seine eigene Zeit festlegen und diese Zeit für alle anderen Computer übertragen. Es scheint jedoch ein wenig übertrieben.
Sie können einen von ihnen als ntp-Server einrichten, der seine Zeit im lokalen Netzwerk sendet, und die anderen als Slaves, die im lokalen Netzwerk zuhören
bearbeiten: Ich habe den Durchschnittsteil vermisst. Nun, in diesem Fall können Sie wahrscheinlich ein Skript auf dem lokalen Server schreiben, um Zeiten von allen Slaves zu sammeln, um den Durchschnitt zu erhalten und die eigene Zeit mit diesem Wert zu aktualisieren. Vielleicht möchten Sie in diesem Fall sogar ntp loswerden und einfach das Skript verwenden, um die Zeit auf allen Servern zu aktualisieren.
Ich wünschte, ich könnte einen definitiven Vorschlag machen, aber ich weiß nicht genug über Ihre Umgebung. Egal, was Sie wahrscheinlich tun werden, eine Art Skript Kung Fu.
Wenn es unix / linux ist, würde ich jeden mit SSH-autorisierten Schlüsseln einrichten, um den date +%s
-Befehl jedes anderen abzufragen (um die Epoche zu erhalten), mittle diese Zeiten mit awk oder etwas und setze dann das eigene lokale Datum des Rechners.
Oder vielleicht wäre es sicherer (und zuverlässiger), eine autoritative Maschine dazu zu bringen, die Zeit jedes Einzelnen im gleichen Land zu überprüfen, zu mitteln und dann sich selbst und jeden anderen Gastgeber diesem Durchschnittswert zuzuordnen.
Unter Windows werden Sie wahrscheinlich in VBScript und WMI suchen.
BEARBEITEN: Sie können auf einige seltsame Probleme stoßen, wenn jemand Uhr vom Durchschnitt nach vorne driftet und meine Schätzung ist etwa die Hälfte von ihnen wird;). Zukünftige Zeitstempel können ziemlich seltsam sein. Es liegt an Ihnen zu bestimmen, wie oft diese Synchronisation stattfinden muss.