Zum Inhalt springen
TURNKEYGNU / LINUX
AnwendungenDokumentationBlogBildschirmfotosGitHubTurnKey Hub
文Deutsch
EnglishEspañol中文日本語PortuguêsDeutsch
Haus/TKLBAM Haken

Dokumentation

TKLBAM Haken

Diese Dokumentseite basiert auf Dieser Blogbeitrag.

TKLBAM verfügt über einen raffinierten Allzweck-Hook-Mechanismus, mit dem Sie nützliche Aktionen zum Backup und zur Wiederherstellung auslösen können.

Beispiele für Haken:

  • Bereinigung von temporären Dateien
  • Stoppen/Starten von Diensten zur Erhöhung der Datenkonsistenz
  • Kodierung/Dekodierung von Daten aus nicht unterstützten Datenbanken
  • Verwenden von LVM zum Erstellen / Wiederherstellen eines Snapshots eines sich schnell ändernden Volumens

Der Hakenmechanismus wurde ursprünglich entwickelt, so dass wir einige Probleme beheben konnten, die indirekt mit der Benutzerfreundlichkeit von TKLBAM zusammenhängen. Insbesondere unsere ersten Beta-Benutzer berichteten, dass tklbam-Wiederherstellung manchmal keine Backup-Volumes finden würde. Als wir das untersuchten, stellte sich heraus, dass es sich um eine Uhrenabweichung handelte. Die offensichtliche Lösung war, die Uhr vor dem Start der Wiederherstellung zu synchronisieren, aber je mehr ich darüber nachdachte, desto mehr rieb mich die Idee der Hardwiring, dass ntpdate Zeug. Aus mehreren Gründen:

  • Es ist ein Hilfsproblem, kein Kernproblem mit TKLBAM Logik
  • Ich bin während der Entwicklung oft offline, also brauchte ich eine Möglichkeit, dies auszuschalten, aber ich möchte keinen weiteren testspezifischen Code hinzufügen, es sei denn, es ist absolut notwendig.
  • Es ist in Ordnung, wenn ein bestimmter Server (z. B. pool.ntp.org) standardmäßig ist, aber es sollte eine Möglichkeit geben, ihn zu konfigurieren, wenn ein Benutzer beispielsweise einen internen NTP-Server verwenden möchte.

Ich habe versucht, mir einen sauberen Weg vorzustellen, um diese einfachen Ziele auf saubere Weise zu erreichen (z. B. Cli-Optionen, Umgebungsvariablen, Konfigurationsdateien), aber alles, was ich mir ausgedacht habe, war: Nur so verdammt hässlich.

Dann wurde mir klar, dass ein Hakenmechanismus dieses Problem auf einfache, generische Weise lösen würde.

Durchführung

/etc/tklbam/hooks.d kann ausführbare Dateien (z. B. Skripte) enthalten, die von tklbam vor und nach zwei Operationen (derzeit) ausgeführt werden:

  1. Backup
  2. Wiederherstellung

Zwei Argumente werden an die Haken weitergegeben:

  1. Betrieb: Wiederherstellung/Backup
  2. Staat: Pre/Post

Nicht-Null-Exitcodes erhöhen einen HookError.

Vorteile

Lösen Sie mit einem Schlag das Uhrenproblem und können fortgeschrittene Benutzer ihre eigenen Hooks definieren, um sich um Dinge zu kümmern, die TKLBAM nicht erledigt (z. B. IO-intensive Prozesse zu stoppen, bevor Sie Backup, Codierung/Decodierung nicht unterstützter Datenbanken, etc.

Beispiel: Fixuhrhaken

import os
import sys
import executil
from string import Template

NTPSERVER = os.environ.get("NTPSERVER", "pool.ntp.org")

ERROR_TPL = """\
##########################
## FIXCLOCK HOOK FAILED ##
##########################

Amazon S3 and Duplicity need a UTC synchronized clock so we invoked the
following command::

    $COMMAND

Unfortunately, something went wrong...

$ERROR
"""

def fixclock():
    command = "ntpdate -u " + NTPSERVER

    try:
        executil.getoutput(command)
    except executil.ExecError, e:
        msg = Template(ERROR_TPL).substitute(COMMAND=command,
                                             ERROR=e.output)

        print >> sys.stderr, msg,
        sys.exit(1)

def main():
    op, state = sys.argv[1:]

    if op in ('restore', 'backup') and state == 'pre':
        fixclock()

if __name__ == "__main__":
    main()

Für weitere Informationen, Diskussionen und Kommentare siehe bitte die Original Blog Post von Liraz.

TURNKEYGNU / LINUX

Eigene Infrastruktur betreiben, ohne bei null anzufangen.

TurnKey erkunden
Über TurnKeyDokumentationHäufige FragenBlogGitHub
Frei und quelloffenStandardmäßig sicherSofort einsatzbereit