SlideShare ist ein Scribd-Unternehmen logo
1 von 20
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
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.
Contenuti
✔   Strumenti utilizzati
        ✔   DRBD
        ✔   Pacemaker
        ✔   Corosync
        ✔   OpenAIS
✔   Prerequisiti
✔   Guide di installazione
        ✔   Cluster
        ✔   DRBD
        ✔   Database Server
        ✔   Web Server
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.
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.
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.
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
Guide di installazione
 Cluster

      sudo apt­get 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
Configurazione di 3 proprietà per il cluster:

                                                              evita che le risorse vengano
   crm configure rsc_defaults resource­stickiness=100
                                                              mosse all'interno del cluster




 crm configure property no­quorum­policy=ignore               ignora l'assenza di quorum:
                                                              ci sono 2 nodi nel cluster



   crm configure property stonith­enabled=false
                                                                   disabilita Stonith




          visualizzare stato
                                                        crm configure show
              dei servizi
È 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"
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;
                                  }
                          }
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 – ­­overwrite­data­of­peer primary r0



                       mkfs.ext3 /dev/drbd0
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"
Database Server
             sudo apt­get install mysql­server 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
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"  
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> 
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 l'ordine di avvio
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. 
Implementazione di un ambiente in alta affidabilità

Weitere ähnliche Inhalte

Andere mochten auch

RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013
RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013
RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013Bob Septian
 
RPP SMA Bahasa Inggris Kelas XI
RPP SMA Bahasa Inggris Kelas XIRPP SMA Bahasa Inggris Kelas XI
RPP SMA Bahasa Inggris Kelas XIDiva Pendidikan
 
RPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XIIRPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XIIDiva Pendidikan
 
RPP SMA Bahasa inggris kelas x
RPP SMA Bahasa inggris kelas xRPP SMA Bahasa inggris kelas x
RPP SMA Bahasa inggris kelas xDiva Pendidikan
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 

Andere mochten auch (11)

RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013
RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013
RPP BAHASA INGGRIS MEMUJI BERSAYAP KELAS X KURIKULUM 2013
 
RPP SMA Bahasa Inggris Kelas XI
RPP SMA Bahasa Inggris Kelas XIRPP SMA Bahasa Inggris Kelas XI
RPP SMA Bahasa Inggris Kelas XI
 
RPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XIIRPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XII
 
RPP SMA Bahasa inggris kelas x
RPP SMA Bahasa inggris kelas xRPP SMA Bahasa inggris kelas x
RPP SMA Bahasa inggris kelas x
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 

Ähnlich wie Implementazione di un ambiente in alta affidabilità

LUG - Logical volumes management
LUG - Logical volumes managementLUG - Logical volumes management
LUG - Logical volumes managementAlessandro Manfredi
 
MySQL 5
MySQL 5MySQL 5
MySQL 5jekil
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
 
Hadoop [software architecture recovery]
Hadoop [software architecture recovery]Hadoop [software architecture recovery]
Hadoop [software architecture recovery]gioacchinolonardo
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceBabel
 
ClearOS - Linux Small Business Server
ClearOS - Linux Small Business ServerClearOS - Linux Small Business Server
ClearOS - Linux Small Business ServerFrancesco Taurino
 
Raspberry omv
Raspberry omvRaspberry omv
Raspberry omvPipperss
 
Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupalDay
 
Server linux samba in un dominio
Server linux samba in un dominioServer linux samba in un dominio
Server linux samba in un dominioSaverio Menin
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioPar-Tec S.p.A.
 
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenantSaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenantTassi Francesco
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 

Ähnlich wie Implementazione di un ambiente in alta affidabilità (20)

Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Java per as400
Java per as400Java per as400
Java per as400
 
LUG - Logical volumes management
LUG - Logical volumes managementLUG - Logical volumes management
LUG - Logical volumes management
 
MySQL 5
MySQL 5MySQL 5
MySQL 5
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 
Hadoop [software architecture recovery]
Hadoop [software architecture recovery]Hadoop [software architecture recovery]
Hadoop [software architecture recovery]
 
LTSP
LTSPLTSP
LTSP
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open source
 
Hadoop SAR
Hadoop SARHadoop SAR
Hadoop SAR
 
ClearOS - Linux Small Business Server
ClearOS - Linux Small Business ServerClearOS - Linux Small Business Server
ClearOS - Linux Small Business Server
 
Cluster Domino "two is mei che one"
Cluster Domino "two is mei che one"Cluster Domino "two is mei che one"
Cluster Domino "two is mei che one"
 
Proxmox VE
Proxmox VEProxmox VE
Proxmox VE
 
Raspberry omv
Raspberry omvRaspberry omv
Raspberry omv
 
Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e Drupal
 
Server linux samba in un dominio
Server linux samba in un dominioServer linux samba in un dominio
Server linux samba in un dominio
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Hadoop analyzerJR
Hadoop analyzerJRHadoop analyzerJR
Hadoop analyzerJR
 
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenantSaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
SaaS con Symfony2 un caso *molto* concreto di applicazione multitenant
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 

Mehr von Alfredo Parisi

Strumenti open source per il giornalismo: come usare gli open data
 Strumenti open source per il giornalismo: come usare gli open data  Strumenti open source per il giornalismo: come usare gli open data
Strumenti open source per il giornalismo: come usare gli open data Alfredo Parisi
 
Parisi - Progetto Giovani
Parisi - Progetto GiovaniParisi - Progetto Giovani
Parisi - Progetto GiovaniAlfredo Parisi
 
Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...
Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...
Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...Alfredo Parisi
 
LibreUmbria, an update on the Green Migration
LibreUmbria, an update on the Green MigrationLibreUmbria, an update on the Green Migration
LibreUmbria, an update on the Green MigrationAlfredo Parisi
 
Alfredo Parisi - LibreOffice vs MSOffice
Alfredo Parisi - LibreOffice vs MSOfficeAlfredo Parisi - LibreOffice vs MSOffice
Alfredo Parisi - LibreOffice vs MSOfficeAlfredo Parisi
 
LibreOffice: programmi Smart per l'Office Automation
LibreOffice: programmi Smart per l'Office AutomationLibreOffice: programmi Smart per l'Office Automation
LibreOffice: programmi Smart per l'Office AutomationAlfredo Parisi
 
LibreUmbria, a migration romance
LibreUmbria, a migration romanceLibreUmbria, a migration romance
LibreUmbria, a migration romanceAlfredo Parisi
 
LibreOffice - Segnalare un bug
LibreOffice - Segnalare un bugLibreOffice - Segnalare un bug
LibreOffice - Segnalare un bugAlfredo Parisi
 
Personalizzazione di UltraVNC Single Click
Personalizzazione di UltraVNC Single ClickPersonalizzazione di UltraVNC Single Click
Personalizzazione di UltraVNC Single ClickAlfredo Parisi
 
LD2012: Migrazione dell'Umbria a LibreOffice
LD2012: Migrazione dell'Umbria a LibreOfficeLD2012: Migrazione dell'Umbria a LibreOffice
LD2012: Migrazione dell'Umbria a LibreOfficeAlfredo Parisi
 

Mehr von Alfredo Parisi (10)

Strumenti open source per il giornalismo: come usare gli open data
 Strumenti open source per il giornalismo: come usare gli open data  Strumenti open source per il giornalismo: come usare gli open data
Strumenti open source per il giornalismo: come usare gli open data
 
Parisi - Progetto Giovani
Parisi - Progetto GiovaniParisi - Progetto Giovani
Parisi - Progetto Giovani
 
Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...
Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...
Storie di community e migrazioni riuscite: LibreUmbria e LibreItalia - LibreO...
 
LibreUmbria, an update on the Green Migration
LibreUmbria, an update on the Green MigrationLibreUmbria, an update on the Green Migration
LibreUmbria, an update on the Green Migration
 
Alfredo Parisi - LibreOffice vs MSOffice
Alfredo Parisi - LibreOffice vs MSOfficeAlfredo Parisi - LibreOffice vs MSOffice
Alfredo Parisi - LibreOffice vs MSOffice
 
LibreOffice: programmi Smart per l'Office Automation
LibreOffice: programmi Smart per l'Office AutomationLibreOffice: programmi Smart per l'Office Automation
LibreOffice: programmi Smart per l'Office Automation
 
LibreUmbria, a migration romance
LibreUmbria, a migration romanceLibreUmbria, a migration romance
LibreUmbria, a migration romance
 
LibreOffice - Segnalare un bug
LibreOffice - Segnalare un bugLibreOffice - Segnalare un bug
LibreOffice - Segnalare un bug
 
Personalizzazione di UltraVNC Single Click
Personalizzazione di UltraVNC Single ClickPersonalizzazione di UltraVNC Single Click
Personalizzazione di UltraVNC Single Click
 
LD2012: Migrazione dell'Umbria a LibreOffice
LD2012: Migrazione dell'Umbria a LibreOfficeLD2012: Migrazione dell'Umbria a LibreOffice
LD2012: Migrazione dell'Umbria a LibreOffice
 

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.
  • 7.
  • 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 apt­get 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 resource­stickiness=100 mosse all'interno del cluster crm configure property no­quorum­policy=ignore ignora l'assenza di quorum: ci sono 2 nodi nel cluster crm configure property stonith­enabled=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 – ­­overwrite­data­of­peer 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 apt­get install mysql­server 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 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"  
  • 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 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 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.