Webserver load balance - Dateinsystem schnell aktuell halten
Webserver load balance - Dateinsystem schnell aktuell halten
Wir setzen zur Zeit einen 2. Webserver auf, der immoment nur als Backupserver dient auf. Dieser wird immoment alle paar Stunden via "sitecopy" auf den aktuellsten Stand gebracht.
Unsere Seite generiert aus der DB immer wieder statische Seiten, sobald sich inhalt ändert.
Nun muss gewehrleistet werden, dass die Datein schnellst möglich auch auf den 2. Server transferiert werden.
Sitecopy ist dafür zu langsam!
Es ändern sich pro Minute ca. 50 Seiten und einmal täglich größere Bildermengen.
Da das gesamte Projekt über 250 000 Deiten umfasst ist sitecopy pro aufruf zulange beschäftigt.
Weleche lösung gibt es die möglichst realtime arbeitet?
Unsere Seite generiert aus der DB immer wieder statische Seiten, sobald sich inhalt ändert.
Nun muss gewehrleistet werden, dass die Datein schnellst möglich auch auf den 2. Server transferiert werden.
Sitecopy ist dafür zu langsam!
Es ändern sich pro Minute ca. 50 Seiten und einmal täglich größere Bildermengen.
Da das gesamte Projekt über 250 000 Deiten umfasst ist sitecopy pro aufruf zulange beschäftigt.
Weleche lösung gibt es die möglichst realtime arbeitet?
-
projekt2501
- Posts: 92
- Joined: 2003-08-14 08:23
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Scripte so ändern, dass wenn neue Seiten generiert werden diese direkt kopiert werden auf den 2ten Server
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Das haben wir auch in betracht gezogen nur da es seiten gibt die zwar immer aufgerufen werden aber nur ein einziges mal generiert werden, ist es gefährlich...
Denn wenn Server 1 eine neue Seite generiert und server 2 nicht ereichbar ist. möglich wäre ein art tmp verzeichniss wo die datei kopiert wird und wenn sie übertragen wurde wieder gelöscht wird. ist der server nicht ereichbar, dann wird das dir immer wieder rübergeladen.
Aber fanden wir für eine schlechte Lösung!
Denn wenn Server 1 eine neue Seite generiert und server 2 nicht ereichbar ist. möglich wäre ein art tmp verzeichniss wo die datei kopiert wird und wenn sie übertragen wurde wieder gelöscht wird. ist der server nicht ereichbar, dann wird das dir immer wieder rübergeladen.
Aber fanden wir für eine schlechte Lösung!
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Das Programm, welches die statischen Seiten erstellt, so abändern, dass es die Datei(en) nicht nur lokal erstellt, sondern auch per FTP auf den 2. Server kopiert.
-
projekt2501
- Posts: 92
- Joined: 2003-08-14 08:23
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Ihr könntet natürlich die Scripte auch so ändern, dass die Dateien in eine Datenbank generiert werden, und dann daraus generiert werden. Würde das so angehen, dass der 2te Server sich die Datenbank holt, wenn er kann... damit ist das 2ter Server offline Problem gelöst außerdem braucht man nur einen Stream :)
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Mit dem holen ist das so ne sache. Cron... somit dauert es immerhin eine Minute und die kann in der jetzigen Zeit schon viel sein.
am besten wäre ein Tool das ständig als Service am Server läuft und ich im dann einen kill oder einen bash befehl schicke z.b. "UPDATE /bla/bla/bla/bla.html" und er dass dann automatisch amcht in "Echtzeit" somit hab ich acuh keine probleme wenn ein "Skript abbricht"...
Wie sieht das mit Rsync aus?
Am liebsten wäre mir eine fertige Lösung. Kosten kanns auch was. Ich will nicht das Rad neu erfinden *g*
am besten wäre ein Tool das ständig als Service am Server läuft und ich im dann einen kill oder einen bash befehl schicke z.b. "UPDATE /bla/bla/bla/bla.html" und er dass dann automatisch amcht in "Echtzeit" somit hab ich acuh keine probleme wenn ein "Skript abbricht"...
Wie sieht das mit Rsync aus?
Am liebsten wäre mir eine fertige Lösung. Kosten kanns auch was. Ich will nicht das Rad neu erfinden *g*
-
projekt2501
- Posts: 92
- Joined: 2003-08-14 08:23
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Du könntest ein PHP Script so einstellen, dass es keine Laufzeitbegrenzung hat... Dann einfach einen beliebigen sleep() einbauen... kostet nix und rennt ausgezeichnet. Hab mir damit ein Ã?berwachungsscript für einzelne User gebastelt... ist dann halt sekundengenau/millissekundengenau :)
du könntest das script auch einfach aufrufen lassen von dem script, dass die seiten generiert...
du könntest das script auch einfach aufrufen lassen von dem script, dass die seiten generiert...
-
captaincrunch
- Userprojekt

- Posts: 7066
- Joined: 2002-10-09 14:30
- Location: Dorsten
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Wie wär's denn mit drbd?
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Ein zwei Sätze wäre schon von Vorteil.
Was genau kann drbd?
Was genau kann drbd?
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Eine art Software-Raid, dass einen Ordner (Virtuelle Festplatte) miteinander auf den aktuellsten Stand hält wäre evtl. auch ne Lösung.
Wenn sich jemand wirklich auskennt soll er sich bei mir melden!
Wenn sich jemand wirklich auskennt soll er sich bei mir melden!
-
captaincrunch
- Userprojekt

- Posts: 7066
- Joined: 2002-10-09 14:30
- Location: Dorsten
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Mein Posting hat irgendwie keiner gelesen, oder? Ist, meines erachtens, die einfachste Lösung.
-
projekt2501
- Posts: 92
- Joined: 2003-08-14 08:23
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Gelesen ja, aber es sie hat den entscheidenden Nachteil, dass wenn der 2te Server nicht läuft die Daten nicht konsitent übertragen werden...
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
War allerdings nicht die Anforderung. - Ok, aber dazu dann die Lösung:
Das Skript, welches die Dateien erstellt, prüft, ob die Datei per FTP übertragen werden konnte, wenn nicht, speichert das Script die Datei in ein Transferverzeichnis (z.B. /www/transfer/OrginalPfad/OrginalDatei). Der 2. Server kopiert sich dann Rekursiv beim Starten die Dateien per FTP aus diesem Verzeichnis heraus (z.B. per wget)
Das Skript, welches die Dateien erstellt, prüft, ob die Datei per FTP übertragen werden konnte, wenn nicht, speichert das Script die Datei in ein Transferverzeichnis (z.B. /www/transfer/OrginalPfad/OrginalDatei). Der 2. Server kopiert sich dann Rekursiv beim Starten die Dateien per FTP aus diesem Verzeichnis heraus (z.B. per wget)
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Problem ist es wird wie es aussieht in einigen wochen auch noch einen 3. Server geben. Wenn ich das alles via PHP mache verzögert sich die Ladezeiten etc.
:) Aber danke für den Vorschlag :)
:) Aber danke für den Vorschlag :)
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Ach so, die Dateien werden direkt beim Aufruf der Seite erstellt?
Dann folgendes:
Das PHP Script schreibt den Dateinamen inkl. vollem Pfad in eine Datei (hier /pfad/datei_mit_dateinamen, anhängend nicht überschreibend).
in /pfad/server stehen die Server, auf die die Dateien übertragen werden sollen im Format: <SERVER> <USERID> <PASSWORT> mit Leerzeichen und/oder TAB getrennt pro Zeile.
Das ganze einmal aufrufen, forked dann in den Hintergrund und prüft einmal pro Sekunde auf neue Dateien.
Nochwas, habe ich jetzt ohne zu testen einfach mal so hingeschrieben, wenns nicht direkt geht, eine PM an mich
Dann folgendes:
Das PHP Script schreibt den Dateinamen inkl. vollem Pfad in eine Datei (hier /pfad/datei_mit_dateinamen, anhängend nicht überschreibend).
in /pfad/server stehen die Server, auf die die Dateien übertragen werden sollen im Format: <SERVER> <USERID> <PASSWORT> mit Leerzeichen und/oder TAB getrennt pro Zeile.
Das ganze einmal aufrufen, forked dann in den Hintergrund und prüft einmal pro Sekunde auf neue Dateien.
Nochwas, habe ich jetzt ohne zu testen einfach mal so hingeschrieben, wenns nicht direkt geht, eine PM an mich
Code: Select all
#!/usr/bin/perl
use Net::FTP;
if (fork) { exit 0; }
my $filename = "/pfad/datei_mit_dateinamen";
while(1) {
if (-e $filename) {
open(FILE,"<$filename");
flock(FILE,2);
while(<FILE>) {
chomp($file = $_);
$files{$file} = 1;
}
flock(FILE,8);
close(FILE);
unlink $filename;
my @server = ();
my %server = ();
open(FILE,"</pfad/server");
while(<FILE>) {
chomp($tmp = $_);
$tmp =~ s/[t ]{1,}/ /g;
my ($serv,$uid,$pwd) = split(/ /,$tmp);
$server{"$serv","userid"} = $uid;
$server{"$serv","pwd"} = $pwd;
push(@server,$serv);
}
close(FILE);
foreach my $server (@server) {
my $ftp=Net::FTP->new($server);
$ftp->login($server{"$server","userid"},$server{"$server","pwd"});
foreach my $file (keys %files) {
$ftp->put($file);
}
$ftp->quit;
}
sleep 1;
}
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Kostet dieser Prozess nicht viele Server resourcen? und was ist wenn es viele Datein / bilder zum hochladen gibt?
-
projekt2501
- Posts: 92
- Joined: 2003-08-14 08:23
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
viele Dateioperationen... :/
aber der Prozess legt nach jedem durchlauf eine Pause ein von einer Sekunde... Frage ist nur wie hoch die Last durch den Prozess wird... ggf. ist eine Datenbank ressourcenschonender
aber der Prozess legt nach jedem durchlauf eine Pause ein von einer Sekunde... Frage ist nur wie hoch die Last durch den Prozess wird... ggf. ist eine Datenbank ressourcenschonender
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Der MySql Server ist sowieso schon rehct ausgelastet...
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Die Last ist keine.
Solange keine Dateien zum Hochladen vorliegen, werden lediglich einmal Sleep und einmal der Test, ob die Datei mit der Dateiliste vorhanden ist, ausgeführt. Deshalb das Forken in den Hintergrund und nicht der Aufruf per Cron, der Overhead des Starten des Scripts entfällt.
Beim Ã?bertragen per FTP werden alle Dateien nacheinander per FTP übertragen. Auch hier fällt nicht mehr Systemauslastung an, als wenn ich die Dateien per FTP Client kopieren würde.
Solange keine Dateien zum Hochladen vorliegen, werden lediglich einmal Sleep und einmal der Test, ob die Datei mit der Dateiliste vorhanden ist, ausgeführt. Deshalb das Forken in den Hintergrund und nicht der Aufruf per Cron, der Overhead des Starten des Scripts entfällt.
Beim Ã?bertragen per FTP werden alle Dateien nacheinander per FTP übertragen. Auch hier fällt nicht mehr Systemauslastung an, als wenn ich die Dateien per FTP Client kopieren würde.
-
projekt2501
- Posts: 92
- Joined: 2003-08-14 08:23
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Wenn die Angabe oben ungefähr stimmt kann mal also damit rechnen, dass ca. pro Aufruf eine Datei übertragen wird. Das sollte von der Last her gut zu verschmerzen sein. Vielleicht auch auf 3 Sekunden oder so einstellen... Da wäre wohl testen angesagt
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Was ist wenn werend des perls php was neues reinschreibt? er macht ja unlink. das wäre dann weg oder?
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Nein, die Datei wird per Lock gesperrt.
Re: Webserver load balance - Dateinsystem schnell aktuell halten
Nunja auch wenn ich so "dumm" Frage aber es soll ja funktionieren....
Wenn PHP Nun wieder etwas neue hinzufügen will :)
Wenn PHP Nun wieder etwas neue hinzufügen will :)