Installation eines Web, E-Mail & MySQL Datenbank Clusters unter Debian 6.0 mit ISPConfig 3 - Seite 2


Nun bereiten Sie die MySQL Server auf die Master/Master Replikation vor.

Auf Server 1:

Melden Sie sich folgendermaßen auf der MySQL Shell an...

mysql -u root -p

... und geben das MySQL root Passwort ein, dass Sie während der MySQL Installation ausgewählt haben. Führen Sie dann diesen Befehl auf der MySQL Shell aus (ersetzen Sie 'slave_user_password' mit einem sicheren Passwort, das der Slave Server benutzen soll, um sich mit dem Master zu verbinden. Ersetzen Sie diesen Platzhalter in den nächsten Schritten mit diesem Passwort, wann immer er auftaucht):

GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%'
IDENTIFIED BY 'slave_user_password';
FLUSH PRIVILEGES;
quit;

Konfigurieren Sie nun Ihre zwei MySQL Knoten:

Auf Server 1:

vi /etc/mysql/my.cnf

Suchen Sie nach der Sektion, die mit [mysqld] beginnt und fügen Sie die folgenden Optionen hinzu (kommentieren Sie alle bereits existierenden Optionen aus, die mit diesen in Konflikt stehen):
[...]
[mysqld] server-id = 1 replicate-same-server-id = 0 auto-increment-increment = 2 auto-increment-offset = 1 master-host = 192.168.0.106 master-user = slaveuser master-password = slave_user_password master-connect-retry = 60 expire_logs_days = 10 max_binlog_size = 500M log_bin = /var/log/mysql/mysql-bin.log [...]
Stoppen Sie MySQL:

/etc/init.d/mysql stop

Nun tun Sie fast das gleiche auf server2...

Auf Server 2:

vi /etc/mysql/my.cnf

Suchen Sie nach der Sektion, die mit [mysqld] beginnt und fügen Sie die folgenden Optionen hinzu (kommentieren Sie alle bereits existierenden Optionen aus, die mit diesen in Konflikt stehen):
[...]
[mysqld] server-id = 2 replicate-same-server-id = 0 auto-increment-increment = 2 auto-increment-offset = 2 master-host = 192.168.0.105 master-user = slaveuser master-password = slave_user_password master-connect-retry = 60 expire_logs_days = 10 max_binlog_size = 500M log_bin = /var/log/mysql/mysql-bin.log [...]
Stoppen Sie MySQL:

/etc/init.d/mysql stop

Nun müssen Sie die beiden MySQL Server synchronisieren. Dies tun Sie, indem Sie das MySQL Datenverzeichnis und die Debian Konfigurationsdatei, welche den debian-sys-maint Benutzer enthält, vom Master auf den Slave kopieren. Da Sie MySQL auf beiden Servern gestoppt haben, können Sie dies nun tun.

Auf Server 1:

scp -pr /var/lib/mysql/* root@server2.example.tld:/var/lib/mysql/
scp -pr /etc/mysql/debian.cnf root@server2.example.tld:/etc/mysql/debian.cnf

Starten Sie MySQL nun wieder auf dem Master Server:

/etc/init.d/mysql start

Melden Sie sich in der MySQL Shell als root Benutzer an...

mysql -u root -p

... und führen Sie folgenden Befehl in der MySQL Shell aus...

SHOW MASTER STATUS;

... um den MySQL Master Status einzusehen:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Die Informationen, die Sie für den nächsten Schritt brauchen ist die Binlog Datei mysql-bin.000002 und die Binlog Position 106. Für server2 brauchen Sie später die selben Informationen.

Führen Sie dann folgenden Befehl in der MySQL Shell des Masters aus um ihn mit dem Slave zu verbinden:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.0.106', MASTER_USER='slaveuser',
MASTER_PASSWORD='slave_user_password',
MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106;
START SLAVE;

Überprüfen Sie dann den Slave Status:

SHOW SLAVE STATUS G

Direkt vor dem G im obigen Befehl muss ein Backslash angegeben werden, den der Wordpress Editor leider entfernt. Also "SHOW SLAVE STATUS BACKSLASHG". Es ist wichtig, dass sowohl Slave_IO_Running als auch Slave_SQL_Running in der Ausgabe den Wert Yes haben.

Auf Server 2:

Melden Sie sich in der MySQL Shell als root Benutzer an...

mysql -u root -p

... und führen Sie folgenden Befehl in der MySQL Shell aus:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.0.105', MASTER_USER='slaveuser',
MASTER_PASSWORD='slave_user_password',
MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106;
START SLAVE;

Überprüfen Sie dann den Slave Status:

SHOW SLAVE STATUS G

Direkt vor dem G im obigen Befehl muss ein Backslash angegeben werden, den der Wordpress Editor leider entfernt. Also "SHOW SLAVE STATUS BACKSLASHG". Es ist wichtig, dass sowohl Slave_IO_Running als auch Slave_SQL_Running in der Ausgabe den Wert Yes haben.

Die Konfiguration der MySQL Master/Master Replikation ist nun abgeschlossen und Sie können damit fortfahren, die anderen Softwarepakete zu installieren.

Die nächsten Schritte müssen sowohl auf Server 1 als auch auf Server 2 ausgeführt werden.

Um amavisd-new, SpamAssassin und ClamAV zu installieren, benutzen Sie:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Das ISPConfig 3 Setup benutzt amavisd, welches die SpamAssassin Filterbibliothek intern lädt, Sie können also SpamAssassin stoppen um Arbeitsspeicher freizugeben:

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Installieren Sie dann Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear und mcrypt wie folgt:

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache

Sie werden folgendes gefragt:

Web server to reconfigure automatically: <-- apache2 Configure database for phpmyadmin with dbconfig-common? <-- No
Benutzen Sie dann folgenden Befehl um die Apache Module suexec, rewrite, ssl, actions und include zu aktivieren:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd und Quota können mit dem folgenden Befehl installiert werden:

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

Editieren Sie die Datei /etc/default/pure-ftpd-common...

vi /etc/default/pure-ftpd-common

..., stellen Sie sicher, dass der Startmodus auf standalone gesetzt ist und setzen Sie VIRTUALCHROOT=true:
[...]
STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...]
Editieren Sie die Datei /etc/inetd.conf um inetd davon abzuhalten zu versuchen ftp zu starten:

vi /etc/inetd.conf

Gibt es eine Zeile beginnend mit ftp stream tcp, kommentieren Sie diese aus (gibt es diese nicht, müssen Sie die Datei auch nicht editieren):
[...]
#:STANDARD: These are standard services. #ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper [...]
Mussten Sie /etc/inetd.conf editieren, starten Sie inetd neu:

/etc/init.d/openbsd-inetd restart

1 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: g0rbi

Das HowTo ist wirklich klasse. Ich habe das Ding für 3 Server mit MySQL-Circle-Replication durchgespielt und bin fast zufrieden.
Was aber, wenn der Master-Server ausfällt? Fängt ISPconfig das ab? Meiner Meinung nach würde der Einsatz von virtuellen Adressen / DNS Einträgen zusammen mit Heartbeat oder Pacemaker erst vollends Sinn ergeben.
Das wre eine prima Erweiterung um dieses Tutorial abzurunden.