Your SlideShare is downloading. ×
Implementazione di un ambiente in alta affidabilità
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Implementazione di un ambiente in alta affidabilità

1,292
views

Published on

Implementazione di un ambiente in alta affidabilità di un cluster caratterizzato da un Web Server che esegue un CMS Drupal ed un Server MySQL.

Implementazione di un ambiente in alta affidabilità di un cluster caratterizzato da un Web Server che esegue un CMS Drupal ed un Server MySQL.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,292
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 RETIImplementazione  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. IntroduzioneLobiettivo del progetto è quello di realizare un SistemaCluster Linux ad Alta Affidabilità (HA) in grado di fornirecontinuità del servizio (Cluster Fail-over).Tramite lutilizzo di tools e di un indirizzo IP comune alle duemacchine, qualora la macchina eletta a Master subisca unreboot o un down, le risorse saranno migrate sulla macchinaSlave, in maniera trasparente per lesterno, 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 lutilizzo 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 allattivazione della partizione DRBD sul server passivo che cambierà stato: da Slave a Master.PacemakerNoto anche come CRM, Cluster Resource Manager, gestisce le risorse di uncluster ad alta affidabilità.Pacemaker attiva, chiude e monitora lo stato delle risorse fornite da uncluster; collabora con OpenAIS per gestire i nodi del cluster e farlicomunicare tra di loro.
  • 6. OpenAISÈ una struttura di supporto standard per i cluster. Tramite limplementazionedi una serie di API e di politiche, sviluppa applicazioni che mantengono attivii servizi, nonostante potenziali malfunzionamenti; rappresenta il mezzoutilizzato dal sistema per garantire la comunicazione fra i nodi e linterazionedegli stessi con il CRM.CorosyncÈ un insieme di interfacce utilizzate al fine di garantire la replicazione e ladisponibilità di applicazioni: un semplice manager che riavvia le applicazioniin caso di fallimento, gestendo la notifica delle loro informazioni.
  • 7. 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
  • 8. Guide di installazione Cluster sudo apt­get install pacemaker corosync openaisDopo  linstallazione  la  prima  modifica  da  apportare  è  nel  file /etc/corosync/corosync.conf bindnetaddres       10.10.7.0 mcastaddr                 226.94.1.1e  modificare  il  file  /etc/default/corosync  settando  la  variabile  /etc/default/corosyncSTART=YES
  • 9. Configurazione di 3 proprietà per il cluster: evita che le risorse vengano   crm configure rsc_defaults resource­stickiness=100 mosse allinterno del cluster crm configure property no­quorum­policy=ignore ignora lassenza di quorum: ci sono 2 nodi nel cluster crm configure property stonith­enabled=false disabilita Stonith visualizzare stato crm configure show dei servizi
  • 10. È necessario inoltre configurare un indirizzo IP condiviso (VIP) chepermette di raggiungere i servizi indipendentemente da dove sono inesecuzione.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"
  • 11. DRBD sudo apt-get install drbd8-utils update-rc.d -f drbd removeModifica 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; } }
  • 12. 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 dellemacchine. Al termine delloperazione uno dei server sarà in statoPrimary e laltro in stato Slave ed è possibile creare il filesystem epopolare il disco. drbdadm – ­­overwrite­data­of­peer primary r0 mkfs.ext3 /dev/drbd0
  • 13. Non resta che configurare DRBD allinterno 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"
  • 14. Database Server sudo apt­get install mysql­server phpmyadminCè bisogno di condividere la directory /var/lib/mysql che contiene /var/lib/mysqli file di MySQL tramite DRBD, in modo da renderla disponibileallinterno del cluster.Si crea la cartella /data/mysql dove vengono copiati i file originali, siimpostano 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
  • 15. Nel file /etc/mysql/my.cnf  viene impostata la path per il pid­file e modificato il bind­address, impostandogli il nostro VIP. [mysqld_safe] ………… pid-file = /var/run/mysqld/mysqld.pid [mysqld] ………… bind­address = 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"  
  • 16. Web Server sudo apt-get install apache2 update-rc.d -f apache2 removeInstallato Apache, bisogna scaricare il pacchetto del CMS Drupal7scompattato 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> 
  • 17. 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 website­with­ip inf: WebSite vip crm configure order apache­after­ip 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 lordine di avvio
  • 18. A questo punto tutti i servizi sono disponibili sul cluster e nonresta che installare il CMS Drupal, da browser, andandoallindirizzo http://10.10.7.100.Utilizzando il comando crm_mon è possibile monitorare  crm_monil  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.