Installation serveur · 10 min read · Sep 26, 2025

Installation d'un cluster Web, Email et base de données MySQL (Miroir) sur Debian 5.0 avec ISPConfig 3

Installation d’un cluster Web, Email et base de données MySQL (Miroir) sur Debian 5.0 avec ISPConfig 3

Version 1.0
Auteur : Till Brehm

Ce tutoriel décrit l’installation d’un serveur Web, Email, Base de données et DNS en cluster à utiliser pour la redondance, la haute disponibilité et l’équilibrage de charge sur Debian 5 avec le panneau de contrôle ISPConfig 3. GlusterFS sera utilisé pour refléter les données entre les serveurs et ISPConfig pour le mirroring des fichiers de configuration. J’utiliserai une configuration de deux serveurs ici à des fins de démonstration, mais la configuration peut évoluer vers un plus grand nombre de serveurs avec seulement des modifications mineures dans les fichiers de configuration de GlusterFS.

Il y a actuellement une limitation dans la configuration du cluster MySQL. Le démon MySQL a des problèmes de verrouillage lors de la vérification initiale d’innodb lorsque le deuxième serveur est démarré. La solution actuelle que j’utilise ici est de démarrer MySQL uniquement avec myisam. J’ai trouvé plusieurs rapports de serveurs MySQL fonctionnant avec innodb sur GlusterFS, donc cela doit être possible avec quelques ajustements des fichiers de configuration de GlusterFS et / ou de MySQL pour utiliser innodb également. J’essaierai de trouver une solution pour les problèmes de verrouillage et de mettre à jour ce tutoriel. Si quelqu’un connaît une solution pour innodb sur GlusterFS, veuillez me contacter. Si vous souhaitez utiliser le deuxième serveur uniquement comme système de secours à chaud, alors vous devriez pouvoir utiliser innodb tant que vous démarrez MySQL sur le deuxième serveur uniquement lorsque le premier serveur est déconnecté.

Ceci est actuellement une configuration de preuve de concept, donc il n’y a pas encore d’expérience sur la façon dont cette configuration évolue dans les systèmes de production. La seule partie qui pourrait causer des problèmes est le répertoire de données MySQL partagé. Une autre solution pour accéder aux bases de données MySQL depuis plusieurs serveurs simultanément est d’utiliser une configuration de cluster MySQL ( http://www.mysql.com/products/database/cluster/) ou la réplication MySQL maître / maître ( https://www.howtoforge.com/mysql_master_master_replication).

Pour apprendre à utiliser ISPConfig 3, je recommande fortement de télécharger le Manuel ISPConfig 3.

Sur près de 300 pages, il couvre le concept derrière ISPConfig (administrateur, revendeurs, clients), explique comment installer et mettre à jour ISPConfig 3, inclut une référence pour tous les formulaires et champs de formulaire dans ISPConfig avec des exemples d’entrées valides, et fournit des tutoriels pour les tâches les plus courantes dans ISPConfig 3. Il décrit également comment rendre votre serveur plus sécurisé et comprend une section de dépannage à la fin.

1 Configuration des deux systèmes de base

Dans cette configuration, il y aura un serveur maître (qui exécute l’interface du panneau de contrôle ISPConfig) et un serveur esclave qui reflète les services web (apache), email (postfix et dovecot) et base de données (MySQL) du serveur maître.

Pour installer la configuration en cluster, nous avons besoin de deux serveurs avec une installation minimale de Debian 5.0. La configuration de base est décrite dans le tutoriel suivant dans les étapes 1 - 6 :

https://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3

Installez uniquement les étapes 1 - 6 du tutoriel du serveur parfait et non les autres étapes car elles diffèrent pour une configuration en cluster !

Dans mon exemple, j’utilise les noms d’hôtes et adresses IP suivants pour les deux serveurs :

Serveur Maître
Nom d’hôte : server1.example.tld
Adresse IP : 192.168.0.105

Serveur Esclave
Nom d’hôte : server2.example.tld
Adresse IP : 192.168.0.106

Chaque fois que ces noms d’hôtes ou adresses IP apparaissent dans les prochaines étapes d’installation, vous devrez les changer pour correspondre aux IP et noms d’hôtes de vos serveurs.

2 Installation des deux serveurs

Les étapes suivantes doivent être exécutées sur le serveur maître et sur le serveur esclave. Si une étape spécifique est uniquement pour le maître ou l’esclave, j’ai ajouté une note dans la description en rouge.

vi /etc/hosts
127.0.0.1       localhost
192.168.0.105   server1.example.tld
192.168.0.106   server2.example.tld
# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::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

Définissez le nom d’hôte du serveur :

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

Utilisez server1.example.tld sur le premier serveur et server2.example.tld sur le deuxième serveur.

Éditez le fichier sources.list…

vi /etc/apt/sources.list 

… et assurez-vous qu’il contient les deux lignes suivantes. La première est pour le dépôt volatile de debian pour obtenir des paquets mis à jour pour le logiciel antivirus ClamAV et SpamAssassin et la seconde est pour le dépôt backports qui contient les paquets GlusterFS actuels.

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://www.backports.org/debian/ lenny-backports main contrib non-free

Exécutez…

apt-get install debian-backports-keyring
apt-get update

… pour installer la clé du dépôt backports et mettre à jour la base de données des paquets apt ; puis exécutez …

apt-get upgrade

… pour installer les dernières mises à jour (s’il y en a).

Il est judicieux de synchroniser l’horloge système avec un serveur NTP ( n etwork t ime p rotocol) sur Internet. Il suffit d’exécuter…

apt-get -y install ntp ntpdate

… et votre heure système sera toujours synchronisée.

Installez postfix, dovecot et mysql avec une seule commande :

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

Entrez le nouveau mot de passe pour mysql lorsque le programme d’installation le demande et répondez aux questions suivantes comme décrit ci-dessous :

Créer des répertoires pour l’administration web ? <– Non
Type général de configuration ? <– Site Internet
Nom de mail ? <– server1.mydomain.tld
Certificat SSL requis <– Ok

Nous voulons que MySQL écoute sur toutes les interfaces, pas seulement localhost, donc nous éditons /etc/mysql/my.cnf et commentons la ligne bind-address = 127.0.0.1 :

vi /etc/mysql/my.cnf
[...]  
# Au lieu de skip-networking, le défaut est maintenant d'écouter uniquement sur  
# localhost, ce qui est plus compatible et n'est pas moins sécurisé.  
#bind-address           = 127.0.0.1  
[...]  

Puis redémarrez MySQL :

/etc/init.d/mysql restart

Pour installer amavisd-new, SpamAssassin et ClamAV, nous exécutons :

apt-get -y 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 

Ensuite, installez Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear et mcrypt comme suit :

apt-get -y 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 libopenssl-ruby libapache2-mod-ruby sudo 

Vous verrez la question suivante :

Serveur web à reconfigurer automatiquement : <– apache2

Ensuite, exécutez la commande suivante pour activer les modules Apache suexec, rewrite, ssl, actions et include :

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd et quota peuvent être installés avec la commande suivante :

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

Éditez /etc/fstab. Le mien ressemble à ceci (j’ai ajouté,usrquota,grpquota à la partition avec le point de montage /) :

vi /etc/fstab
# /etc/fstab: informations statiques sur le système de fichiers.  
#  
#                  
proc            /proc           proc    defaults        0       0  
/dev/sda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1  
/dev/sda5       none            swap    sw              0       0  /dev/hda        
/media/cdrom0   udf,iso9660 user,noauto     0       0  
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Pour activer le quota, exécutez ces commandes :

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /

quotacheck -avugm
quotaon -avug

Installez le serveur DNS BIND :

apt-get -y install bind9 dnsutils

Installez vlogger et webalizer et awstats :

apt-get -y install vlogger webalizer awstats 

Installez Jailkit : Jailkit est nécessaire uniquement si vous souhaitez chroot les utilisateurs SSH. Il peut être installé comme suit (important : Jailkit doit être installé avant ISPConfig - il ne peut pas être installé après !) :

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
tar xvfz jailkit-2.11.tar.gz
cd jailkit-2.11
./configure
make
make install
cd ..
rm -rf jailkit-2.11*

Installez fail2ban : C’est optionnel mais recommandé, car le moniteur ISPConfig essaie de montrer le journal :

apt-get install fail2ban

Installez GlusterFS et Fuse :

apt-get -y –force-yes -t lenny-backports install fuse-utils
apt-get -y –force-yes install glusterfs-server glusterfs-client

Supprimez les fichiers de configuration d’exemple de GlusterFS :

rm -f /etc/glusterfs/*.vol 

Créez les répertoires de données pour les volumes GlusterFS :

mkdir /data/
mkdir /data/export-mysql
mkdir /data/export-mysql-ns
mkdir /data/export-vmail
mkdir /data/export-vmail-ns
mkdir /data/export-www
mkdir /data/export-www-ns

Créez le fichier de configuration du serveur GlusterFS :

vi /etc/glusterfs/glusterfsd.vol
# Configuration pour le volume du serveur mysql
volume posix-mysql
  type storage/posix
  option directory /data/export-mysql
  option background-unlink yes
end-volume
volume locks-mysql
  type features/locks
  option mandatory-locks on
  subvolumes posix-mysql
end-volume
volume brick-mysql
  type performance/io-threads
  option thread-count 8
  subvolumes locks-mysql
end-volume
# Configuration pour le volume du serveur vmail
volume posix-vmail
  type storage/posix
  option directory /data/export-vmail
end-volume
volume locks-vmail
  type features/locks
  subvolumes posix-vmail
end-volume
volume brick-vmail
  type performance/io-threads
  option thread-count 8
  subvolumes locks-vmail
end-volume
# Configuration pour le volume du serveur www
volume posix-www
  type storage/posix
  option directory /data/export-www
end-volume
volume locks-www
  type features/locks
  subvolumes posix-www
end-volume
volume brick-www
  type performance/io-threads
  option thread-count 8
  subvolumes locks-www
end-volume
# exporter tous les volumes
volume server
  type protocol/server
  option transport-type tcp
  subvolumes brick-mysql brick-vmail brick-www
  
  # options d'authentification pour le volume mysql
  option auth.addr.brick-mysql.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-mysql.allow user-mysql
  option auth.login.user-mysql.password 7wQav7ExkFg6eW
  
  # Options d'authentification pour le volume vmail
  option auth.addr.brick-vmail.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-vmail.allow user-vmail
  option auth.login.user-vmail.password 7wQav7ExkFg6eW
  
  # options d'authentification pour www
  option auth.addr.brick-www.allow 192.168.0.105,192.168.0.106
  option auth.login.brick-www.allow user-www
  option auth.login.user-www.password 7wQav7ExkFg6eW
  
end-volume

Remplacez les adresses IP par celles de vos serveurs et remplacez le mot de passe 7wQav7ExkFg6eW par un mot de passe de votre choix.

Démarrez le serveur GlusterFS :

/etc/init.d/glusterfs-server start 

Maintenant, nous créons les trois fichiers de volume client dont nous avons besoin pour monter les systèmes de fichiers GlusterFS.

vi /etc/glusterfs/glusterfs-mysql.vol
volume remote1-mysql
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-mysql
  option username user-mysql
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-mysql
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-mysql
  option username user-mysql
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-mysql
  type cluster/replicate
  subvolumes remote1-mysql remote2-mysql
end-volume
volume cache-mysql
  type performance/io-cache
  option cache-size 25MB
  subvolumes replicate-mysql
end-volume
vi /etc/glusterfs/glusterfs-vmail.vol
volume remote1-vmail
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-vmail
  option username user-vmail
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-vmail
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-vmail
  option username user-vmail
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-vmail
  type cluster/replicate
  subvolumes remote1-vmail remote2-vmail
end-volume
volume writebehind-vmail
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate-vmail
end-volume
volume cache-vmail
  type performance/io-cache
  option cache-size 256MB
  subvolumes writebehind-vmail
end-volume
vi /etc/glusterfs/glusterfs-www.vol
volume remote1-www
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.105
  option remote-subvolume brick-www
  option username user-www
  option password 7wQav7ExkFg6eW
end-volume
volume remote2-www
  type protocol/client
  option transport-type tcp
  option remote-host 192.168.0.106
  option remote-subvolume brick-www
  option username user-www
  option password 7wQav7ExkFg6eW
end-volume
volume replicate-www
  type cluster/replicate
  subvolumes remote1-www remote2-www
end-volume
volume writebehind-www
  type performance/write-behind
  option window-size 1MB
  subvolumes replicate-www
end-volume
volume cache-www
  type performance/io-cache
  option cache-size 256MB
  subvolumes writebehind-www
end-volume

Avant de monter nos volumes dans les répertoires, nous devrons arrêter certains services et sauvegarder les données actuelles :

/etc/init.d/mysql stop
/etc/init.d/apache2 stop
/etc/init.d/postfix stop
/etc/init.d/dovecot stop

mv /var/lib/mysql /var/lib/mysql_bak
mv /var/www /var/www_bak

mkdir /var/lib/mysql
mkdir /var/www
mkdir /var/vmail

vi /etc/fstab

Ajoutez les lignes :

/etc/glusterfs/glusterfs-mysql.vol  /var/lib/mysql  glusterfs  defaults  0  0
/etc/glusterfs/glusterfs-vmail.vol  /var/vmail  glusterfs  defaults  0  0
/etc/glusterfs/glusterfs-www.vol  /var/www  glusterfs  defaults  0  0

Maintenant, montez les disques en exécutant :

mount -a

Changez le propriétaire du répertoire mysql à l’utilisateur et au groupe mysql :

chown mysql:mysql /var/lib/mysql

Copiez les données mysql et www en arrière.

cp -prf /var/lib/mysql_bak/ /var/lib/mysql/
cp -prf /var/www_bak/
/var/www/

Copiez les données (uniquement sur le serveur maître ! Ignorez cette étape sur l’esclave !).

Désactivez innodb car cela cause des problèmes de verrouillage lorsque MySQL démarre.

vi /etc/mysql/my.cnf

Changez la ligne :

#skip-innodb

en :

skip-innodb   

et ajoutez la ligne

innodb_file_per_table  

dans la section [mysqld] du fichier my.cnf.

Lorsque vous configurez le serveur esclave, copiez le fichier /etc/mysql/debian.cnf du serveur maître vers le serveur esclave avant de redémarrer MySQL !

Maintenant, redémarrez les services :

/etc/init.d/mysql start
/etc/init.d/apache2 start
/etc/init.d/postfix start
/etc/init.d/dovecot start

Changez l’ordre de démarrage de GlusterFS pour vous assurer que le serveur GlusterFS est toujours démarré avant MySQL.

mv /etc/rc2.d/S20glusterfs-server /etc/rc2.d/S19glusterfs-server
mv /etc/rc3.d/S20glusterfs-server /etc/rc3.d/S16glusterfs-server
mv /etc/rc4.d/S20glusterfs-server /etc/rc4.d/S16glusterfs-server
mv /etc/rc5.d/S20glusterfs-server /etc/rc5.d/S16glusterfs-server

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.