Installazione Server · 9 min read · Sep 27, 2025
Installazione di un Cluster Web, Email e Database MySQL (Mirror) su Debian 5.0 con ISPConfig 3
Installazione di un Cluster Web, Email e Database MySQL (Mirror) su Debian 5.0 con ISPConfig 3
Versione 1.0
Autore: Till Brehm
Questo tutorial descrive l’installazione di un server Web, Email, Database e DNS clusterizzato da utilizzare per ridondanza, alta disponibilità e bilanciamento del carico su Debian 5 con il pannello di controllo ISPConfig 3. GlusterFS sarà utilizzato per specchiare i dati tra i server e ISPConfig per specchiare i file di configurazione. Utilizzerò un setup di due server qui a scopo dimostrativo, ma la configurazione può scalare a un numero maggiore di server con solo lievi modifiche nei file di configurazione di GlusterFS.
Attualmente c’è una limitazione nell’impostazione del cluster MySQL. Il demone MySQL ha problemi di blocco durante il controllo iniziale di innodb quando il secondo server viene avviato. La soluzione attuale che utilizzo qui è avviare MySQL solo con myisam. Ho trovato diversi rapporti di server MySQL in esecuzione con successo con innodb su GlusterFS, quindi deve essere possibile con alcune regolazioni della configurazione di GlusterFS e/o del file di configurazione di MySQL utilizzare anche innodb. Cercherò di trovare una soluzione per i problemi di blocco e aggiornerò questo tutorial. Se qualcuno conosce una soluzione per innodb su GlusterFS, per favore contattatemi. Se desideri utilizzare il secondo server solo come sistema di standby caldo, allora dovresti essere in grado di utilizzare innodb purché avvii MySQL sul secondo server solo quando il primo server è disconnesso.
Attualmente si tratta di un setup di prova di concetto, quindi non ci sono esperienze su come questa configurazione scala nei sistemi di produzione. L’unica parte che potrebbe causare problemi è la directory dei dati MySQL condivisa. Un’altra soluzione per accedere ai database MySQL da più server simultaneamente è utilizzare un’impostazione di cluster MySQL ( http://www.mysql.com/products/database/cluster/) o la replica MySQL master/master ( https://www.howtoforge.com/mysql_master_master_replication).
Per imparare a utilizzare ISPConfig 3, consiglio vivamente di scaricare il Manuale di ISPConfig 3.
Su quasi 300 pagine, copre il concetto dietro ISPConfig (amministratore, rivenditori, clienti), spiega come installare e aggiornare ISPConfig 3, include un riferimento per tutti i moduli e i campi modulo in ISPConfig insieme a esempi di input validi e fornisce tutorial per i compiti più comuni in ISPConfig 3. Illustra anche come rendere il tuo server più sicuro e include una sezione di risoluzione dei problemi alla fine.
1 Impostazione dei Due Sistemi di Base
In questo setup ci sarà un server master (che esegue l’interfaccia del pannello di controllo ISPConfig) e un server slave che specchia i servizi web (apache), email (postfix e dovecot) e database (MySQL) del server master.
Per installare il setup clusterizzato, abbiamo bisogno di due server con un’installazione minima di Debian 5.0. La configurazione di base è descritta nel seguente tutorial nei passaggi 1 - 6:
https://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3
Installa solo i passaggi 1 - 6 del tutorial del server perfetto e non gli altri passaggi poiché differiscono per un setup clusterizzato!
Nel mio esempio utilizzo i seguenti nomi host e indirizzi IP per i due server:
Server Master
Nome host: server1.example.tld
Indirizzo IP: 192.168.0.105
Server Slave
Nome host: server2.example.tld
Indirizzo IP: 192.168.0.106
Dove questi nomi host o indirizzi IP si presentano nei prossimi passaggi di installazione, dovrai cambiarli per corrispondere agli IP e ai nomi host dei tuoi server.
2 Installazione dei Due Server
I seguenti passaggi devono essere eseguiti sul server master e sul server slave. Se un passaggio specifico è solo per il master o lo slave, ho aggiunto una nota nella descrizione in rosso.
vi /etc/hosts127.0.0.1 localhost
192.168.0.105 server1.example.tld
192.168.0.106 server2.example.tld
# Le seguenti righe sono desiderabili per host compatibili con 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-allhostsImposta il nome host del server:
echo server1.example.tld > /etc/hostname
/etc/init.d/hostname.sh start
Utilizza server1.example.tld sul primo server e server2.example.tld sul secondo server.
Modifica il file sources.list…
vi /etc/apt/sources.list … e assicurati che contenga le seguenti due righe. La prima è per il repository volatile di debian per ottenere pacchetti aggiornati per il software antivirus ClamAV e SpamAssassin e la seconda è per il repository backports che contiene i pacchetti attuali di GlusterFS.
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://www.backports.org/debian/ lenny-backports main contrib non-freeEsegui…
apt-get install debian-backports-keyring
apt-get update
… per installare la chiave del repository backports e aggiornare il database dei pacchetti apt; quindi esegui …
apt-get upgrade… per installare gli aggiornamenti più recenti (se ce ne sono).
È una buona idea sincronizzare l’orologio di sistema con un server NTP ( n etwork t ime p rotocol) su Internet. Esegui semplicemente…
apt-get -y install ntp ntpdate… e il tuo orario di sistema sarà sempre sincronizzato.
Installa postfix, dovecot e mysql con un solo comando:
apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudoInserisci la nuova password per mysql quando richiesta dall’installatore e rispondi alle domande successive come descritto di seguito:
Crea directory per l’amministrazione basata sul web? <– No
Tipo generale di configurazione? <– Sito Internet
Nome email? <– server1.mydomain.tld
Certificato SSL richiesto <– Ok
Vogliamo che MySQL ascolti su tutte le interfacce, non solo su localhost, quindi modifichiamo /etc/mysql/my.cnf e commentiamo la riga bind-address = 127.0.0.1:
vi /etc/mysql/my.cnf[...]
# Invece di skip-networking il predefinito è ora ascoltare solo su
# localhost che è più compatibile e non è meno sicuro.
#bind-address = 127.0.0.1
[...] Quindi riavvia MySQL:
/etc/init.d/mysql restartPer installare amavisd-new, SpamAssassin e ClamAV, eseguiamo:
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 Quindi installa Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt come segue:
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 Vedrai la seguente domanda:
Server web da riconfigurare automaticamente: <– apache2
Quindi esegui il seguente comando per abilitare i moduli Apache suexec, rewrite, ssl, actions e include:
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digestPureFTPd e quota possono essere installati con il seguente comando:
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatoolModifica /etc/fstab. Il mio appare così (ho aggiunto,usrquota,grpquota alla partizione con il punto di montaggio /):
vi /etc/fstab# /etc/fstab: informazioni statiche sul file system.
#
#
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 Per abilitare la quota, esegui questi comandi:
touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm
quotaon -avug
Installa il server DNS BIND:
apt-get -y install bind9 dnsutilsInstalla vlogger e webalizer e awstats:
apt-get -y install vlogger webalizer awstats Installa Jailkit: Jailkit è necessario solo se desideri chrootare gli utenti SSH. Può essere installato come segue (importante: Jailkit deve essere installato prima di ISPConfig - non può essere installato successivamente!):
apt-get -y install build-essential autoconf automake1.9 libtool flex bisoncd /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*
Installa fail2ban: Questo è facoltativo ma raccomandato, perché il monitor ISPConfig cerca di mostrare il log:
apt-get install fail2banInstalla GlusterFS e Fuse:
apt-get -y –force-yes -t lenny-backports install fuse-utils
apt-get -y –force-yes install glusterfs-server glusterfs-client
Rimuovi i file di configurazione di esempio di GlusterFS:
rm -f /etc/glusterfs/*.vol Crea le directory di dati per i volumi 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
Crea il file di configurazione del server GlusterFS:
vi /etc/glusterfs/glusterfsd.vol# Configurazione per il volume del server 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
# Configurazione per il volume del server 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
# Configurazione per il volume del server 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
# esporta tutti i volumi
volume server
type protocol/server
option transport-type tcp
subvolumes brick-mysql brick-vmail brick-www
# opzioni di autenticazione per il 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
# opzioni di autenticazione per il 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
# opzioni di autenticazione per 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-volumeSostituisci gli indirizzi IP con gli IP dei tuoi server e sostituisci la password 7wQav7ExkFg6eW con una password a tua scelta.
Avvia il server GlusterFS:
/etc/init.d/glusterfs-server start Ora creiamo i tre file di volume client di cui abbiamo bisogno per montare i filesystem GlusterFS.
vi /etc/glusterfs/glusterfs-mysql.volvolume 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-volumevi /etc/glusterfs/glusterfs-vmail.volvolume 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-volumevi /etc/glusterfs/glusterfs-www.volvolume 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-volumePrima di montare i nostri volumi nelle directory, dovremo fermare alcuni servizi e fare un backup dei dati attuali:
/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/fstabAggiungi le righe:
/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 0Ora monta i dischi eseguendo:
mount -aCambia il proprietario della directory mysql all’utente e al gruppo mysql:
chown mysql:mysql /var/lib/mysqlCopia i dati mysql e www indietro.
cp -prf /var/lib/mysql_bak/ /var/lib/mysql/
cp -prf /var/www_bak/ /var/www/
Copia indietro i dati (solo sul server master! Salta questo passaggio sullo slave!).
Disattiva innodb poiché causa problemi di blocco quando MySQL si avvia.
vi /etc/mysql/my.cnfCambia la riga:
#skip-innodbin:
skip-innodb e aggiungi la riga
innodb_file_per_table nella sezione [mysqld] del file my.cnf.
Quando imposti il server slave, copia il file /etc/mysql/debian.cnf dal server master al server slave prima di riavviare MySQL!
Ora riavvia i servizi:
/etc/init.d/mysql start
/etc/init.d/apache2 start
/etc/init.d/postfix start
/etc/init.d/dovecot start
Cambia l’ordine di avvio di GlusterFS per garantire che il server GlusterFS venga sempre avviato prima di 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
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.