Installazione Server · 7 min read · Sep 28, 2025
Installazione di un Cluster Web, Email e Database MySQL su Debian 6.0 con ISPConfig 3
Installazione di un Cluster Web, Email e Database MySQL su Debian 6.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 6 con il pannello di controllo ISPConfig 3. La replica MySQL Master/Master sarà utilizzata per replicare i database client MySQL tra i server e Unison sarà utilizzato per sincronizzare le cartelle /var/www (siti web) e /var/vmail (dati degli account email).
1 Configurazione dei Due Sistemi di Base
In questa configurazione ci sarà un server master (che esegue l’interfaccia del pannello di controllo ISPConfig) e un server slave che rispecchia i servizi web (apache), email (postfix e dovecot) e database (MySQL) del server master.
Per installare la configurazione clusterizzata, abbiamo bisogno di due server con un’installazione minima di Debian 6.0. La configurazione di base è descritta nel seguente tutorial nei passaggi 1 - 8:
https://www.howtoforge.com/perfect-server-debian-squeeze-with-bind-and-dovecot-ispconfig-3
Installa solo i passaggi 1 - 8 del tutorial del server perfetto e non gli altri passaggi poiché differiscono per una configurazione clusterizzata!
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
Usa 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 il tuo /etc/apt/sources.list contenga il repository squeeze-updates (questo assicura che tu riceva sempre gli aggiornamenti più recenti per il scanner antivirus ClamAV - questo progetto pubblica versioni molto spesso e a volte le versioni vecchie smettono di funzionare).
[...]
deb http://ftp.de.debian.org/debian/ squeeze-updates main
[...] Esegui
apt-get update
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 ntpdatee l’ora del tuo sistema sarà sempre sincronizzata.
Sul server 1:
Ora creiamo una coppia di chiavi privata/pubblica su server1.example.tld:
ssh-keygen -t dsaroot@server1:~# ssh-keygen -t dsa
Generazione di una coppia di chiavi pubblica/privata dsa.
Inserisci il file in cui salvare la chiave (/root/.ssh/id_dsa): <– ENTER
Directory creata ‘/root/.ssh’.
Inserisci la passphrase (vuota per nessuna passphrase): <– ENTER
Inserisci la stessa passphrase di nuovo: <– ENTER
La tua identificazione è stata salvata in /root/.ssh/id_dsa.
La tua chiave pubblica è stata salvata in /root/.ssh/id_dsa.pub.
L’impronta della chiave è:
1b:95:bc:4a:f4:9f:d8:ea:24:31:0f:c9:72:d5:a7:80 [email protected]
L’immagine randomart della chiave è:
+–[ DSA 1024]—-+
| |
| o o |
| E * . . |
| o = o o |
| . S o . |
| + O + . |
| + + + |
| o . |
| .o |
+—————–+
root@server1:~#
È importante che tu non inserisca una passphrase altrimenti il mirroring non funzionerà senza interazione umana, quindi premi semplicemente ENTER!
Successivamente, copiamo la nostra chiave pubblica su server2.example.tld:
ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]root@server1:~# ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]
L’autenticità dell’host ‘192.168.0.101 (192.168.0.101)’ non può essere stabilita.
L’impronta della chiave RSA è 25:d8:7a:ee:c2:4b:1d:92:a7:3d:16:26:95:56:62:4e.
Sei sicuro di voler continuare a connetterti (sì/no)? <– sì (vedrai questo solo se è la prima volta che ti connetti a server2)
Attenzione: aggiunto permanentemente ‘192.168.0.101’ (RSA) alla lista degli host conosciuti.
La password di ‘[email protected]’: <– password di root di server2
Ora prova a effettuare il login nella macchina, con “ssh ‘[email protected]’”, e controlla in:
.ssh/authorized_keysper assicurarti di non aver aggiunto chiavi extra che non ti aspettavi.Ora controlla su server2 se la chiave pubblica di server1 è stata trasferita correttamente:
server2:
cat $HOME/.ssh/authorized_keysssh-dss AAAAB3NzaC1kc3MAAACBAPhiAexgEBexnw0rFG8lXwAuIsca/V+lhmv5lhF3BqUfAbL7e2sWlQlGhxZ8I2UnzZK8Ypffq6Ks+lp46yOs7MMXLqb7JBP9gkgqxyEWqOoUSt5hTE9ghupcCvE7rRMhefY5shLUnRkVH6hnCWe6yXSnH+Z8lHbcfp864GHkLDK1AAAAFQDddQckbfRG4C6LOQXTzRBpIiXzoQAAAIEAleevPHwi+a3fTDM2+Vm6EVqR5DkSLwDM7KVVNtFSkAY4GVCfhLFREsfuMkcBD9Bv2DrKF2Ay3OOh39269Z1rgYVk+/MFC6sYgB6apirMlHj3l4RR1g09LaM1OpRz7pc/GqIGsDt74D1ES2j0zrq5kslnX8wEWSHapPR0tziin6UAAACBAJHxgr+GKxAdWpxV5MkF+FTaKcxA2tWHJegjGFrYGU8BpzZ4VDFMiObuzBjZ+LrUs57BiwTGB/MQl9FKQEyEV4J+AgZCBxvg6n57YlVn6OEA0ukeJa29aFOcc0inEFfNhw2jAXt5LRyvuHD/C2gG78lwb6CxV02Z3sbTBdc43J6y [email protected]Installa postfix, dovecot e mysql con un unico 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 l’utente root di MySQL quando richiesta dall’installer. Dovresti scegliere la stessa password per entrambi i server. Quindi rispondi alle domande successive come descritto di seguito:
Tipo generale di configurazione? <– Sito Internet
Nome email? <– server1.mydomain.tld
Certificato SSL richiesto <– Ok
Usa server1.example.tld sul primo server e server2.example.tld sul secondo server.
Vogliamo che MySQL ascolti su tutte le interfacce, non solo 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 default 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 restartOra prepariamo i server MySQL per la replica master/master di mysql.
Sul server 1:
Accedi a MySQL nella shell con…
mysql -u root -p… e inserisci la password di root di MySQL che hai scelto durante l’installazione di mysql. Quindi esegui questo comando nella shell di MySQL:
GRANT REPLICATION SLAVE ON . TO ‘slaveuser’@’%’ IDENTIFIED BY ‘slave_user_password’;
FLUSH PRIVILEGES;
quit;
Sostituisci ‘slave_user_password’ con una password sicura che desideri utilizzare per lo slave per connettersi al server master. Sostituisci questo segnaposto nei passaggi successivi con la password che hai scelto ovunque si presenti il segnaposto.
Ora configuriamo i nostri 2 nodi MySQL:
Sul server 1:
vi /etc/mysql/my.cnfCerca la sezione che inizia con [mysqld], e metti le seguenti opzioni in essa (commentando tutte le opzioni in conflitto esistenti):
[...]
[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
[...] Quindi ferma MySQL:
/etc/init.d/mysql stopOra fai quasi la stessa cosa su server2…
Sul server 2:
vi /etc/mysql/my.cnfCerca la sezione che inizia con [mysqld], e metti le seguenti opzioni in essa (commentando tutte le opzioni in conflitto esistenti):
[...]
[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
[...] Quindi ferma MySQL:
/etc/init.d/mysql stopOra dobbiamo sincronizzare i due server mysql. Lo facciamo copiando la directory dei dati mysql dal master allo slave e anche il file di configurazione debian che contiene l’utente debian-sys-maint. Questo può essere fatto poiché abbiamo fermato mysql prima su entrambi i server.
Sul server 1:
scp -pr /var/lib/mysql/* [email protected]:/var/lib/mysql/
scp -pr /etc/mysql/debian.cnf [email protected]:/etc/mysql/debian.cnf
Ora avviamo di nuovo MySQL sul server master:
/etc/init.d/mysql startAccedi alla shell di MySQL come utente root…
mysql -u root -p… ed esegui questo comando nella shell di MySQL…
SHOW MASTER STATUS; … per ottenere lo stato master di MySQL:
mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000002 | 106 | | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)
Le informazioni di cui abbiamo bisogno per il passaggio successivo sono il file binlog mysql-bin.000002 e la posizione binlog 106. Abbiamo bisogno degli stessi dettagli per server2 più avanti.
Ora esegui questo comando nella shell di MySQL sul master per collegarlo allo slave:
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;
Quindi controlla lo stato dello slave:
SHOW SLAVE STATUS \GÈ importante che sia Slave_IO_Running che Slave_SQL_Running abbiano il valore Sì nell’output.
Sul server 2:
Accedi alla shell di MySQL come utente root…
mysql -u root -p… ed esegui questo comando nella shell di MySQL:
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;
Quindi controlla lo stato dello slave:
SHOW SLAVE STATUS \GÈ importante che sia Slave_IO_Running che Slave_SQL_Running abbiano il valore Sì nell’output
La configurazione della replica master/master di mysql è ora completata e procediamo a installare gli altri pacchetti software.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.