<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<channel>
    <title>Il blog di Enrico Pirozzi - Tutorial</title>
    <link>http://www.enricopirozzi.info/</link>
    <description>Le pagine personali di Enrico Pirozzi</description>
    <dc:language>it</dc:language>
    <generator>Serendipity 1.1.2 - http://www.s9y.org/</generator>
    <pubDate>Fri, 21 May 2010 13:48:29 GMT</pubDate>

    <image>
        <url>http://www.enricopirozzi.info/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Il blog di Enrico Pirozzi - Tutorial - Le pagine personali di Enrico Pirozzi</title>
        <link>http://www.enricopirozzi.info/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Drupal Hook</title>
    <link>http://www.enricopirozzi.info/index.php?/archives/114-Drupal-Hook.html</link>
            <category>Tutorial</category>
    
    <comments>http://www.enricopirozzi.info/index.php?/archives/114-Drupal-Hook.html#comments</comments>
    <wfw:comment>http://www.enricopirozzi.info/wfwcomment.php?cid=114</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.enricopirozzi.info/rss.php?version=2.0&amp;type=comments&amp;cid=114</wfw:commentRss>
    

    <author>nospam@example.com (scotty)</author>
    <content:encoded>
    Girovagando in rete ho trovato questa lezione molto interessante sul sistema degli hook in drupal..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=6876914&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=6876914&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/vimeo.com/6876914&#039;);&quot; href=&quot;http://vimeo.com/6876914&quot;&gt;There&#039;s a hook for that! Extending Drupal / Beginning Module Development - Chris Wells&lt;/a&gt; from &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/vimeo.com/user2353628&#039;);&quot; href=&quot;http://vimeo.com/user2353628&quot;&gt;Utzu Logigan&lt;/a&gt; on &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/vimeo.com&#039;);&quot; href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 21 May 2010 15:48:29 +0200</pubDate>
    <guid isPermaLink="false">http://www.enricopirozzi.info/index.php?/archives/114-guid.html</guid>
    
</item>
<item>
    <title>Port Knocking </title>
    <link>http://www.enricopirozzi.info/index.php?/archives/19-Port-Knocking.html</link>
            <category>Tutorial</category>
    
    <comments>http://www.enricopirozzi.info/index.php?/archives/19-Port-Knocking.html#comments</comments>
    <wfw:comment>http://www.enricopirozzi.info/wfwcomment.php?cid=19</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.enricopirozzi.info/rss.php?version=2.0&amp;type=comments&amp;cid=19</wfw:commentRss>
    

    <author>nospam@example.com (scotty)</author>
    <content:encoded>
    &quot;Inutile bussare qui non aprirà nessuno....&quot; diceva una canzone qualche tempo fa&#039;. Cose&#039; il port knocking?  Quanti amministratori di sistema hanno lasciato la 22 aperta per poter accedere ai propri sistemi da remoto? Quante notti insonni nella speranza che nessuno bucasse quel server magari sfruttando un baco appena scoperto nelle librerie Openssl? Con il port knocking potrete dormire qualche sonno in più (non troppi ovviamente). Il port knocking consiste nel fare delle richieste precise al demone knockd su certe porte determinate precedentemente, se il demone vedrà in entrata la giusta sequenza prestabilita allora provvederà con &quot;l&#039;apriti sesamo!&quot; ovvero con l&#039;esecuzione di un nostro codice arbitario.&lt;br /&gt;
&lt;br /&gt;
Ad esempio se volessimo aprire e/o chiudere l&#039;ssh solo dal nostro ip e solo quando lo volgliamo noi verso una ipotetica macchina 192.168.x.x dobbiamo aggiungere nelle regole di firewall:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
iptables -P FORWARD DROP&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.253 --dport 22 -j DNAT --to 192.168.x.x&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
e poi installare e configurare &lt;em&gt;ad hoc&lt;/em&gt; il nostro demone knockd.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Installazione Port Knocking:&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Procedete al download di &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki&#039;);&quot; href=&quot;http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki&quot; &gt;http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki&lt;/a&gt; e scegliete se ricompilare il software o usare i pacchetti o usare .deb o .rpm.&lt;br /&gt;
&lt;br /&gt;
Una volta installato il demone knockd passate alla modifica del file knockd.conf in questo modo:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
[options]&lt;br /&gt;
        logfile = /var/log/knockd.log&lt;br /&gt;
&lt;br /&gt;
[openSSH]&lt;br /&gt;
        sequence    = 60000,60001,60005&lt;br /&gt;
        seq_timeout = 5&lt;br /&gt;
        command     = /sbin/iptables -A FORWARD -s %IP% -p tcp -i eth0 --dport 22 -j ACCEPT&lt;br /&gt;
        tcpflags    = syn&lt;br /&gt;
&lt;br /&gt;
[closeSSH]&lt;br /&gt;
        sequence    = 60005,60004,60003&lt;br /&gt;
        seq_timeout = 5&lt;br /&gt;
        command     = /sbin/iptables -D FORWARD -s %IP% -p tcp -i eth0 --dport 22 -j ACCEPT&lt;br /&gt;
        tcpflags    = syn&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
abbiamo ora configuarto il demone, fatelo ripartire e per provare basterà eseguire da remoto;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
$ knock ipfirewall 60000&lt;br /&gt;
$ knock ipfirewall 60001&lt;br /&gt;
$ knock ipfirewall 60005&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
e a questo punto l&#039;ssh sarà aperto dal vostro ip.&lt;br /&gt;
&lt;br /&gt;
invece con&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
$ knock ipfirewall 60005&lt;br /&gt;
$ knock ipfirewall 60004&lt;br /&gt;
$ knock ipfirewall 60003&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
provvederete alla chiusura dell&#039;ssh.&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 02 Oct 2006 16:53:21 +0200</pubDate>
    <guid isPermaLink="false">http://www.enricopirozzi.info/index.php?/archives/19-guid.html</guid>
    
</item>
<item>
    <title>Creazione di un raid software con FreeBSD  </title>
    <link>http://www.enricopirozzi.info/index.php?/archives/12-Creazione-di-un-raid-software-con-FreeBSD.html</link>
            <category>Tutorial</category>
    
    <comments>http://www.enricopirozzi.info/index.php?/archives/12-Creazione-di-un-raid-software-con-FreeBSD.html#comments</comments>
    <wfw:comment>http://www.enricopirozzi.info/wfwcomment.php?cid=12</wfw:comment>

    <slash:comments>-2</slash:comments>
    <wfw:commentRss>http://www.enricopirozzi.info/rss.php?version=2.0&amp;type=comments&amp;cid=12</wfw:commentRss>
    

    <author>nospam@example.com (scotty)</author>
    <content:encoded>
     In questo articolo andremo a vedere come realizzare in maniera semplice ed efficace un dispositivo RAID-1 Mirror su una macchina FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;CREAZIONE DI UN RAID-SOFTWARE CON FREEBSD&lt;/strong&gt;&lt;br /&gt;
In questo articolo andremo a vedere come realizzare in maniera semplice ed efficace un dispositivo RAID-1 Mirror su una macchina FreeBSD.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Premessa&lt;/strong&gt;&lt;br /&gt;
Il sistema è stato provato con FreeBSD versione 6.1/AMD64, con una coppia di dischi SATA 160 GB identici dove ad4 è il primo disco SATA e ad6 il secondo disco SATA.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Filosofia&lt;/strong&gt;&lt;br /&gt;
Da principio si ragiona come se si avesse a disposizione un disco solo, per cui si partiziona il primo disco (ad4) e si installa il sistema sul primo disco (ad4). Una volta installato il sistema operativo si crea il mirror.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Passi operativi&lt;/strong&gt;&lt;br /&gt;
Da root eseguiamo:&lt;br /&gt;
&lt;br /&gt;
# dd if=/dev/zero of=/dev/ad4 bs=512 count=79&lt;br /&gt;
# gmirror label -v -b round-robin gm4 /dev/ad4&lt;br /&gt;
Can&#039;t store metadata on /dev/ad4: Operation not permitted&lt;br /&gt;
&lt;br /&gt;
allora per poter eseguire questo passaggio scriviamo:&lt;br /&gt;
&lt;br /&gt;
# sysctl kern.geom.debugflags=16&lt;br /&gt;
kern.geom.debugflags: 0 -&gt; 16&lt;br /&gt;
# gmirror label -v -b round-robin gm4 /dev/ad4&lt;br /&gt;
Metadata value stored on /dev/ad4&lt;br /&gt;
# echo geom_mirror_load=&quot;YES&quot; &gt; /boot/loader.conf&lt;br /&gt;
# cp /etc/fstab /etc/fstab.orig&lt;br /&gt;
# vi /etc/fstab&lt;br /&gt;
&lt;br /&gt;
Cambiamo ora ogni ad con gm, e inseriamo mirror dopo /dev. Ad Esempio, /dev/ad4s1a diventa /dev/mirror/gm4s1a. Controlliamo il tutto e riavviaamo il server. Dopo il riavvio eseguiamo:&lt;br /&gt;
&lt;br /&gt;
gmirror insert gm4 ad6&lt;br /&gt;
&lt;br /&gt;
dove ad6 è il secondo disco completamente vuoto e non partizionato, in automatico verrà generato il raid, passeranno alcuni minuti, dipendenti dalla dimensione dei dischi usati, prima che l&#039;operazione venga terminata. Per ottenere informazioni sul dispositivo creato eseguiamo:&lt;br /&gt;
&lt;br /&gt;
#gmirror list&lt;br /&gt;
&lt;br /&gt;
e otteniamo ad esempio:&lt;br /&gt;
&lt;br /&gt;
Geom name: gm4&lt;br /&gt;
State: DEGRADED&lt;br /&gt;
Components: 2&lt;br /&gt;
Balance: round-robin&lt;br /&gt;
Slice: 4096&lt;br /&gt;
Flags: NONE&lt;br /&gt;
GenID: 0&lt;br /&gt;
SyncID: 1&lt;br /&gt;
ID: 1112524699&lt;br /&gt;
Providers:&lt;br /&gt;
1. Name: mirror/gm4&lt;br /&gt;
   Mediasize: 160041885184 (149G)&lt;br /&gt;
   Sectorsize: 512&lt;br /&gt;
   Mode: r6w5e6&lt;br /&gt;
Consumers:&lt;br /&gt;
1. Name: ad4&lt;br /&gt;
   Mediasize: 160041885696 (149G)&lt;br /&gt;
   Sectorsize: 512&lt;br /&gt;
   Mode: r1w1e1&lt;br /&gt;
   State: ACTIVE&lt;br /&gt;
   Priority: 0&lt;br /&gt;
   Flags: NONE&lt;br /&gt;
   GenID: 0&lt;br /&gt;
   SyncID: 1&lt;br /&gt;
   ID: 2889437976&lt;br /&gt;
2. Name: ad6&lt;br /&gt;
   Mediasize: 160041885696 (149G)&lt;br /&gt;
   Sectorsize: 512&lt;br /&gt;
   Mode: r1w1e1&lt;br /&gt;
   State: SYNCHRONIZING&lt;br /&gt;
   Priority: 0&lt;br /&gt;
   Flags: DIRTY, SYNCHRONIZING&lt;br /&gt;
   GenID: 0&lt;br /&gt;
   SyncID: 1&lt;br /&gt;
   Synchronized: 73%&lt;br /&gt;
   ID: 2441507996&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Comandi Vari&lt;/strong&gt;&lt;br /&gt;
# gmirror -help&lt;br /&gt;
&lt;br /&gt;
Visualizza l&#039;help di gmirror.&lt;br /&gt;
&lt;br /&gt;
# gmirror remove gm0 ad6&lt;br /&gt;
&lt;br /&gt;
Rimuove il secondo disco SATA dal RAID.&lt;br /&gt;
&lt;br /&gt;
# gmirror status&lt;br /&gt;
      Name    Status  Components&lt;br /&gt;
mirror/gm4  DEGRADED  ad4&lt;br /&gt;
                      ad6 (55%)&lt;br /&gt;
&lt;br /&gt;
Visualizza lo stato attuale, qui ad esempio il secondo disco è al 55% della fase di rebuilding.&lt;br /&gt;
&lt;br /&gt;
# gmirror status&lt;br /&gt;
Risp.&lt;br /&gt;
&lt;br /&gt;
      Name    Status  Components&lt;br /&gt;
mirror/gm4  COMPLETE  ad4&lt;br /&gt;
                      ad6&lt;br /&gt;
&lt;br /&gt;
In questo caso lo status è COMPLETE, allora la costruzione dell&#039;array è terminata.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Sostituzione del disco&lt;/strong&gt;&lt;br /&gt;
Spegniamo il server,togliamo il disco rotto, inseriamo un disco nuovo della stessa dimensione, riaccendiamo il server ed eseguiamo:&lt;br /&gt;
&lt;br /&gt;
# gmirror forget gm4&lt;br /&gt;
&lt;br /&gt;
Eseguendo gmirror forget diciamo al sistema di dimenticarsi di tutti i dispositivi mancanti, nel nostro caso il disco rotto, eseguiamo poi&lt;br /&gt;
&lt;br /&gt;
# gmirror insert -v gm4 ad6&lt;br /&gt;
&lt;br /&gt;
in automatico ripartirà il rebuilding del mirror e quando si otterrà&lt;br /&gt;
&lt;br /&gt;
# gmirror status&lt;br /&gt;
Risp.&lt;br /&gt;
&lt;br /&gt;
      Name    Status  Components&lt;br /&gt;
mirror/gm4  COMPLETE  ad4&lt;br /&gt;
                      ad6&lt;br /&gt;
&lt;br /&gt;
l&#039;array sarà ripristanato. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Fonti&lt;/strong&gt;&lt;br /&gt;
&lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/www.onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html?page=1&#039;);&quot; href=&quot;http://www.onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html?page=1&quot; &gt;http://www.onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html?page=1&lt;/a&gt;&lt;br /&gt;
&lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/www.oreilly.com/catalog/cfreebsd/index.html?CMP=ILL-4GV796923290&#039;);&quot; href=&quot;http://www.oreilly.com/catalog/cfreebsd/index.html?CMP=ILL-4GV796923290&quot; &gt;http://www.oreilly.com/catalog/cfreebsd/index.html?CMP=ILL-4GV796923290&lt;/a&gt;&lt;br /&gt;
&lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/plone.gufi.org&#039;);&quot; href=&quot;http://plone.gufi.org&quot; &gt;http://plone.gufi.org&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Questo documento è stato scritto in LATEX2e ed è disponibile su www.linuxtime.it/enricopirozzi.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;uploads/raid-freebsd.ps.bz2.ps&quot;  title=&quot;File Postscript&quot;&gt;File Postscript&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;uploads/raid-freebsd.pdf&quot;  title=&quot;File pdf&quot;&gt;File Pdf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 24 Sep 2006 19:21:04 +0200</pubDate>
    <guid isPermaLink="false">http://www.enricopirozzi.info/index.php?/archives/12-guid.html</guid>
    
</item>
<item>
    <title>DRBD: CLUSTER AD ALTA DISPONIBILITA'</title>
    <link>http://www.enricopirozzi.info/index.php?/archives/8-DRBD-CLUSTER-AD-ALTA-DISPONIBILITA.html</link>
            <category>Tutorial</category>
    
    <comments>http://www.enricopirozzi.info/index.php?/archives/8-DRBD-CLUSTER-AD-ALTA-DISPONIBILITA.html#comments</comments>
    <wfw:comment>http://www.enricopirozzi.info/wfwcomment.php?cid=8</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.enricopirozzi.info/rss.php?version=2.0&amp;type=comments&amp;cid=8</wfw:commentRss>
    

    <author>nospam@example.com (scotty)</author>
    <content:encoded>
    In questo articolo andremo ad esaminare come realizzare un cluster ad alta disponibilità in ambiente linux.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;HARDWARE RICHIESTO&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Cominciamo con il vedere di quale hardware abbiamo bisogno per realizzare un sistema ad alta disponibilità:&lt;br /&gt;
&lt;br /&gt;
2 Personal computer&lt;br /&gt;
6 Schede ethernet&lt;br /&gt;
1 Cavo seriale di tipo null modem&lt;br /&gt;
&lt;br /&gt;
&lt;img width=&#039;391&#039; height=&#039;351&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://www.enricopirozzi.info/enricopirozzi/myblog/uploads/foto/linuxha.png&quot; alt=&quot;cluster&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img width=&#039;291&#039; height=&#039;331&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://www.enricopirozzi.info/enricopirozzi/myblog/uploads/foto/crossover_diag2.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
Il channel bonding viene realizzato collegando due coppie di schede ethernet con con 2 cavi cross over come in figura&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;SOFTWARE NECESSARIO:&lt;/strong&gt;&lt;br /&gt;
La soluzione qui proposta è stata realizzata in ambiente linux, e quello di cui si necessita è:&lt;br /&gt;
&lt;br /&gt;
Kernel Linux 2.6.xx&lt;br /&gt;
Patch drbd per il kernel&lt;br /&gt;
Heartbeat&lt;br /&gt;
&lt;br /&gt;
Tutto quello che segue è stato realizzato su Linux Debian 3.0&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;DRBD&lt;/strong&gt;&lt;br /&gt;
In questo capitolo andremo a vedere come sia possibile patchare un kernel 2.6.xx per avere il modulo drdb all&#039;interno dei block devices del kernel.Se non esiste la prima cosa da fare e&#039; crearsi il file Kconfig_block in /usr/src/linux-2.6.xx/arch/um/. A questo punto si puo lanciare il camando di patch make DIR=/usr/src/linux-2.6.xx kernel-patch. Eseguire poi cd /usr/src/linux-2.6.xx e poi patch -p1 &lt; path-src-drdb/patch-linux-2.6.xx-drdb.0.7.xx. A questo punto si procede normalmente nella ricompilazione del kernel con make menuconfig o equivalenti e nella sezione block devices e&#039; disponibible il modulo drdb, a questo punto tale modulo e&#039; possibile come modulo selezionando oppure e&#039; possibile ricompilarlo come parte integrante del kernel selezionando &lt;*&gt;&lt;br /&gt;
&lt;br /&gt;
Creazione del device:&lt;br /&gt;
&lt;br /&gt;
Per poter creare il device bisogna lanciare il comando su entrambe i nodi.&lt;br /&gt;
&lt;br /&gt;
mknod -m 0660 /dev/drbd0 b 147 0&lt;br /&gt;
&lt;br /&gt;
a questo punto bisogna configurare id device drbd=0 in /etc/drbd.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
resource drbd0 {&lt;br /&gt;
&lt;br /&gt;
protocol C;&lt;br /&gt;
&lt;br /&gt;
startup {&lt;br /&gt;
wfc-timeout 1; # 2 minutes.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
net {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
syncer {&lt;br /&gt;
rate 100M;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
on eva {&lt;br /&gt;
device /dev/drbd0;&lt;br /&gt;
disk /dev/sda4;&lt;br /&gt;
address 192.168.100.1:7788;&lt;br /&gt;
meta-disk internal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
on eva2 {&lt;br /&gt;
device /dev/drbd0;&lt;br /&gt;
disk /dev/hdb1;&lt;br /&gt;
address 192.168.100.2:7788;&lt;br /&gt;
meta-disk internal;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
In questo esempio abbiamo creato il network raid utilizzando gli ip interni 192.168.100.x, fatto questo rendiamo attivo il tutto con :&lt;br /&gt;
&lt;br /&gt;
drbdadm up all&lt;br /&gt;
&lt;br /&gt;
a questo punto eseguendo un&lt;br /&gt;
&lt;br /&gt;
cat /proc/drbd&lt;br /&gt;
&lt;br /&gt;
avremo come risultato un qualcosa del tipo:&lt;br /&gt;
&lt;br /&gt;
0: cs:Connected st:Secondary/Secondary ld:Inconsistent&lt;br /&gt;
ns:0 nr:0 dw:0 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0&lt;br /&gt;
&lt;br /&gt;
Scegliamo ora quale dei due nodi deve diventare primario ed eseguiamo&lt;br /&gt;
&lt;br /&gt;
drbdadm -- --do-what-I-say primary drbd0&lt;br /&gt;
&lt;br /&gt;
a questo punto con&lt;br /&gt;
&lt;br /&gt;
cat /proc/drbd&lt;br /&gt;
&lt;br /&gt;
otterremmo sul primario:&lt;br /&gt;
&lt;br /&gt;
0: cs:SyncSource st:Primary/Secondary ld:Consistent&lt;br /&gt;
ns:9276 nr:0 dw:0 dr:9404 al:0 bm:2 lo:0 pe:915 ua:32 ap:0&lt;br /&gt;
[=========&gt;..........] sync&#039;ed: 50.0% (4380/5000)K&lt;br /&gt;
finish: 0:00:05 speed: 620 (620) K/sec&lt;br /&gt;
&lt;br /&gt;
mentre sul secondario:&lt;br /&gt;
&lt;br /&gt;
0: cs:SyncSource st:Primary/Secondary ld:Consistent&lt;br /&gt;
ns:12940824 nr:0 dw:87492 dr:13690591 al:109 bm:1668 lo:1000 pe:1876 ua:1000 ap:0&lt;br /&gt;
[========&gt;...........] sync&#039;ed: 44.4% (15858/28487)M&lt;br /&gt;
finish: 0:09:20 speed: 28,933 (25,160) K/sec&lt;br /&gt;
&lt;br /&gt;
Ora e&#039; giunto il momento di creare il file system sul device appena creato:&lt;br /&gt;
&lt;br /&gt;
mke2fs /dev/drbd0&lt;br /&gt;
&lt;br /&gt;
e di montarlo su una directory esistente ad esempio la /vserver:&lt;br /&gt;
&lt;br /&gt;
mount -t ext2 /dev/drbd0 /vserver/&lt;br /&gt;
&lt;br /&gt;
a questo punto il dispositivo network raid è pronto e potete iniziarci a divertirvi facendoci unpo di po&#039; di prove.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;HEARTBEAT&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Andiamo ora a vedere ed esaminare heartbeat, quello che si può dire essere il cuore (heartbeat = battito cardiaco) del nostro cluster HA.&lt;br /&gt;
&lt;br /&gt;
Per prima cosa smontiamo (umount) la partizione appena creata, e installiamo heartbeat, per sempicità possiamo anche usare un pacchetto pre-compilato, quindi apt o dselect per debian oppure rpm per altre distribuzioni.&lt;br /&gt;
&lt;br /&gt;
Una volta installato in /etc.ha.d/ ci sono i files che gestiscono il pacchetto:&lt;br /&gt;
&lt;br /&gt;
e sono:&lt;br /&gt;
&lt;br /&gt;
ha.cf, haresources,authkeys&lt;br /&gt;
&lt;br /&gt;
Partiamo dall&#039;ultimo, authkeys è il file che ci dice come vogliamo che sia fatta l&#039;autenticazione tra i due&lt;br /&gt;
nodi, siccome nel mio caso i due nodi sono connessi con due cavi cross in configurazione channel bonding&lt;br /&gt;
ho dato ad authkeys il parametro 1 che sta a significare connessione in chiaro:&lt;br /&gt;
&lt;br /&gt;
authkeys:&lt;br /&gt;
&lt;br /&gt;
auth 1&lt;br /&gt;
&lt;br /&gt;
Nel file ha.cf invece vengono scritte le configurazioni generali di Heartbeat, quella che ho usato io e&#039; la&lt;br /&gt;
seguente:&lt;br /&gt;
&lt;br /&gt;
ha.cf:&lt;br /&gt;
&lt;br /&gt;
debugfile /var/log/ha-debug&lt;br /&gt;
logfile /var/log/ha-log&lt;br /&gt;
logfacility local0&lt;br /&gt;
keepalive 2&lt;br /&gt;
deadtime 20&lt;br /&gt;
warntime 10&lt;br /&gt;
udpport 694&lt;br /&gt;
bcast eth0&lt;br /&gt;
baud 19200&lt;br /&gt;
serial /dev/ttyS0&lt;br /&gt;
watchdog /dev/watchdog&lt;br /&gt;
auto_failback off&lt;br /&gt;
respawn hacluster /usr/lib/heartbeat/ipfail&lt;br /&gt;
node eva&lt;br /&gt;
node eva2&lt;br /&gt;
initdead 20&lt;br /&gt;
&lt;br /&gt;
Infine il terzo, ma forse il più antipatico è il file haresources, nel quale viene scritto dove il cluster va a procurarsi le risorse e come le deve usare:&lt;br /&gt;
&lt;br /&gt;
haresources:&lt;br /&gt;
eva IPaddr::192.168.1.180/28/eth0 \&lt;br /&gt;
drbddisk::drbd0 \&lt;br /&gt;
Filesystem::/dev/drbd0::/vserver::ext2 apache&lt;br /&gt;
&lt;br /&gt;
La prima riga dice a quale ip deve rispondere il cluster e quale deve essere il nodo che si preferirebbe essere primario. Nel nostro caso si tratta di eva il nodo e l&#039;ip è 192.168.1.180, occhio che questo ip non deve essere presente sulla lan e deve essere diverso dagli ip fisici dei due pc, in pratica è un alias che a seconda delle situazioni del sistema si può trovare sulla macchina primaria o su quella secondaria.&lt;br /&gt;
Gli script drbddisk,FileSystem e apache e qualunque altra cosa si voglia fare, vanno messi dentro la directory resource.d, in questo caso drbdbdisk è copiato da /path_drbd_sorgenti/drbd-0.7.11/scripts e dice ad heartbeat come far pasare un disco da secondario a primario e viceversa; FileSystem invece ce lo da heartbeat e serve per montare e smontare il device drbd0, inoltre aggiungendo lo script apache si fa ripartire apache in caso di cambio di contesto tra le due macchine.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;CHANNEL BONDING&lt;/strong&gt;&lt;br /&gt;
Tramite channel bonding è possibile far vedere due schede di rete come se fossero una sola rispondendo quindi come se fossero un unico ip, in questo modo si riescono ad avere molteplici benefici:&lt;br /&gt;
&lt;br /&gt;
bilanciamento del carico sulle due schede aumento di prestazioni in caso di doppio canale condiviso&lt;br /&gt;
diminuzione del SPOF sulla scheda di rete, nel senso che anche se una scheda si rompe il sistema continua ad andare avanti lo stesso.&lt;br /&gt;
&lt;br /&gt;
Per realizzare un channel bonding, bisogna innanzi tutto abilitare l&#039;opzione del kernel sul channel bonding,&lt;br /&gt;
installare il pacchetto ifenslave appropriato per la propria versione del kernel, e poi modificare il file interfaces in /etc/network:&lt;br /&gt;
&lt;br /&gt;
auto bond0&lt;br /&gt;
iface bond0 inet static&lt;br /&gt;
address 192.168.1.218&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
broadcast 192.168.1.255&lt;br /&gt;
gateway 192.168.1.254&lt;br /&gt;
up ifenslave -f bond0 eth0 eth1&lt;br /&gt;
&lt;br /&gt;
ed il gioco è fatto.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;LINKS&lt;/strong&gt;&lt;br /&gt;
 &lt;br /&gt;
HeartBeat: &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/www.linux-ha.org/&#039;);&quot; href=&quot;http://www.linux-ha.org/&quot;  title=&quot;http://www.linux-ha.org/&quot;&gt;http://www.linux-ha.org/&lt;/a&gt;&lt;br /&gt;
Drbd: &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/www.drbd.org/&#039;);&quot; href=&quot;http://www.drbd.org/&quot;  title=&quot;http://www.drbd.org/&quot;&gt;http://www.drbd.org/&lt;/a&gt;&lt;br /&gt;
Kernel Linux: &lt;a onclick=&quot;javascript:urchinTracker(&#039;/extlink/www.kernel.org/&#039;);&quot; href=&quot;http://www.kernel.org/&quot;  title=&quot;http://www.kernel.org/&quot;&gt;http://www.kernel.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;CONTATTI&lt;/strong&gt;&lt;br /&gt;
Articolo scritto da Enrico Pirozzi&lt;a href=&quot;mailto:scotty@linuxtime.it&quot;  title=&quot; scotty@linuxtime.it&quot;&gt; scotty@linuxtime.it&lt;/a&gt; - &lt;a href=&quot;www.linuxtime.it/enricopirozzi&quot;  title=&quot;www.linuxtime.it/enricopirozzi&quot;&gt;www.linuxtime.it/enricopirozzi&lt;/a&gt; 
    </content:encoded>

    <pubDate>Thu, 21 Sep 2006 22:13:22 +0200</pubDate>
    <guid isPermaLink="false">http://www.enricopirozzi.info/index.php?/archives/8-guid.html</guid>
    
</item>

</channel>
</rss>