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

Version 1.0
Author: Till Brehm <t [dot] brehm [at] ispconfig [dot] org>


Dieses Tutorial beschreibt die Installation eines Web, E-Mail, Datenbank und DNS Server Clusters, welcher unter Debian 6 mit der ISPConfig 3 Kontrolloberfläche für Redundanz, hohe Verfügbarkeit und Lastenverteilung benutzt wird. Zur Replication von MySQL Client Datenbanken wird MySQL Master/Master Replikation benutzt. Mit Unison werden die /var/www (Webseiten) und /var/vmail (E-Mail Kontendaten) Verzeichnisse synchronisiert.

1 Die beiden Basissysteme aufsetzen

In diesem Setup gibt es einen Master Server (auf dem die ISPConfig Kontrolloberfläche läuft) und einen Slave Server, welcher den Web- (Apache), E-Mail- (Postfix und Dovecot) und Datenbankdienst (MySQL) des Master Servers mirrort.

Um das Clustersetup zu installieren brauchen Sie zwei Server mit der minimalen Debian 6.0 Installation. Das Basissetup wird in den Schritten 1 - 8 des folgenden Tutorials beschrieben:

http://www.howtoforge.de/anleitung/der-perfekte-server-debian-squeeze-debian-6-0-mit-bind-dovecot-ispconfig-3/

Befolgen Sie nur die Schritte 1 - 8 des Tutorials; alle weiteren Schritte unterscheiden sich von denen eines Clustersetups!

In meinem Beispiel benutze ich die folgenden Hostnamen und IP Adressen für die zwei Server:

Master Server
Hostname: server1.example.tld IP Adresse: 192.168.0.105
Slave Server
Hostname: server2.example.tld IP Adresse: 192.168.0.106
An jeder Stelle, an der diese Namen oder IP Adressen im Folgenden auftauchen, müssen Sie sie durch die Hostnamen und Adressen Ihrer Server ersetzen.

2 Installation der beiden Server

Die nachfolgenden Schritte müssen sowohl auf dem Master als auch auf dem Slave Server ausgeführt werden. Ist ein bestimmter Schritt nur auf einem der beiden auszuführen, habe ich eine rote Bemerkung hinzugefügt.

vi /etc/hosts


127.0.0.1 localhost
192.168.0.105 server1.example.tld 192.168.0.106 server2.example.tld # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Tragen Sie den Hostnamen de Servers ein:

echo server1.example.tld > /etc/hostname
/etc/init.d/hostname.sh start

Benutzen Sie server1.example.tld auf dem ersten Server und server2.example.tld auf dem zweiten Server.

Editieren Sie die sources.list Datei...

vi /etc/apt/sources.list

... und stellen Sie sicher, dass Ihre /etc/apt/sources.list Datei die squeeze-updates Repository enthält (so bekommen Sie immer die neusten Updates des ClamAV Virus Scanner - das Projekt bringt sehr oft neue Updates heraus und manchmal funktionieren ältere dann nicht mehr).
[...]
deb http://ftp.de.debian.org/debian/ squeeze-updates main [...]
Benutzen Sie...

apt-get update
apt-get upgrade

um die neusten Updates zu installieren (falls es welche gibt).

Es ist außerdem immer gut die Systemzeit mit einem NTP (network time protocol) Server über das Internet zu synchronisieren. Benutzen Sie dazu:

apt-get -y install ntp ntpdate

Auf Server 1:

Erstellen Sie nun ein private/public Schlüsselpaar auf server1.example.tld:

ssh-keygen -t dsa

root@server1:~# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <-- ENTER
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <-- ENTER
Enter same passphrase again: <-- ENTER
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
1b:95:bc:4a:f4:9f:d8:ea:24:31:0f:c9:72:d5:a7:80 root@server1.example.com
The key's randomart image is:
+--[ DSA 1024]----+
| |
| o o |
| E * . . |
| o = o o |
| . S o . |
| + O + . |
| + + + |
| o . |
| .o |
+-----------------+
root@server1:~#

Es ist wichtig, dass Sie kein Passwort eingeben, andernfalls wird das Mirroring nicht ohne manuelle Eingabe des Passworts funktionieren. Drücken Sie also einfach ENTER!

Kopieren Sie als nächstes Ihren öffentlichen Schlüssel auf server2.example.tld:

ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@192.168.0.106

root@server1:~# ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@192.168.0.101
The authenticity of host '192.168.0.101 (192.168.0.101)' can't be
established.
RSA key fingerprint is 25:d8:7a:ee:c2:4b:1d:92:a7:3d:16:26:95:56:62:4e.
Are you sure you want to continue connecting (yes/no)? <-- yes (you will see this only if this is the first time you connect to server2)
Warning: Permanently added '192.168.0.101' (RSA) to the list of known hosts.
root@192.168.0.101's password: <-- server2 root password
Now try logging into the machine, with "ssh 'root@192.168.0.101'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Kontrollieren Sie nun auf server2 ob der öffentliche Schlüssel von server1 korrekt übertragen wurde:

server2:

cat $HOME/.ssh/authorized_keys


ssh-dss AAAAB3NzaC1kc3MAAACBAPhiAexgEBexnw0rFG8lXwAuIsca/V+lhmv5lhF3BqUfAbL7e2sWl
QlGhxZ8I2UnzZK8Ypffq6Ks+lp46yOs7MMXLqb7JBP9gkgqxyEWqOoUSt5hTE9ghupcCvE7rRMhefY5sh LUnRkVH6hnCWe6yXSnH+Z8lHbcfp864GHkLDK1AAAAFQDddQckbfRG4C6LOQXTzRBpIiXzoQAAAIEAlee vPHwi+a3fTDM2+Vm6EVqR5DkSLwDM7KVVNtFSkAY4GVCfhLFREsfuMkcBD9Bv2DrKF2Ay3OOh39269Z1r gYVk+/MFC6sYgB6apirMlHj3l4RR1g09LaM1OpRz7pc/GqIGsDt74D1ES2j0zrq5kslnX8wEWSHapPR0t ziin6UAAACBAJHxgr+GKxAdWpxV5MkF+FTaKcxA2tWHJegjGFrYGU8BpzZ4VDFMiObuzBjZ+LrUs57Biw TGB/MQl9FKQEyEV4J+AgZCBxvg6n57YlVn6OEA0ukeJa29aFOcc0inEFfNhw2jAXt5LRyvuHD/C2gG78l wb6CxV02Z3sbTBdc43J6y root@server1.example.tld
Installieren Sie postfix, dovecot und MySQL mit einem einzigen Befehl:

apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudo

Geben Sie, sobald Sie vom Installer dazu aufgefordert werden, das neue MySQL Passwort ein. Sie sollten für beide Server das gleiche Passwort benutzen. Beantworten Sie dann die folgenden Fragen wie hier beschrieben:

General type of configuration? <-- Internet site Mail name? <-- server1.mydomain.tld SSL certificate required <-- Ok
Benutzen Sie server1.example.tld auf dem ersten und server2.example.tld auf dem zweiten Server.
Wir wollen, dass MySQL, alle Netzwerkoberflächen benutzt, nicht nur localhost, deshalb editieren wir die /etc/mysql/my.cnf Datei und kommentieren die Zeile bind-address = 127.0.0.1 aus:

vi /etc/mysql/my.cnf


[...]
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...]
Starten Sie dann MySQL neu:

/etc/init.d/mysql 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.