Alte Single-Server ISPConfig Installation auf Multi-Server wiederherstellen

Icydragon

New Member
Hallo,

hier ist meine Situation: Ich habe eine alte Installation von ISPConfig die als Single Server läuft. Ich möchte ein Multi-Server Setup mit demselben Datenstand neu aufsetzen. Ich weiss, dass ich die Daten der verschiedenen Dienste (Emails, Webseiten usw) manuell übertragen muss, darum geht es hier nicht. Es geht erstmal nur um die ISPConfig einstellungen.

Das war mein Versuch:
Ich habe die alte ISPConfig Installation auf den aktuellen ISPConfig-stable Softwarestand geupdated und dann einen Dump der Datenbank gezogen mit:
mysqldump -p dbispconfig > olddbispconfig.sql

Dann habe ich 2 Ubuntu Server KVMs installiert von denen die eine der Master sein soll und die andere ein Slave sein soll. Master soll irgendwann DNS machen. Dieser Slave soll nur Mail machen und irgendwann möchte ich weitere Slaves für die anderen Dienste hinzufügen.

Ich habe beide zuerst ohne den alten Datenstand versucht zu verbinden. Nach einigem hin und her habe ich das dann hinbekommen.

Dann also der Versuch den Datenstand zu übernehmen:
Ich habe auf beiden KVMs ISPConfig wieder komplett deinstalliert und auch die Mysql Datenbanken komplett gelöscht und Mysql neu installiert um wirklich keine Reste mehr zu haben. Dann habe ich auf dem Master ISPConfig 3 nochmal installiert und nach der installation die dbispconfig Datenbank mit olddbispconfig.sql überschrieben:
mysql -p dbispconfig < dbispconfig

Danach funktioniert zumindest die Oberfläche von ISPConfig tadellos aber zeigte halt wieder den alten Datenstand an.

Dann habe ich auf dem Slave ISPCOnfig im Expert-Modus installiert und an den Master angebunden.

Im Interface habe ich gesehen, dass der Slave nun verbunden ist. Über Server Services have ich beim Master nur DNS und beim Slave nur Email eingestellt.

Nun das Problem:
Ich kann z.B. an der Tabelle mail_user des Slave sehen, dass keine Daten vom Master geholt werden.

Mein Debugging:
MaddinXx aus dem IRC Chat hat mir empfohlen das server.sh Skript auf dem Slave manuell auszuführen damit ich die Fehler sehe, das war ein sehr guter Vorschlag.

Ich kommentierte also die beiden Zeilen aus der Crontab und rief server.sh manuell auf. Über ISPConfig->Server config stellte ich noch für den Slave Debugging an. Ich konnte nun sehen, dass (nachdem ich dem Slave noch ein zusätzliches Recht auf der Master SQL DB gegeben hatte) der Slave sich erfolgreich mit der Master Datenbank verbindet aber keine Veränderungen übernimmt. D.h. die mail_user Tabelle auf dem Slave blieb leer obwohl die Master mail_user Tabelle Daten enthält. Selbst eine neu angelegte Mailbox tauchte nicht auf dem Slave auf.

Ich habe mir den Code von server.php angeschaut und soweit ich verstehe versucht der Slave anhand der Datalog ID vom Master und seiner eigenen festzustellen ob ein Sync notwendig ist. Das heisst der Slave versucht die Datalog ID vom Master einzuholen. Wenn ich in der Datei server.php die Zeile:
$conf['last_datalog_id'] = (int) max($server_db_record['updated'],$local_server_db_record['updated']);
auskommentiere und dafür
$conf['last_datalog_id'] = (int) 0;
einfüge dann sehe ich im Debug Output von server.sh, dass mehr Daten übertragen werden aber trotzdem ist die mail_user Tabelle des Slave danach noch leer.

Ich habe außerdem noch alternativ versucht:
Auf Master und slave nach Installation der Master und Slave ISPConfig die alte Datenbank zu importieren (Die dbispconfig DB mit olddbispconfig.sql zu überschreiben). Dann sehe ich zwar in der mail_user Tabelle des Slave die alten Einträge aber wenn ich auf dem Master über das Interface neue Einträge (z.b. Mailboxen) anlege werden diese nicht in die mail_user Tabelle des Client übernommen.

Ich bin mir sicher, dass ich nicht der erste bin der sowas versucht aber leider finde ich im Netz nicht viel zu diesem Thema. Habt ihr eine Idee was ich noch ausprobieren könnte?

Noch eine Frage zum resync-Tool: Meines Verständnisses nach führt das Tool einen Resync von Datenbank zu Dateisystem durch? Also die Datenbankeinträge werden in Konfigurationsdateien für die entsprechenden Dienste (z.b. Apache, Dovecot usw.) umgesetzt? Ich hatte es trotzdem ausprobiert aber dies führte nicht zu einer gefüllten mail_user Tabelle auf dem Slave.

Gruß und Vielen Dank schonmal!
 

Till

Administrator
Das funktioniert so:

1) Du instalierst die server mit allen nötigen diensten, aber ispconfig darf noch nicht installiert werden.

2) Du übernimmst die shell user und gruppen aus /etc/passwd, /etc/shadow, /etc/group und /etc/gshadow datei auf den server, welcher der neue webserver werden soll.

3) jetzt installierst Du ispconfig auf dem master.

4) jetzt kopierst Du den inhalt der dbispconfig db auf den master und erstetzt die "leere" ispconfig db der neuinstllierten version. achtung, ispconfig version muss gleich sein!

5) installiere ispconfig auf den slaves und connecte sie zum master.
6) editiere alle taballen außer der "server" taballe die eine spalte server_id haben, die ID's müssen den neuen servern entprechen. Beispiel: webb der neue mailserver die ID 2 hat, dann musst Du in allen mail_* und spamfilter_* tabellen für alle records die server_id auf 2 umstellen.
7) Jetzt kopiere den inhalt der master ispconfig db auf alle slaves.
8) jetzt musst Du noch die daten auf die entsprechenden server migrieren und die mysql user der kundendatenbanken auch.
 

Icydragon

New Member
Vielen Dank

Danke Till,

genau so hat es geklappt.

Jetzt bleibt aber noch eine Frage:
Was passiert hinter den Kulissen, wenn ich unter System->Server bei dem Mail Server (dem Slave) das Häckchen bei Mail mache. Wird dann nur für die ab diesem Zeitpunkt erstellten Mailboxes die server_id auf die id dieses Servers gesetzt?

Vielen Dank und Gruß!
 

Werbung

Top