Verwendung von tar und rsync für hohe Verfügbarkeit

13

Ich habe Ubuntu-Cloud-Server, auf die ich keinen direkten Zugriff habe, aber mit ssh. Ich verwende 'tar', um diesen Server zu klonen oder hochverfügbar zu machen. Ich habe das Tutorial über den Link [Linktext] [1] verfolgt. Ich habe versucht, einen neuen Server der gleichen Version zu installieren. Wenn ich das tar (tar -xvpzf ~ / clone.tgz -C /) auf dem Ziel (neu) extrahiert habe, endet es am Ende mit der folgenden Ausgabe, die der folgenden ähnlich ist (ich weiß nicht, ob es ein Fehler ist).

tar: var/run: time stamp 2010-11-09 17:09:11 is 7335.159880406 s in the future
tar: var/spool/postfix/usr/lib/zoneinfo: time stamp 2010-11-09 17:08:26 is 7290.159730037 s in the future
tar: var/lib: time stamp 2010-11-09 17:27:51 is 8455.159349527 s in the future
tar: usr/bin: time stamp 2010-11-09 17:28:02 is 8466.159254097 s in the future
tar: usr/share/sgml: time stamp 2010-11-09 17:27:47 is 8451.158909506 s in the future
tar: usr/share/man/man7: time stamp 2010-11-09 17:27:50 is 8454.158393583 s in the future
tar: usr/share/man/man1: time stamp 2010-11-09 17:28:02 is 8466.158166556 s in the future
tar: usr/share/man/man8: time stamp 2010-11-09 17:27:51 is 8455.158057701 s in the  future
tar: usr/share/omf/time-admin: time stamp 2010-11-09 17:27:52 is 8456.157830449 s in the future
---------------------------------------------
---------------------------------------------
---------------------------------------------

Ich benutze folgenden Befehl, um eine TAR-Datei der angegebenen Verzeichnisse auf dem Quellsystem zu erstellen.

tar -cvzf ~/clone.tgz --exclude ~/clone.tgz --exclude /etc/hosts --exclude /etc/hostname --exclude /etc/udev/ --exclude /etc/network/interfaces --exclude /etc/resolv.conf  /etc /home /opt /tmp /usr /var /mnt
  • Gibt es Vorsichtsmaßnahmen vor der Verwendung von Teer? (Der Teer ist eine einmalige Erstellung, ab dann verwende ich rsync.)
  • Sollte ich noch ein Verzeichnis wie bin oder lib hinzufügen? - Schlag mich vor
  • Soll ich ein Verzeichnis ausschließen? Als hätte ich ein Netzwerkgeräteproblem (eth0) (eth0 konnte nicht gestartet werden). Also habe ich im obigen Befehl "/ etc / udev /" ausgeschlossen und danach fühlte ich, dass dies in Ordnung war. Gibt es etwas, das ich aus / etc / oder aus einem von mir eingeschlossenen Verzeichnis ausschließen muss? - Schlag mich vor.
  • Wie könnte ich rsync (inkrementelles bkp) mit ssh-Kombination einplanen, um die Verzeichnisse (in tar angegeben) mit dem Remote-Speicherort (z. B. / mnt / newdir) zu synchronisieren, den ich taren und später bei einem Systemausfall extrahieren könnte? Es kann geplant werden, dass Rsync als Root-Benutzer ausgeführt wird, der ssh fordert jedoch zur Eingabe des Kennworts auf. Zu Ihrer Information, sudo ist vollständig deaktiviert und die direkte Anmeldung von ssh bei root ist ebenfalls deaktiviert.

Wenn es einen besseren Weg gibt, ohne den Server zu schädigen, kann dies vorschlagen.

[1]: http://ubuntuforums.org/showthread.php ? t = 525660

user3215
quelle

Antworten:

9

Ich würde Ihnen empfehlen, stattdessen rsync zu verwenden. Dadurch können Sie eine echte Synchronisierung von System zu System durchführen, ohne dass temporäre Dateien erforderlich sind. Es bietet auch den Vorteil, dass inkrementelle Aktualisierungen durchgeführt werden, wenn Sie den Klon aktualisieren müssen.

Ich würde nur Folgendes ausschließen: / proc / / sys / dev / tmp / mnt Auf dem Klonsystem müssen Sie sicherstellen, dass / etc / fstab und /boot/grub/grub.cfg mit den UUIDs der Klonsystempartitionen aktualisiert werden.

Wenn Sie eine Datenbank wie mysql haben, müssen Sie vorsichtig sein und die Datenbank stoppen, bevor Sie die Kopie ausführen.

João Pinto
quelle
ja, gut erinnert, ich denke ich muss '/ etc / fstab' und '/boot/gru/grub.cfg' ausschließen. Ist das gut?. Bitte platzieren Sie die Befehle für die inkrementelle rsync-Synchronisation der angegebenen Verzeichnisse.
User3215
Natürlich ist /boot/grub/grub.cfg überhaupt nicht enthalten
user3215
Wie aktualisiere ich die UUIDs des Klonsystems?
User3215
Sie müssen die UUIDs der ursprünglichen Partitionen in der fstab- und grub-Konfiguration durch die UUIDs der Partitionen des Klonsystems ersetzen. Sie können die Partitions-IDs mit blkid auflisten.
João Pinto
Sie wollen damit sagen, dass die UUIDs auf beiden Systemen gleich sein sollten.
User3215
6

Zunächst einmal bieten viele der IaaS-Cloud-Anbieter leistungsstarke Snapshot-Funktionen an, mit denen sich dies ganz einfach beheben lässt.

Wenn Sie in EC2 ein EBS-basiertes System ausführen, können Sie es nur in regelmäßigen Abständen erfassen. Wenn mit der Quellinstanz etwas Schlimmes passiert, können Sie auf einer brandneuen Instanz zum vorherigen Snapshot zurückkehren. Wenn Sie einen Snapshot archivieren möchten, können Sie eine andere angehängte Instanz starten und so etwas wie tar + s3 verwenden, ohne die Produktionsbox zu beeinträchtigen.

Es gibt eine Reihe von Problemen mit diesem Ansatz, die derzeit möglicherweise nicht erkennbar sind.

  1. Sie schließen sich einer einzigen Technologie an. Wenn dies unter Ubuntu 10.10 funktioniert und Sie zu 11.04 wechseln möchten, müssen Sie das Quellsystem aktualisieren und dann erneut einen Snapshot erstellen. Wenn Sie die EBS-Snapshots von EC2 verwenden, benötigen Sie ebenfalls eine neue Lösung, wenn Sie in die Rackspace-Cloud wechseln.
  2. Sie haben keine Änderungshistorie, wenn Sie rsync verwenden. Wenn Sie auf System 1 etwas ändern, dann geht etwas kaputt, und Sie werden wahrscheinlich auch Ihr Backup-System kaputt machen, wenn Sie rsync ausführen.
  3. Rsync kann sich extrem stark auf Ihr Produktionssystem auswirken.

Was Sie wirklich wollen, ist ein Konfigurationsmanagementsystem und eine hohe Datenverfügbarkeit.

Ich würde empfehlen, ein Konfigurationsverwaltungssystem wie Marionette (hauptsächlich!), Koch oder Cfengine zu wählen. Starten Sie die gesamte Konfiguration im Konfigurationsverwaltungssystem. Anschließend können Sie einfach ein generisches System starten und die Konfigurationsverwaltung auf dieses System anwenden. Füge 'etckeeper' hinzu und du hast Geschichte.

Für Daten mit hoher Verfügbarkeit sollte rsync funktionieren und einfacher sein, da Sie nur die gewünschten Daten kopieren können. Es gibt auch drbd zu haben, was einem "Netzwerk-RAID1" entspricht. Hierbei handelt es sich nicht um Ersatz für Datensicherungen, die historische Snapshots (ob über Block-Geräte-Snapshots oder so etwas wie tar) enthalten sollten, anstatt sich mit einem Wiederherstellungshost zu synchronisieren (was passiert, wenn jemand alle Daten löscht, die mit der Wiederherstellungsbox synchronisiert werden, und alles löscht) da auch?)

SpamapS
quelle
2

Die Meldungen werden wahrscheinlich dadurch verursacht, dass die neue Serveruhr zeitlich hinter der älteren Serveruhr zurückliegt.

Wenn Sie die Package Manager-Konfiguration und -Datenbank klonen (und das tun Sie auch), sollten Sie / bin, / sbin und / lib klonen, da sich das Zielsystem sonst in einem inkonsistenten Status befindet. Ein anderer Ansatz besteht darin, /etc/dpkg.info / etc / apt / var / lib / apt und / var / lib / dpkg auszuschließen und alle Pakete im Zielsystem neu zu installieren.

Die Dateien in / var / dpkg und / var / apt enthalten Informationen darüber, was auf Ihrem System installiert ist. Wenn Sie sie nicht ausschließen, geht der Paketmanager davon aus, dass alle Programme und Abhängigkeiten im übergeordneten System auf dem Ziel installiert sind. Aber wenn Sie / bin, / sbin usw. nicht kopiert haben, werden sie dies nicht tun. Es ist sehr wahrscheinlich, dass bei der nächsten Installation oder Aktualisierung etwas kaputt geht.

Um die Synchronisation mit rsync aufrechtzuerhalten, habe ich immer eine zertifizierte Authentifizierung verwendet, keine Passwörter. Es ist ganz einfach einzurichten, ich erinnere mich, dass ich es getan habe, als ich die Manpage das erste Mal gelesen habe. Hier ist eine kurze Anleitung , wenn Sie weitere Informationen wünschen, denke ich, dass dies eine neue Frage verdient.

Javier Rivera
quelle
Nr. / Var ist nicht ausgeschlossen. Im obigen Befehl nach "--exclude /etc/resolv.conf" ist alles aus /etc/..../var / mnt enthalten. Eigentlich habe ich zwei Leerzeichen zwischen resolv.conf und / etc angegeben. Hier wird es nicht angezeigt.
User3215
Entschuldigung, ich habe den Link-Teil vergessen
user3215
Ok, also sollte ich sogar bin, sbin und lib einschließen, es ist in Ordnung hier. Oh .. Ich muss diese ausschließen und alle Pakete installieren.
User3215
Muss /etc/dpkg.info / etc / apt / var / lib / apt und / var / lib / dpkg wirklich ausgeschlossen werden?
User3215
Antwort aktualisiert.
Javier Rivera