Implementazione di un ambiente in alta affidabilità di un cluster caratterizzato da un Web Server che esegue un CMS Drupal ed un Server MySQL.
1 of 20
More Related Content
Implementazione di un ambiente in alta affidabilità
1. UNIVERSITA' DEGLI STUDI DI PERUGIA
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea Magistrale in Informatica
Anno Accademico 2010 - 2011
PROGETTO DI SISTEMI OPERATIVI E RETI
Implementazione di un ambiente in alta
affidabilità di un cluster caratterizzato da
un Web Server che esegue un CMS Drupal ed
un Server RDBM MySQL.
Studenti:
Alfredo Parisi Docente:
Saverio Di Zeo Prof. Osvaldo Gervasi
2. Introduzione
L'obiettivo del progetto è quello di realizare un Sistema
Cluster Linux ad Alta Affidabilità (HA) in grado di fornire
continuità del servizio (Cluster Fail-over).
Tramite l'utilizzo di tools e di un indirizzo IP comune alle due
macchine, qualora la macchina eletta a Master subisca un
reboot o un down, le risorse saranno migrate sulla macchina
Slave, in maniera trasparente per l'esterno, garantendo così
una continuità del servizio.
3. Contenuti
✔ Strumenti utilizzati
✔ DRBD
✔ Pacemaker
✔ Corosync
✔ OpenAIS
✔ Prerequisiti
✔ Guide di installazione
✔ Cluster
✔ DRBD
✔ Database Server
✔ Web Server
4. Strumenti utilizzati
Per lo sviluppo del progetto sono stati utilizzati
strumenti Open Source.
Tramite l'utilizzo di VirtualBox sono state
create due macchine virtuali con sistema
operativo Ubuntu Server 10.10.
Ciascuna macchina dispone di:
OpenAIS, Pacemaker, Corosync, DRBD,
Apache2, MySQL Server, phpMyAdmin.
5. DRBD (Distribuited Replicated Block Device)
È un software che permette la sincronizzazione fra due o più partizioni di hard
disk collocati su server diversi. Una configurazione DRBD è composta da due
nodi:
● attivo
● passivo
Nel caso in cui il primo nodo (in stato di Master) dovesse essere messo fuori
uso, una serie di script provvederanno all'attivazione della partizione DRBD
sul server passivo che cambierà stato: da Slave a Master.
Pacemaker
Noto anche come CRM, Cluster Resource Manager, gestisce le risorse di un
cluster ad alta affidabilità.
Pacemaker attiva, chiude e monitora lo stato delle risorse fornite da un
cluster; collabora con OpenAIS per gestire i nodi del cluster e farli
comunicare tra di loro.
6. OpenAIS
È una struttura di supporto standard per i cluster. Tramite l'implementazione
di una serie di API e di politiche, sviluppa applicazioni che mantengono attivi
i servizi, nonostante potenziali malfunzionamenti; rappresenta il mezzo
utilizzato dal sistema per garantire la comunicazione fra i nodi e l'interazione
degli stessi con il CRM.
Corosync
È un insieme di interfacce utilizzate al fine di garantire la replicazione e la
disponibilità di applicazioni: un semplice manager che riavvia le applicazioni
in caso di fallimento, gestendo la notifica delle loro informazioni.
8. Prerequisiti
● Creazione delle macchine virtuali
● Impostazione delle interfacce di rete per ciascun
server modificando il file /etc/network/interfaces
10.10.7.50 drbd1
10.10.7.51 drbd2
192.168.56.150 server1
192.168.56.151 server2
● Verifica della corretta comunicazione tra le due
macchine
9. Guide di installazione
Cluster
sudo aptget install pacemaker corosync openais
Dopo l'installazione la prima modifica da apportare è nel file
/etc/corosync/corosync.conf
bindnetaddres 10.10.7.0
mcastaddr 226.94.1.1
e modificare il file /etc/default/corosync settando la variabile
/etc/default/corosync
START=YES
10. Configurazione di 3 proprietà per il cluster:
evita che le risorse vengano
crm configure rsc_defaults resourcestickiness=100
mosse all'interno del cluster
crm configure property noquorumpolicy=ignore ignora l'assenza di quorum:
ci sono 2 nodi nel cluster
crm configure property stonithenabled=false
disabilita Stonith
visualizzare stato
crm configure show
dei servizi
11. È necessario inoltre configurare un indirizzo IP condiviso (VIP) che
permette di raggiungere i servizi indipendentemente da dove sono in
esecuzione.
Il VIP utilizzato è il 10.10.7.100.
standard script : namespace script : nome script risorsa
nome primitiva
crm configure primitive vip ocf:heartbeat:IPaddr2
params ip="10.10.7.100" op monitor interval="5s"
12. DRBD
sudo apt-get install drbd8-utils
update-rc.d -f drbd remove
Modifica del file di configurazione /etc/drbd.conf
global {
usage-count yes;
}
common {
protocol C;
}
resource r0 {
meta-disk internal;
device /dev/drbd0;
net {
allow-two-primaries;
}
syncer {
rate 4M;
}
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
}
on server1 {
disk /dev/sda3;
address 192.168.56.150:7789;
}
on server2 {
disk /dev/sda3;
address 192.168.56.151:7789;
}
}
13. In entrambi i nodi è necessario inizializzare DRBD e creare la risorsa
(r0)
drbdadm create-md r0
modprobe drbd
drbdadm up r0
È possibile ora effettuare la sincronizzazione tra i dischi delle
macchine. Al termine dell'operazione uno dei server sarà in stato
Primary e l'altro in stato Slave ed è possibile creare il filesystem e
popolare il disco.
drbdadm – overwritedataofpeer primary r0
mkfs.ext3 /dev/drbd0
14. Non resta che configurare DRBD all'interno del cluster specificando il
nome della risorsa, il punto di mount ed il suo clone.
crm configure primitive drbd_mysql ocf:linbit:drbd
params drbd_resource="r0" sottomette la risorsa r0
op monitor interval="15s" al cluster
op start interval="0" timeout="240"
op stop interval="0" timeout="100"
crm configure primitive fs_mysql ocf:heartbeat:Filesystem definisce il filesystem
params device="/dev/drbd/by-res/r0" montato sulla directory /data
directory="/data" fstype="ext3"
crm configure ms ms_drbd_mysql drbd_mysql gestisce il clone in modo da
meta master-max="1" master-node-max="1" ottenere condivisione M/S
clone-max="2" clone-node-max="1" notify="true"
15. Database Server
sudo aptget install mysqlserver phpmyadmin
C'è bisogno di condividere la directory /var/lib/mysql che contiene
/var/lib/mysql
i file di MySQL tramite DRBD, in modo da renderla disponibile
all'interno del cluster.
Si crea la cartella /data/mysql dove vengono copiati i file originali, si
impostano i permessi necessari e si crea il link simbolico:
sudo cp -R /var/lib/mysql/* /data/mysql
sudo chown -R mysql:mysql /data/mysql
ln -s /data/mysql /var/lib/mysql
16. Nel file /etc/mysql/my.cnf viene impostata la path per il pid
file e modificato il bindaddress, impostandogli il nostro VIP.
[mysqld_safe]
…………
pid-file = /var/run/mysqld/mysqld.pid
[mysqld]
…………
bindaddress = 10.10.7.100
Infine viene configurata la primitiva nel cluster
crm configure primitive mysqld ocf:heartbeat:mysql
params binary="/usr/bin/mysqld_safe" config="/etc/mysql/my.cnf"
user="mysql" group="mysql" pid="/var/run/mysqld/mysqld.pid"
datadir="/var/lib/mysql" socket="/var/run/mysqld/mysqld.sock"
op monitor interval="30s"
17. Web Server
sudo apt-get install apache2
update-rc.d -f apache2 remove
Installato Apache, bisogna scaricare il pacchetto del CMS Drupal7
scompattato e copiato nella directory /data/drupal7.
Apportiamo le dovute modifiche al file /etc/apache2/apache2.conf:
/etc/apache2/apache2.conf
NameVirtualHost 10.10.7.100
<VirtualHost 10.10.7.100> virtual host raggiungibile
grazie al VIP
ServerPath /data/drupal7
DocumentRoot /data/drupal7/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
18. Aggiungiamo il servizio Apache al cluster, utilizzando la primitiva
crm configure primitive WebSite ocf:heartbeat:apache params
configfile="/etc/apache2/apache2.conf" op monitor interval="1min"
crm configure group mysql vip fs_mysql WebSite mysqld
crm configure colocation mysql_on_drbd inf: mysql ms_drbd_mysql:Master
crm configure colocation websitewithip inf: WebSite vip
crm configure order apacheafterip inf: vip WebSite
crm configure order mysql_after_drbd inf: ms_drbd_mysql:promote mysql:start
crea un gruppo con tutti i servizi
e gestisce l'ordine di avvio
19. A questo punto tutti i servizi sono disponibili sul cluster e non
resta che installare il CMS Drupal, da browser, andando
all'indirizzo http://10.10.7.100.
Utilizzando il comando crm_mon è possibile monitorare
crm_mon
il funzionamento del cluster.
I nostri test, utilizzando un DB di circa 4 Mb, hanno
riscontrato che in caso di down o reboot della macchina
Master le risorse sono di nuovo disponibili dopo circa 30
secondi.