PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : apache aus PHP heraus beenden?



Poison Nuke
30.08.09, 23:52
Hallo,

wie im anderen Thread mit der Master-Master Replikation zu sehen, experimentiere ich mit einer Master-Master konfiguration von zwei Servern.

jetzt stellt sich für mich folgende Frage:
angenommen bei der Replikation auf einen Slave gibt es einen Fehler und der Slave unterbricht die Replikation. In dem Fall würden die beiden Server asynchron laufen und es könnte Probleme geben beide wieder synchron zu bekommen.

Daher prüfe ich derzeit mit einem PHP Skript, das per Cron über wget aufgerufen wird, regelmäßig die MySQL Ausgabe von "SHOW SLAVE STATUS". In dem Fall das da eine Fehlermeldung kommt oder dergleichen, wird mir sofort eine Email zugeschickt, nur das bringt mir nicht viel wenn der Apache dennoch weiterläuft und die angemeldeten User in die Datenbank schreiben. Daher will ich im Falle eines Fehlers von MySQL sofort den apache auf dem Server beenden lassen damit alles nur noch über den dann laufenden Master weitergeht und die Datenbanken synchron bleiben.

NUr da der User "www-data" kein Recht hat den apache neu zu starten geht das nicht so einfach mit einem "system" Befehl unter PHP.


Habt ihr eine Idee wie ich das umsetzen könnte ohne eventuell allzuviele Pakete unter Lenny noch installieren zu müssen? Würde die Konfig gern so minimal wie möglich halten.

zyrusthc
30.08.09, 23:59
sudo ist dein Freund!

Greeez Oli

marce
31.08.09, 06:54
Alternativ über eine .htaccess ein redirect auf den anderen Server setzen - dann braucht der Apache nur Schreibrechte auf sein DocRoot - und das hat er meist eh schon...

Poison Nuke
31.08.09, 11:56
das mit dem redirect klingt interessant, aber kann ich den redirect direkt auf eine IP machen ohne das der User davon was merkt oder die Cookies davon irgendwie beeinflusst werden? Weil da das ganze über DNS Round-Robin läuft, kann ich ja kein redirect auf die URL machen. Nur da die Cookies Domänenbezogen sind wäre eine IP basierte Weiterleitung irgendwie auch nicht so schick.



bei der anderen Variante mit sudo...würde da nicht automatisch ein passwort abgefragt werden? Bzw müsste das dann nicht sogar in Klartext hinterlegt werden :eek:

marce
31.08.09, 11:57
sudo geht auch ohne PW...

Poison Nuke
31.08.09, 16:29
nagut ich habs nun über PHP-cli gemacht...also über den Crontab das PHPscript als Shellscript aufgerufen, da der crontab unter root läuft funktioniert auch das beenden vom Apache.


das einzige was ich mich nun frage ist...ob es passieren kann das MySQL auf beiden Clients gleichzeitig einen Fehler erleiden kann und damit binnen Sekunden beide Server gleichzeitig sich ausschalten würden. Müsste vllt fast noch eine Prüfung machen ob nicht einfach der andere Server offline ist bevor ich den Apache ausschalten. Hm, mal überlegen.

marce
31.08.09, 17:03
kann passieren - hatten wir mal den Fall - ist gar nicht lustig, wenn man dann über den üblichen Weg die Replikation wieder anwerfen will...