PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sync on Demand



DirkZ
09.07.15, 11:04
Hallo zusammen,

ich stehe vor einem Problem und hoffe ihr könnt mir dabei helfen.
Folgende Situation:
Wir haben 2 Webserver, einer davon ist extern im Rechenzentrum (Live-Server) und der andere ist im internen Netzwerk (Entwicklungsserver)
Auf dem Live-Server liegt eine große Menge an Dateien, die wir aber aufgrund der Masse an Dateien und auch der Datenmenge nicht komplett syncen wollen.
Zur Zeit syncen wir manuell, das was wir brauchen um intern entwickeln zu können.

Jetzt kam mir die Idee, ob es keine Möglichkeit gibt die Dateien auf Anfrage zu syncen.
Also zu dem Zeitpunkt wo sie gebraucht werden.

Wichtig dabei ist, ich muss es auf ein Verzeichnis ('/var/www/files', auf beiden Seiten) begrenzen und die Dateien dürfen nur in eine Richtung gesynct werden. Also interne Veränderungen dürfen nicht zurück auf den Live-Server geladen werden.
Habt ihr eine Idee für einen Ansatz?
Oder gibt es vielleicht schon was fertiges?

Danke im Voraus

marce
09.07.15, 11:38
Du meinst in der Art: lokaler Entwicklungs-Webserver greift auf File XYZ zu - ist es nicht vorhanden, wird vom Live-System eine Kopie gezogen, ist es vorhanden, wird die lokale Kopie ausgeliefert?

DirkZ
09.07.15, 14:23
ganz genau so hatte ich mir das vorgestellt

marce
09.07.15, 19:33
Hm... da würden mir aber wesentlich bessere Lösungen einfallen aber gut :-) Entwicklungsumgebungen sollten nicht so gestückelt sein und ja, ggf. muss man einmal am Anfang entweder in den sauren Apfel beißen und ein paar Daten synchronisieren - oder man stellt sich definierte Umgebungen bereit.

Das gewünschte könntest Du problemlos über ein z.B. Shell- oder php-Script lösen, welches die erforderlichen rsyncs / scp / ... - durchführt und aufgerufen wird, wenn das entsprechende File nicht vorhanden ist - da braucht's im schlimmsten Fall nur 1 Zeile Code und ein bisschen RewriteCode -f + RewriteRule

fork
09.07.15, 23:01
Naja, so insgesamt fehlen hier viele Infos, ohne die nix wirklich gutes rauskommen kann.

* Was passiert da genau?
* Braucht ein Testlauf sehr viele Dateien(Wenn ja, dann das sequentielle holen beim ersten mal Grund für eine ausgedehnte Kaffee pause, yippie!, Ist das vielleicht egal, da alles automatisiert läuft?)?
* Wie hoch ist die Änderungshäufigkeit?
* Was ist der Engpass(Bandbreite oder Plattenplatz?)
* Wie oft braucht der Testserver die aktuellen Daten(bisher verstehe ich es so, dass es immer aktuell sein soll)?

fork
09.07.15, 23:11
Daneben fallen mir 2 Sachen ein:

a) FSCache - Damit kann man einen lokalen Cache z. B. bei NFS einbauen (Selbst noch nix mit gemacht)
https://www.google.de/search?q=nfs+caching&ie=utf-8&oe=utf-8

b) aufs: Damit kann man mehrere Filesystem übereinander legen. Z. B. bei Dir das NFS als Read-Only, damit am Livesystem nix verändert wird und darüber noch ein Lokales FS, das Read-Write ist.(Auch noch nix mit gemacht). Ich glaube Knoppix hat das mit dabei, so dass man auf der Rescue-DVD auch noch Zusatzpakete installieren kann, etc...

DirkZ
10.07.15, 13:43
@marce
was würde dir denn für eine bessere Lösung einfallen?

DirkZ
10.07.15, 14:00
@fork
- Datei.doc wird angefragt (z.B. mit http://entwicklungsserver.intern/files/Datei.doc), ein Script erkennt das die Datei nicht existiert und lädt sie vom Live-Server (z.B von http://live-server.de/files/Datei.doc) runter als lokale Kopie
- Wichtig ist nur, das sie runtergeladen wird und bei Bedarf lokal verändert werden kann, ohne das es die Live-Daten beeinflusst. Daher entfällt leider die Read-Only-Variante
- Mir kam der Gedanke, eine 0-Byte Datei mit dem richtigen Dateinamen in den lokalen Pfad zu legen bis die Datei runtergeladen wurde. Mit der Größe kann man dann ggf. auf die noch fehlende Datei reagieren.
- Alles soll automatisch verdeckt im Hintergrund laufen
- Eine Aktualisierung spielt keine Rolle. Wenn eine lokale Datei vorhanden ist, muss sie nicht aktualisiert werden.
- Es stellt kein Problem dar, wenn der Download etwas dauert, dank großer Glasfaser-Leitung stellt der Download kein Problem dar. Das Problem ist der Speicherplatz. Wir reden von mehreren 100 GB, wovon im Einzelfall mal 1-2 MB (1-2 Dateien) gebraucht werden. (Deswegen ist ein rsync nicht gewünscht)
- Der Testserver braucht sehr selten und auch nur vereinzelt Dateien.

fork
10.07.15, 15:13
Dann ist doch die Geschichte mit dem aufs ideal für Dich. Das Caching brauchst Du dann ja noch nicht mal.

Read-Only heisst in dem Fall ja nicht, dass Du die Datei nicht bearbeiten kannst. Sondern das bearbeitete Ergebnis landet dann eben, wie gewünscht nicht auf dem Original-Live-NFS-Share, sondern auf dem lokalen, beschreibbaren Overlay-Dateisystem.

DirkZ
10.07.15, 15:20
Ja da hast du recht.
Ich werde das mal ausprobieren.

Vielen Dank für die Hilfe