<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>digg.it &#187; linux</title>
	<atom:link href="http://digg.it/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://digg.it</link>
	<description>Se non lo scrivo lo dimentico. Se lo scrivo qualcuno me lo ricorderà. Appunti di ermeneutica digg.itale</description>
	<lastBuildDate>Thu, 08 Jul 2010 13:43:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Analizzare il carico dei processi con Munin</title>
		<link>http://digg.it/2009/05/20/analizzare-il-carico-dei-processi-con-munin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=analizzare-il-carico-dei-processi-con-munin</link>
		<comments>http://digg.it/2009/05/20/analizzare-il-carico-dei-processi-con-munin/#comments</comments>
		<pubDate>Wed, 20 May 2009 10:31:40 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[ps]]></category>

		<guid isPermaLink="false">http://digg.it/?p=246</guid>
		<description><![CDATA[Munin, come ho scritto ieri, è uno strumento di monitoring molto potente e flessibile ed esistono centinaia di plugin per gestirne il comportamento. Dopo aver cercato un po&#8217; mi sono accorto che non esiste un plugin che può monitorare il carico dei singoli processi in esecuzione su una macchina. Alcuni plugin permettono di creare un [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<p>Munin, <a href="http://digg.it/2009/05/19/analizzare-il-traffico-dei-virtualhost-di-apache-con-munin/" target="_blank">come ho scritto ieri</a>, è uno strumento di monitoring molto potente e flessibile ed esistono centinaia di plugin per gestirne il comportamento.</p>
<p>Dopo aver cercato un po&#8217; mi sono accorto che <strong>non esiste un plugin che può monitorare il carico dei singoli processi</strong> in esecuzione su una macchina. Alcuni plugin permettono di creare un grafico specifico per un determinato processo ma nessuno lo fa in maniera aggregata per tutti i processi contemporaneamente.</p>
<p>Così, vista la semplicità con cui è possibile scrivere un plugin munin,<strong> ho deciso di crearne uno che facesse al caso mio.</strong></p>
<p>Questo è il risultato che ho ottenuto con poco sforzo:</p>
<div id="attachment_247" class="wp-caption aligncenter" style="width: 511px"><a href="http://digg.it/wp-content/uploads/2009/05/vm2-processes_cpu-day.png"><img class="size-full wp-image-247" title="cpu usage per process" src="http://digg.it/wp-content/uploads/2009/05/vm2-processes_cpu-day.png" alt="Uso della CPU per processo" width="501" height="547" /></a><p class="wp-caption-text">Uso della CPU per processo</p></div>
<p>Oltre al <strong>carico di CPU</strong> ho deciso di monitorare anche i <strong>minor-faults e i major-faults</strong>. I minor faults avvengono ogni qual volta un processo cerca di scrivere in una pagina di memoria protetta da scrittura, mentre i major faults avvengono quando questa operazione richiede anche una o più operazioni di I/O (e.g: swap). L&#8217;analisi dei minor/major faults può essere utile durante l&#8217;indagine di un problema di performance di un sistema.</p>
<p>Questo, ad esempio, è il grafico dei minor-faults corrispondente al precendete grafico di carico CPU per la stessa macchina:</p>
<div id="attachment_249" class="wp-caption aligncenter" style="width: 511px"><a href="http://digg.it/wp-content/uploads/2009/05/vm2-processes_minorfaults-day.png"><img class="size-full wp-image-249" title="minor faults per process" src="http://digg.it/wp-content/uploads/2009/05/vm2-processes_minorfaults-day.png" alt="Errori di pagina &quot;minori&quot; per processor" width="501" height="547" /></a><p class="wp-caption-text">Errori di pagina &quot;minori&quot; per processor</p></div>
<p>I plugin, da copiare nella cartella /etc/munin/plugins sono questi:<br />
- <a href="http://digg.it/wp-content/uploads/2009/05/processes_cpu">processes_cpu</a><br />
- <a href="http://digg.it/wp-content/uploads/2009/05/processes_minorfaults">processes_minorfaults</a><br />
- <a href="http://digg.it/wp-content/uploads/2009/05/processes_majorfaults">processes_majorfaults</a></p>
<p>Dopo aver copiato i plugin, è necessario riavviare il munin-node:</p>
<pre>sh# service munin-node restart</pre>
<h3>Possibili migliorie</h3>
<p>Purtroppo i colori devo necessariamente lasciarli gestire a munin automaticamente.</p>
<p>Non ho idea di come si potrebbe fare a mettere in legenda solo quei processi che hanno usato almeno un 1% della CPU o funzionalità del genere.</p>
<p>Se lo stesso plugin viene installato in più macchine i processi vengono colorati diversamente per ogni macchina, rendendo di fatto poco intuitivo il confronto. Forse decidere il colore in base ad un hash calcolato dal nome del processo permettere stabilità ma potrebbe capitare che i processi più importanti abbiano poi un colore identico e siano indistinguibili.</p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/05/20/analizzare-il-carico-dei-processi-con-munin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Analizzare il traffico dei VirtualHost di Apache con Munin</title>
		<link>http://digg.it/2009/05/19/analizzare-il-traffico-dei-virtualhost-di-apache-con-munin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=analizzare-il-traffico-dei-virtualhost-di-apache-con-munin</link>
		<comments>http://digg.it/2009/05/19/analizzare-il-traffico-dei-virtualhost-di-apache-con-munin/#comments</comments>
		<pubDate>Tue, 19 May 2009 08:51:07 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[virtualhosting]]></category>

		<guid isPermaLink="false">http://digg.it/?p=228</guid>
		<description><![CDATA[Prerequisiti Questo articolo prevede l&#8217;uso di Fedora Core 10 con Apache 2 installato e funzionante. Altre distribuzioni potrebbero richiedere la compilazione dei pacchetti che invece su FC10 sono già disponibili. Installare CBand Fortunatamente anche per il modulo cband esiste un pacchetto precompilato per FC10 e quindi l&#8217;installazione è molto rapida: sh# yum install mod_cband Installato [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<h3><a href="http://digg.it/wp-content/uploads/2009/05/apache-vhost-monitoring-munin-cband.gif"><img class="alignright size-medium wp-image-232" title="apache-vhost-monitoring-munin-cband" src="http://digg.it/wp-content/uploads/2009/05/apache-vhost-monitoring-munin-cband-300x191.gif" alt="apache-vhost-monitoring-munin-cband" width="300" height="191" /></a>Prerequisiti</h3>
<p>Questo articolo prevede l&#8217;uso di Fedora Core 10 con Apache 2 installato e funzionante. Altre distribuzioni potrebbero richiedere la compilazione dei pacchetti che invece su FC10 sono già disponibili.</p>
<h3>Installare CBand</h3>
<p>Fortunatamente anche per il modulo cband esiste un pacchetto precompilato per FC10 e quindi l&#8217;installazione è molto rapida:</p>
<pre>sh# yum install mod_cband</pre>
<p>Installato il mod_cband aggiungiamo alla definizione di ogni VirtualHost che vogliamo monitorare la configurazione di cband:</p>
<pre>&lt;IfModule mod_cband.c&gt;
CBandLimit 600G
CBandExceededURL http://www.google.com
CBandScoreboard /var/run/httpd/cband_scoreboard-#DOMINIO#
CBandPeriod 1W
&lt;/IfModule&gt;</pre>
<p>Da notare che ho impostato un limite di 600GB in 1 settimana, che nel mio caso corrisponde praticamente a non limitare, poichè il traffico è molto minore. E&#8217; però necessario imporre un limite (seppur irraggiungibile) per far si che cband conteggi l&#8217;utilizzo di banda.</p>
<p>Fatto questo per ogni VH possiamo testare che la configurazione sia corretta, riavviare apache e vedere la pagina delle statistiche di cband:</p>
<pre>sh# httpd -t
sh# service httpd restart</pre>
<p>Aprendo http://localhost/cband-status vedremo una pagina simile a questa:</p>
<div id="attachment_231" class="wp-caption aligncenter" style="width: 560px"><a href="http://digg.it/wp-content/uploads/2009/05/cband-status-page.png"><img class="size-large wp-image-231" title="Pannello statistiche cband" src="http://digg.it/wp-content/uploads/2009/05/cband-status-page-550x393.png" alt="La pagina delle statistiche di cband" width="550" height="393" /></a><p class="wp-caption-text">La pagina delle statistiche di cband</p></div>
<h3>Impostare Classi in Cband</h3>
<p>cband permette di definire fino a 3 classi di utenti in base all&#8217;IP. Con un po&#8217; di lavoro possiamo quindi identificare i bot dei motori di ricerca, magari tenendo separato google che ci interessa più degli altri, e le classi di IP locali, per evitare che alcune macchine che effettuano richieste automatizzate possano inficiare le statistiche.</p>
<p>Queste sono le mie configurazioni messe in /etc/httpd/conf.d/mod_cband.conf</p>
<pre>&lt;CBandClass googlebot_class&gt;
CBandClassDst 66.249.64/20
&lt;/CBandClass&gt;

&lt;CBandClass local_class&gt;
CBandClassDst XXX.XXX.XXX.XXX
CBandClassDst 127.0.0.1
&lt;/CBandClass&gt;

&lt;CBandClass bots_class&gt;
# Yanga
CBandClassDst 91.205.124.3/22
# Exabot
CBandClassDst 193.47.80.0/24
# Slurp
CBandClassDst 72.30.0.0/16
CBandClassDst 74.6.0.0/16
CBandClassDst 67.195.114.0/24
CBandClassDst 67.195.37.0/24
CBandClassDst 202.160.178.0/20
# Yandex
CBandClassDst 77.88.22.0/21
CBandClassDst 93.158.146.0/23
# Jyxobot
CBandClassDst 195.113.214.197
# DotBot
CBandClassDst 208.115.111.0/24
# libwww-perl
CBandClassDst 195.210.89.0/24
# MSN con referrer di ricerca
# CBandClassDst 65.55.104.0/21
# Twiceler
CBandClassDst 216.129.119.1/24
CBandClassDst 64.1.215.1/24
CBandClassDst 208.36.144.1/24
CBandClassDst 38.99.13.1/24
CBandClassDst 38.99.44.1/24
# AskJeeves
CBandClassDst 66.235.124.0/24
# majestic12
CBandClassDst 85.23.64.207
CBandClassDst 212.50.134.32
CBandClassDst 85.16.151.236
CBandClassDst 85.113.244.201
CBandClassDst 68.192.9.221
CBandClassDst 85.178.109.63
# Wikio Feed
CBandClassDst 84.55.184.91
# Turnitin
CBandClassDst 65.98.224.7
# MSN
# CBandClassDst 65.55.208.0/24
# CBandClassDst 65.55.51.0/24
CBandClassDst 65.55.0.0/16
CBandClassDst 219.142.53.0/24
# Gaisbot
CBandClassDst 122.147.76.64/28
CBandClassDst 210.66.69.128/26
CBandClassDst 219.87.182.128/27
CBandClassDst 220.228.152.64/27
&lt;/CBandClass&gt;</pre>
<p>In questo modo il calcolo del traffico avverrà separatamente per &#8220;classe&#8221;. Potremo conoscere il traffico degli &#8220;utenti normali&#8221; per differenza, sottraendo dal traffico totale le classi local_class, bots_class, googlebot_class.</p>
<h3>Installare Munin</h3>
<p>Munin è uno strumento di monitoring con un meccanismo di estendibilità a plugin estremamente semplice ed intuitivo (rispetto a MRTG) che permette di monitorare uno o più server.</p>
<p>Munin si divide infatti in due pacchetti: munin e munin-node.</p>
<p>Mentre munin-node è necessario in ogni server che intendiamo controllare il pacchetto munin serve solamente nella macchina che aggregherà le statistiche per creare dei grafici tramite il noto strumento rrdtool.</p>
<p>Su Fedora Core 10 installare munin è molto semplice:</p>
<pre>sh# yum install munin munin-node</pre>
<p>Una delle peculiarità di munin è l&#8217;autoconfigurazione: i plugin infatti possono verificare l&#8217;ambiente in cui sono installati per stabilire se sono &#8220;applicabili&#8221; all&#8217;ambiente o meno. Per verificare l&#8217;autoconfigurazione possiamo lanciare questo comando:</p>
<pre>sh# munin-node-configure --shell</pre>
<p>L&#8217;output di questo comando conterrà l&#8217;elenco dei comandi da impartire alla shell per installare i plugin che dichiarano la loro compatibilità.</p>
<h3>Creare un plugin munin per mod_cband</h3>
<p>A questo punto non ci resta che creare un plugin munin che legga la pagina /cband-status e permetta così a munin di visualizzare il grafico degli accessi diviso per vhost.</p>
<p>Questo è un esempio del plugin munin che richiede la pagina e ne estrae i dati:</p>
<pre>#!/bin/sh

URL="http://localhost/cband-status?refresh=15&amp;unit=K";
WGET=`which wget`;
WGET_FLAGS="-Yoff";

# Settigs required for autoconf
#%# family=manual
#%# capabilities=autoconf

if [ "$1" = "autoconf" ]; then
echo no
exit 0
fi

if [ "$1" = "config" ]; then

echo 'graph_title CBandwith Usage '
echo 'graph_args -l 0'
echo 'graph_category apache'
echo 'graph_info This graph shows per virtual host traffic from the cband module.'
echo 'graph_vlabel Kbytes per ${graph_period}'

wget -q $WGET_FLAGS "$URL" -O - | grep -A 3 http |grep "^&lt;td .*http" |sed -e 's^.*http://\(.*\)".*^\1^' | while read site; do
metricname=$(echo $site | sed -e 's/\.//g')
#echo $metricname $site
echo $metricname'.label '$site
echo $metricname'.info Traffic generated on '$site'.'
echo $metricname'.min 0'
echo $metricname'.type DERIVE'
done;
exit 0
fi

if [ -x $WGET ]; then
SITES=$(wget -q $WGET_FLAGS "$URL" -O - | grep -A 3 http |grep "^&lt;td.*http" |sed -e 's^.*http://\(.*\)".*^\1^')
$WGET -q $WGET_FLAGS "$URL" -O - | grep -A 3 http |grep "^&lt;td.*\(color\|http\)" | while read v; do
echo -n $v | sed -e 's^.*http://\(.*\)".*^\1^' | sed -e 's/\.//g'
echo -n '.value '
read v;
echo $v | sed -e 's^.*\/\(.*\)KB.*^\1^'
done;
exit 0
fi

exit 0</pre>
<p>E questo è il risultato:</p>
<div id="attachment_234" class="wp-caption aligncenter" style="width: 511px"><a href="http://digg.it/wp-content/uploads/2009/05/apache-vhost-monitoring-munin-cband-google.gif"><img class="size-full wp-image-234" title="Grafico RRDtool Google" src="http://digg.it/wp-content/uploads/2009/05/apache-vhost-monitoring-munin-cband-google.gif" alt="Traffico generato da Google su ogni VHost" width="501" height="319" /></a><p class="wp-caption-text">Traffico generato da Google su ogni VHost</p></div>
<p>I plugin munin che ho creato sono molto spartani ma utili e controllano il <a href="http://digg.it/wp-content/uploads/2009/05/cband">traffico totale</a>, <a href="http://digg.it/wp-content/uploads/2009/05/cbandgoogle">quello di google</a>, quello <a href="http://digg.it/wp-content/uploads/2009/05/cbandbot">degli altri bots</a>, e il <a href="http://digg.it/wp-content/uploads/2009/05/cbanduser">traffico utente</a> (il totale meno i robot e meno la classe locale).</p>
<h3>Conclusioni</h3>
<p>Il modulo cband, nonostante non più aggiornato dal 2006, non sembra pesare sulle performance e la stabilità di apache2 e dopo un mesetto di utilizzo ne sono soddisfatto.</p>
<p>Dovrei migliorare il plugin configurando meglio le impostazioni dei grafici (usare il min/max/avg, stili di linea differenti.</p>
<h3>Troubleshooting</h3>
<p>Se cband non vi funziona bene probabilmente si tratta di un problema di ordine di caricamento dei files nella /etc/httpd/conf.d . Questi files vengono caricati in ordine alfabetico, quindi se le definizioni dei virtualhost le avete qui assicuratevi che vengano il ordine alfabetico dopo al mod_cband.conf</p>
<p>Io, per convenzione, li chiamo vh-dominio.conf</p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/05/19/analizzare-il-traffico-dei-virtualhost-di-apache-con-munin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trasloco di siti, propagazione DNS e Reverse Proxy</title>
		<link>http://digg.it/2009/04/17/trasloco-di-siti-propagazione-dns-e-reverse-proxy/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=trasloco-di-siti-propagazione-dns-e-reverse-proxy</link>
		<comments>http://digg.it/2009/04/17/trasloco-di-siti-propagazione-dns-e-reverse-proxy/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 15:33:49 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[reverse proxy]]></category>
		<category><![CDATA[x-forwarded-for]]></category>

		<guid isPermaLink="false">http://digg.it/?p=210</guid>
		<description><![CDATA[Lo spostamento di un sito/servizio web da un IP ad un altro può essere molto problematica. I grattacapi principali sono dovuti al tempo di propagazione del DNS, durante il quale i visitatori potrebbero approdare sia sul vecchio che sul nuovo IP in funzione di quale server DNS utilizzano e lo stato della cache. Per ridurre [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<p><a href="http://digg.it/wp-content/uploads/2009/04/testimone.jpg"><img class="alignright size-full wp-image-223" title="testimone" src="http://digg.it/wp-content/uploads/2009/04/testimone.jpg" alt="testimone" width="320" height="178" /></a></p>
<p>Lo spostamento di un sito/servizio web da un IP ad un altro può essere molto problematica. I grattacapi principali sono dovuti al <strong>tempo di propagazione del DNS</strong>, durante il quale i visitatori potrebbero approdare <strong>sia sul vecchio che sul nuovo IP</strong> in funzione di quale server DNS utilizzano e lo <strong>stato della cache</strong>.</p>
<p>Per ridurre al minimo questo problema è buona norma <strong>ridurre l&#8217;expire della cache di un dominio</strong> prima di un&#8217;operazione di trasloco di questo tipo, ma questa soluzione <strong>riduce solo il problema senza rimuoverlo</strong>.</p>
<p>Il problema fondamentale consiste nel fatto che <strong>a volte non possiamo permetterci che</strong> i due servizi su<strong> i 2 IP</strong> diversi <strong>ricevano richieste contemporaneamente</strong> perchè queste richieste potrebbero modificare lo stato di entrambi i server creando una divergenza non più sincronizzabile. Basta pensare ad un blog ed il fatto che alcuni utenti potrebbero commentare sul primo IP mentre altri sul secondo, con la conseguente perdita di dati che si avrebbe a transizione completata.</p>
<p>Una soluzione spesso adottata è quella di far rispondere il nuovo (www.dominio.com) sito ad una nuova URL tipo nuovo.dominio.com, sincronizzare il database, modificare la configurazione del webserver per far si che qualunque richiesta a www.dominio.com venga rediretta (302, temporary redirect) a nuovo.dominio.com e poi aggiornare il DNS. Questa soluzione però, oltre a <strong>non</strong> essere completamente <strong>trasparente per l&#8217;utente</strong> finale, potrebbe creare problemi nel caso in cui l&#8217;applicazione che dobbiamo spostare non sia indipendente dal nome. Potremmo infatti avere già dei cookie impostati per quel detterminato l&#8217;hostname o potremmo avere dei punti del codice che controllano quale sia l&#8217;hostname attuale.</p>
<p>Per questo motivo la mia soluzione preferita è quella di <strong>utilizzare un reverse proxy</strong>. In pratica si configura il sito nuovo, si sincronizza il db, poi si configura il vecchio non più per fare un redirect ma piuttosto per andare a chiedere la stessa pagina al sito nuovo e fornirla al navigatore.</p>
<p>Per fare questo con apache2 è sufficiente abilitare il <em>mod_proxy</em> in <em>/etc/httpd/conf/httpd.conf</em> togliendo il <em>#</em> dalle due righe:</p>
<pre>LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so</pre>
<p>ed aggiungere al virtualhost che stiamo spostando le seguenti istruzioni:</p>
<pre>ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://<strong>[IP-NUOVO-SERVER]</strong>/</pre>
<p>Con questa configurazione facciamo sì che le richieste fatte a quel sito vengano gestite non più dal server locale, ma piuttosto <strong>apache2 si preoccuperà di andarle a fare sull&#8217;[IP-NUOVO-SERVER]</strong>. <strong>ProxyPreserverHost</strong> ci serve così da poter <strong>mantenere l&#8217;Host nella richiesta</strong> e fare in modo che il server di destinazione riceva la richiesta come se l&#8217;avesse ricevuta dall&#8217;utente originale.</p>
<p>ProxyPass dice che tutte le pagine vengono &#8220;girate&#8221; al nuovo IP, ma potremmo anche decidere di fare questa operazione solo con alcune sottodirectory.</p>
<p><strong>Esiste però ancora un problema</strong> legato a questa tecnica, e cioè che <strong>il nuovo server vedrà tutte le richieste venire dall&#8217;IP del vecchio server</strong> e non conoscerà più l&#8217;IP originale. Questo significa che i log avranno l&#8217;IP del &#8220;proxy&#8221; e che alcuni script potrebbero non funzionare bene.</p>
<p>Per questo <strong>viene d&#8217;aiuto</strong> un altro modulo apache chiamato <strong>mod_extract_forwarded</strong> che permette di <strong>estrarre l&#8217;IP presente nell&#8217;header X-Forwarded-For</strong> (aggiunto dal mod_proxy) <strong>e sostituirlo al remote address usato da apache.</strong></p>
<p>Se il vostro nuovo server è una fedora core 10, come la mia, allora potete installare il modulo direttamente:</p>
<pre>shell# yum install mod_extract_forwarded.i386</pre>
<p>Il file di configurazione del modulo è in <em>/etc/httpd/conf.d/mod_extract_forwarded.conf</em> . E&#8217; sufficiente aprirlo e modificare la riga <em>MEFaccept </em>inserendo l&#8217;elenco degli IP dei &#8220;proxy&#8221; fidati:</p>
<pre>MEFaccept <strong>[IP-VECCHIO-SERVER]</strong></pre>
<p>E&#8217; importante specificare questa opzione <strong>solo per gli IP dei proxy fidati</strong> perchè l&#8217;header <strong>X-Forwarded-For è un semplice header HTTP</strong> e di conseguenza è <strong>falsificabile molto semplicemente</strong>. Basti pensare che <a href="https://addons.mozilla.org/en-US/firefox/addon/5948">esiste una estensione Firefox</a> che permette di impostare tale header a piacimento.</p>
<p>Ecco fatto, sia i log che tutte le applicazioni mostreranno l&#8217;IP originale e non quello del &#8220;proxy&#8221;.</p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/04/17/trasloco-di-siti-propagazione-dns-e-reverse-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liberare 240MB di RAM disabilitando la console web di VMware Server 2</title>
		<link>http://digg.it/2009/04/07/liberare-240mb-di-ram-disabilitando-la-console-web-di-vmware-server-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=liberare-240mb-di-ram-disabilitando-la-console-web-di-vmware-server-2</link>
		<comments>http://digg.it/2009/04/07/liberare-240mb-di-ram-disabilitando-la-console-web-di-vmware-server-2/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 12:29:48 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vic]]></category>
		<category><![CDATA[vmware server]]></category>

		<guid isPermaLink="false">http://digg.it/?p=191</guid>
		<description><![CDATA[La versione 2.0 di VMware Server ha introdotto una nuova interfaccia di gestione via web. Si tratta di una interfaccia molto comoda ed esteticamente molto gradevole che però utilizza, nell&#8217;installazione predefinita, 240MB di RAM. La cosa interessante è che i servizi di gestione remota sono un servizio separato e quindi con Virtual Infrastructure Client 2.5 [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<p>La versione 2.0 di VMware Server ha introdotto una nuova interfaccia di gestione via web. Si tratta di una interfaccia molto comoda ed esteticamente molto gradevole che però utilizza, nell&#8217;installazione predefinita, 240MB di RAM.</p>
<div id="attachment_192" class="wp-caption alignnone" style="width: 560px"><a href="http://digg.it/wp-content/uploads/2009/04/vmware-server-webaccess.jpg"><img src="http://digg.it/wp-content/uploads/2009/04/vmware-server-webaccess-550x488.jpg" alt="VMware Server 2.0 - Interfaccia webAccess" title="vmware-server-webaccess" width="550" height="488" class="size-large wp-image-192" /></a><p class="wp-caption-text">VMware Server 2.0 - Interfaccia webAccess</p></div>
<div id="attachment_193" class="wp-caption alignnone" style="width: 560px"><a href="http://digg.it/wp-content/uploads/2009/04/vmware-server-webaccess-vm.jpg"><img src="http://digg.it/wp-content/uploads/2009/04/vmware-server-webaccess-vm-550x491.jpg" alt="VMware Server 2.0 - webAccess - Interfaccia macchina virtuale" title="vmware-server-webaccess-vm" width="550" height="491" class="size-large wp-image-193" /></a><p class="wp-caption-text">VMware Server 2.0 - webAccess - Interfaccia macchina virtuale</p></div>
<p>La cosa interessante è che i servizi di gestione remota sono un servizio separato e quindi con Virtual Infrastructure Client 2.5 è possibile connettersi alla porta 8333 (in https) del server sul quale è installato VMware Server 2 e gestire tutti i parametri.</p>
<div id="attachment_194" class="wp-caption alignnone" style="width: 560px"><a href="http://digg.it/wp-content/uploads/2009/04/vmware-server-vic.jpg"><img src="http://digg.it/wp-content/uploads/2009/04/vmware-server-vic-550x377.jpg" alt="VMware Virtual Infrastructure Client 2.5" title="vmware-server-vic" width="550" height="377" class="size-large wp-image-194" /></a><p class="wp-caption-text">VMware Virtual Infrastructure Client 2.5</p></div>
<div id="attachment_195" class="wp-caption alignnone" style="width: 560px"><a href="http://digg.it/wp-content/uploads/2009/04/vmware-server-vic-vm.jpg"><img src="http://digg.it/wp-content/uploads/2009/04/vmware-server-vic-vm-550x378.jpg" alt="VIC 2.5 - Pagina macchina virtuale" title="vmware-server-vic-vm" width="550" height="378" class="size-large wp-image-195" /></a><p class="wp-caption-text">VIC 2.5 - Pagina macchina virtuale</p></div>
<p>L&#8217;unica limitazione è che con il VIC è possibile gestire solamente i formati di macchina virtuale fino al 4 mentre quelli fatti con l&#8217;interfaccia web (webAccess) sono in versione 7. Se volete mantenere la possibilità di disabilitare il webAccess, quindi, vi consiglio di creare le vostre macchine virtuali con il VI client.</p>
<p>Veniamo ora alla modifica del file /etc/rc.d/init.d/vmware<br />
Dovrete trovare la funzione:</p>
<pre>
vmware_start_webAccess() {
  echo -n '   '"$webAccessServiceName"
  $watchdog -s webAccess -u 30 -q 5 "$webAccess $webAccessOpts start" > /dev/null 2>&#038;1 &#038;
}
</pre>
<p>e modificarla in</p>
<pre>
vmware_start_webAccess() {
  echo -n '   '"$webAccessServiceName"' DISABLED'
#  echo -n '   '"$webAccessServiceName"
#  $watchdog -s webAccess -u 30 -q 5 "$webAccess $webAccessOpts start" > /dev/null 2>&#038;1 &#038;
}
</pre>
<p>In questo modo al prossimo riavvio di vmware verrà comunque lanciato hostd (il servizio di gestione base) ma non il webAccess (l&#8217;applicativo basato su Java/Tomcat che si frega così tanta RAM).</p>
<p>Non si capisce perchè VMware abbia deciso di spezzare in script di avvio separati altri 3 servizi ma poi abbia deciso di consolidare hostd (management per le virtual machine) con webAccess (accesso web al management).</p>
<p>Chrissy propone una <a href="http://blog.netnerds.net/2009/01/vmware-server-2-for-linux-how-to-disable-vmware-virtual-infrastructure-web-access/">soluzione alternativa</a> allo stesso problema.</p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/04/07/liberare-240mb-di-ram-disabilitando-la-console-web-di-vmware-server-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installare DRBD su un RPS di OVH e Fedora</title>
		<link>http://digg.it/2009/04/06/installare-drbd-su-un-rps-di-ovh-e-fedora/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installare-drbd-su-un-rps-di-ovh-e-fedora</link>
		<comments>http://digg.it/2009/04/06/installare-drbd-su-un-rps-di-ovh-e-fedora/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 12:36:00 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[drbd]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[rps]]></category>

		<guid isPermaLink="false">http://digg.it/?p=163</guid>
		<description><![CDATA[Premessa DRBD (Distributed Replicated Block Device) è una sorta di disco virtuale che gestice un RAID 1 via rete. In pratica due dischi installati su due macchine fisiche diverse possono essere visti come unico disco. DRBD è uno dei mattoni fondamentali per la gestione di un cluster HA (High Availability) low cost. Requisiti Esistono gli [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<div id="attachment_182" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/04/drbd-attivo-passivo.jpg"><img class="size-full wp-image-182" title="drbd-attivo-passivo" src="http://digg.it/wp-content/uploads/2009/04/drbd-attivo-passivo.jpg" alt="Configurazione standard DRBD" width="300" height="279" /></a><p class="wp-caption-text">Configurazione standard DRBD</p></div>
<h3>Premessa</h3>
<p>DRBD (Distributed Replicated Block Device) è una sorta di disco virtuale che gestice un RAID 1 via rete. In pratica due dischi installati su due macchine fisiche diverse possono essere visti come unico disco. DRBD è uno dei mattoni fondamentali per la gestione di un cluster HA (High Availability) low cost.</p>
<h3>Requisiti</h3>
<p>Esistono gli RPM di DRBD già fatti per Centos e si possono usare anche con la Fedora, però funzionano solo con i kernel ufficiali delle rispettive distribuzioni, quindi dovremo crearci il nostro pacchetto.</p>
<p>Innanzitutto dovete assicurarvi di <a href="http://digg.it/2009/03/31/kernel-modulare-su-un-rps-di-ovh/">avere installato un kernel che supporta i moduli</a> e che supporta la funzionalità &#8220;Connector&#8221;.</p>
<p>Inoltre è consigliabile che abbiate riservato una partizione, identica sulle due macchine che vorrete mantenere sincronizzate, da utilizzare con DRBD.<br />
Se non ne avete una potrete comunque provare creando un loop device (questo crea un loop device da 10GB):</p>
<pre>shell# dd if=/dev/zero of=/home/drbdloop bs=1024 count=10485760
shell# losetup /dev/loop0 /home/drbdloop</pre>
<p>In questo modo avrete un device (/dev/loop0) da utilizzare come disco per DRBD.</p>
<h3>Compilazione di DRBD</h3>
<pre>shell# cd /usr/src
shell# wget http://oss.linbit.com/drbd/8.3/drbd-8.3.1.tar.gz
shell# tar -zxf drbd-8.3.1.tar.gz
shell# cd drbd-8.3.1
shell# make rpm</pre>
<p>Nel mio caso mi è stato dato un errore perchè nel mio sistema mancava flex.</p>
<blockquote><p>errore: Compilazione dipendenze fallita:<br />
flex necessita di drbd-8.3.1-3.i386</p></blockquote>
<p>In realtà l&#8217;errore italiano è tradotto male. Il problema è l&#8217;esatto opposto. E&#8217; sufficiente installare flex e ripetere il make:</p>
<pre>shell# yum install flex
Installato:
  flex.i386 0:2.5.35-2.fc9
shell# make rpm
[ COMPILAZIONE ]
+ exit 0
You have now:
-rw-r--r-- 1 root root 185530  3 apr 11:23 dist/RPMS/i386/drbd-8.3.1-3.i386.rpm
-rw-r--r-- 1 root root 304874  3 apr 11:23 dist/RPMS/i386/drbd-debuginfo-8.3.1-3.i386.rpm
-rw-r--r-- 1 root root 154010  3 apr 11:23 dist/RPMS/i386/drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386.rpm</pre>
<p>A questo punto sarà sufficiente installare drbd (i tools) e drbd-km (il modulo del kernel).</p>
<h3>Installazione di DRBD</h3>
<pre>shell# rpm -Uvh --force dist/RPMS/i386/drbd-8.3.1-3.i386.rpm dist/RPMS/i386/drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386.rpm
errore: Dipendenze fallite:
        kernel necessita di drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386</pre>
<p>La distribuzione di fedora core 9 fatta da OVH non include un pacchetto kernel, ma noi abbiamo installato il kernel manualmente e quindi forziamo l&#8217;installazione.</p>
<pre>shell# rpm -Uvh --nodeps dist/RPMS/i386/drbd-8.3.1-3.i386.rpm dist/RPMS/i386/drbd-km-2.6.28.4_custom_std_ipv4_32_mod-8.3.1-3.i386.rpm
Preparazione in corso...    ########################################### [100%]
   1:drbd                   ########################################### [ 50%]
   2:drbd-km-2.6.28.4_custom########################################### [100%]
shell#</pre>
<p>Ogni volta che cambierete il kernel dovrete ripetere questa procedura ed installare il nuovo modulo del kernel (ne possono coesistere più di uno).</p>
<div id="attachment_183" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/04/drbd-failover.jpg"><img class="size-full wp-image-183" title="drbd-failover" src="http://digg.it/wp-content/uploads/2009/04/drbd-failover.jpg" alt="Failover di un sistema con DRBD" width="300" height="221" /></a><p class="wp-caption-text">Failover di un sistema con DRBD</p></div>
<h3>Configurazione DRBD</h3>
<p>D&#8217;ora in poi ipotizzerò che le due macchine siano rXXXX1.ovh.net e rXXXX2.ovh.net, che l&#8217;IP delle due macchine sia rispettivamente 87.98.XXX.101 e 87.98.XXX.102 e che per entrambe le macchine la partizione di cui tenere il mirror sia /dev/sda5.</p>
<p>Innanzitutto dovremo configurare la risorsa (che chiamo &#8220;r0&#8243; ma alla quale potrete assegnare il nome che preferite) su /etc/mrtg.conf</p>
<pre>resource r0 {
  protocol C;
  startup { degr-wfc-timeout 120; }
  syncer { rate 3M; al-extents 257; }
  on rXXXX1.ovh.net {
    device /dev/drbd0;
    disk /dev/sda5;
    address 87.98.XXX.101:7789;
    meta-disk internal;
  }
  on rXXXX2.ovh.net {
    device /dev/drbd0;
    disk /dev/sda5;
    address 87.98.XXX.102:7789;
    meta-disk internal;
  }
}</pre>
<p>Una volta configurato possiamo preparare il disco con i metadati di DRBD ed attivare la risorsa:</p>
<pre>shell# drbdadm create-md r0
shell# drbdadm up r0</pre>
<p>Fate la stessa cosa sul secondo server e poi, sul server che volete sia il primario (quello che potrà montare la partizione) fate:</p>
<pre>shell# drbdadm -- -o primary r0</pre>
<p>Ora /dev/drbd0 è un dispositivo a blocchi (disco virtuale) valido e possiamo procedere nella formattazione:</p>
<pre>shell# mkfs.ext3 /dev/drbd0</pre>
<p>A questo punto potrete montare il disco ed utilizzarlo</p>
<pre>shell# mkdir /mnt/discoha
shell# mount /dev/drbd0 /mnt/discoha</pre>
<p>Se non volete rischiare di perdere tutti i dati per un comando errato è d&#8217;obbligo la lettura del <a href="http://www.drbd.org/docs/about/">manuale</a>, per una buona comprensione dello stato di connessione, dello stato dei dischi e dello stato della sincronizzazione.</p>
<p>Se vi interessano configurazioni master-master in cui entrambi gli host possono usare contemporaneamente il disco allora avrete bisogno di una filesystem distribuita come OCFS2 o GFS: leggete l&#8217;articolo di GuiGui che riporto in fondo all&#8217;articolo per un esempio.</p>
<h3>Riferimenti</h3>
<p>Dal manuale &#8211; <a href="http://www.drbd.org/users-guide-emb/s-build-rpm.html">Building a DRBD RPM package</a><br />
Articolo di GuiGui -<br />
<a href="http://blog.guiguiabloc.fr/index.php/2009/02/16/mise-en-oeuvre-dun-systeme-de-fichier-distribue-et-acces-concurrents-en-san-avec-drbd-iscsi-ocfs2-et-dm-multipath/">Mise en oeuvre d’un système de fichier distribué et accès concurrents en SAN avec DRBD, ISCSI ,OCFS2 et DM-Multipath</a></p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/04/06/installare-drbd-su-un-rps-di-ovh-e-fedora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurare la rete per VMware server e gli IP Failover in un dedicato OVH</title>
		<link>http://digg.it/2009/04/04/configurare-la-rete-per-vmware-server-e-gli-ip-failover-in-un-dedicato-ovh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configurare-la-rete-per-vmware-server-e-gli-ip-failover-in-un-dedicato-ovh</link>
		<comments>http://digg.it/2009/04/04/configurare-la-rete-per-vmware-server-e-gli-ip-failover-in-un-dedicato-ovh/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 13:46:55 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[ifconfig]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[rps]]></category>
		<category><![CDATA[vmware server]]></category>

		<guid isPermaLink="false">http://digg.it/?p=133</guid>
		<description><![CDATA[Prerequisiti Innanzitutto dovete aver configurato un kernel modulare e installato vmware server con supporto per bridge e hostonly. Inoltre potreste dover aggiungere altri IP failover da assegnare alle macchine virtuali. Abilitare il forwarding Verificate se ip_forware il proxy_arp sono abilitati: shell# cat /proc/sys/net/ipv4/ip_forward 1 shell# cat /proc/sys/net/ipv4/conf/vmnet1/proxy_arp 1 Se è già così saltate questa sezione, [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<div id="attachment_160" class="wp-caption alignright" style="width: 257px"><a href="http://digg.it/wp-content/uploads/2009/04/ovh-vmware.jpg"><img class="size-full wp-image-160" title="ovh-vmware" src="http://digg.it/wp-content/uploads/2009/04/ovh-vmware.jpg" alt="OVH + VMware" width="247" height="251" /></a><p class="wp-caption-text">OVH + VMware</p></div>
<h3>Prerequisiti</h3>
<p>Innanzitutto dovete aver <a href="http://digg.it/2009/03/31/kernel-modulare-su-un-rps-di-ovh/">configurato un kernel modulare</a> e <a href="http://digg.it/2009/04/03/installare-vmware-server-201-su-un-rps-di-ovh/">installato vmware server con supporto per bridge e hostonly</a>.</p>
<p>Inoltre potreste dover <a href="http://digg.it/2009/04/02/utilizzare-ip-failover-su-un-rps/">aggiungere altri IP failover</a> da assegnare alle macchine virtuali.</p>
<h3>Abilitare il forwarding</h3>
<p>Verificate se ip_forware il proxy_arp sono abilitati:</p>
<pre>shell# cat /proc/sys/net/ipv4/ip_forward
1
shell# cat /proc/sys/net/ipv4/conf/vmnet1/proxy_arp
1</pre>
<p>Se è già così saltate questa sezione, altrimenti dovrete abilitarli.</p>
<pre>shell# vi /etc/sysctl.conf</pre>
<p>Aggiungete (o modificate se sono già presenti) queste due direttive:</p>
<pre>net.ipv4.ip_forward = 1
net.ipv4.conf.vmnet1.proxy_arp=1</pre>
<p>ricaricate le impostazioni con sysctl -p e verificate che i &#8220;cat&#8221; precedenti ora restituiscano 1. Se non è così potreste avere un kernel configurato male (mancanza del supporto iptables per il forwarding).</p>
<h3>Aggiungere il routing dell&#8217;IP FailOver</h3>
<p>Se in precedenza avete assegnato l&#8217;IP failover ad un alias della scheda dummy0 dovrete rimuoverlo, ad esempio:</p>
<pre>shell# rm /etc/sysconfig/network-scripts/ifcfg-dummy0:0
shell# ifconfig dummy0:0 down</pre>
<p>A questo punto dobbiamo aggiungere il routing per l&#8217;IP failover con</p>
<pre>shell# route add [IPFAILOVER] dev vmnet1</pre>
<p>A questo punto la macchina virtuale dovrebbe essere raggiungibile dall&#8217;esterno e viceversa, se invece la dovete configurare seguitemi al prossimo paragrafo.</p>
<h3>Configurare la rete nel Guest OS</h3>
<p>La configurazione di un guest è la seguente:<br />
IP: [IPDIFAILOVER]<br />
GATEWAY: [IPDIFAILOVER]<br />
NETMASK: 255.255.255.255<br />
E&#8217; poi necessario assicurarsi che esista un routing di default verso la scheda di rete.</p>
<p>Se il guestOS è una fedora come per me allora dovrete configurare l&#8217;IP in /etc/sysconfig/network-scripts/ifcfg-eth0</p>
<pre>
shell# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
NETMASK=255.255.255.255
IPADDR=XX.XXX.XXX.XXX (IP FAILOVER)
USERCTL=no
IPV6INIT=no
NM_CONTROLLED=no
TYPE=Ethernet
GATEWAY=XX.XXX.XXX.XXX (IP FAILOVER)
</pre>
<p>e poi dovrete creare la route di default</p>
<pre>shell# echo "default dev eth0" > /etc/sysconfig/network-scripts/route-eth0</pre>
<p>riavviando il servizio di rete dovrebbe funzionare tutto:</p>
<pre>shell# service network restart</pre>
<h3>Automatizzare la configurazione al boot</h3>
<p>Le istruzioni date fino ad ora non rendono persistenti le modifiche e quindi al primo riavvio dovrete ripeterle.</p>
<p>Come suggerito da Superkikim nell&#8217;articolo linkato prima ho creato un file routes.conf dove ho inserito l&#8217;elenco degli IP FailOver da assegnare alle VM:</p>
<pre>shell# echo [IPFAILOVER] &gt;&gt; /etc/vmware/routes.conf</pre>
<p>Invece di modificare l&#8217;init script di vmware ho preferito creare uno script <strong>/etc/rc.d/init.d/vmware-routes</strong> che si preoccupa di leggere quel file ed applicare le modifiche necessarie. Lo potete trovare <a href="http://digg.it/wp-content/uploads/2009/04/vmware-routes">qui</a>.</p>
<p>Rendiamo lo script eseguibile ed aggiungiamolo alla sequenza di boot</p>
<pre>shell# chmod 775 /etc/rc.d/init.d/vmware-routes</pre>
<pre>shell# chkconfig --add vmware-routes</pre>
<p>Se avete vmware avviato potete provarlo e verificare che abbia funzionato con</p>
<pre>shell# service vmware-routes start
shell# route -n</pre>
<p>L&#8217;ultima riga vi fornisce le route presenti e dovreste vedere, per ogni IP che avete scelto, una riga che dice che è assegnato alla vmnet1.</p>
<h3>Troubleshooting</h3>
<h4>net.ipv4.conf.default.forwarding</h4>
<p>Ho letto che qualcuno aggiunge anche queste due direttive al sysctl.conf, io non le ho.</p>
<pre>net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1</pre>
<h4>FTP backup di OVH dalle macchine virtuali non funziona</h4>
<p>Superkikim <a href="http://www.superkikim.com/vmware/ip-forwarding-pour-les-serveurs-ovh-avec-vmware-server-2/">suggerisce</a> di utilizzare questa regola iptables per poter utilizzare l&#8217;FTP backup di OVH dall&#8217;interno delle macchine virtuali:</p>
<pre>shell# iptables -t nat -A POSTROUTING --source [IPFAILOVER] --match iprange --dst-range [IPFTPBACKUP] -j SNAT --to [IPDEDICATO]</pre>
<p>In pratica solo per i pacchetti destinati all&#8217;FTP backup viene fatto NAT e non routing così che l&#8217;FTP backup accetti la connessione.<br />
Questa regola può essere aggiunta nello script vmware-routes.</p>
<h4>netmask 255.255.255.255 in Windows</h4>
<p>In Windows non è possibile applicare la netmask 255.255.255.255 via interfaccia. Bisogna quindi impostare la 255.255.255.0 e poi sistemarla tramite regedit.</p>
<h4>La rete del guest non va in Fedora Core 10</h4>
<p>Nel mio caso (Fedora Core 10) il guestOS non otteneva correttamente l&#8217;indirizzo perchè il servizio NetworkManager provava ad ottenerne uno in DHCP e la gestione della rete HostOnly di VMWareServer ne assegnava uno nella rete privata della vmnet dell&#8217;host. Ho rimosso tutti i pacchetti relativi a NetworkManager ed ho attivato il servizio network standard</p>
<pre>shell# chkconfig --levels 235 network on</pre>
<h3>Riferimenti</h3>
<p>Articolo di GuiGui &#8211; <a href="http://blog.guiguiabloc.fr/index.php/2008/12/05/ovh-ip-failover-dans-une-machine-virtuelle-vmware/">OVH, Ip Failover dans une machine virtuelle VMWare</a></p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/04/04/configurare-la-rete-per-vmware-server-e-gli-ip-failover-in-un-dedicato-ovh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installare VMWare Server 2.0.1 su un RPS di OVH</title>
		<link>http://digg.it/2009/04/03/installare-vmware-server-201-su-un-rps-di-ovh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installare-vmware-server-201-su-un-rps-di-ovh</link>
		<comments>http://digg.it/2009/04/03/installare-vmware-server-201-su-un-rps-di-ovh/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 08:27:49 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[rps]]></category>
		<category><![CDATA[vmware server]]></category>

		<guid isPermaLink="false">http://digg.it/?p=59</guid>
		<description><![CDATA[Cos&#8217;è OVH e cos&#8217;è un RPS OVH, importante società di hosting francese che da poco ha aperto una filiale italiana, vende un servizio chiamato Real Private Server (RPS). Di fatto si tratta di una macchina dedicata con l&#8217;unica differenza che il disco non è interno ma piuttosto viene utilizzato il protocollo iSCSI (e come opzione [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<h3>Cos&#8217;è OVH e cos&#8217;è un RPS</h3>
<p>OVH, importante società di hosting francese che da poco ha aperto una filiale italiana, vende un servizio chiamato Real Private Server (RPS).<br />
Di fatto si tratta di una macchina <strong>dedicata</strong> con l&#8217;unica differenza che il disco non è interno ma piuttosto viene utilizzato il protocollo iSCSI (e come opzione NFS) per utilizzare un disco di rete.</p>
<div id="attachment_64" class="wp-caption alignnone" style="width: 501px"><a href="http://digg.it/wp-content/uploads/2009/04/ovh-rps-definizione.jpg"><img class="size-full wp-image-64" title="Definizione RPS" src="http://digg.it/wp-content/uploads/2009/04/ovh-rps-definizione.jpg" alt="Il Real Private Server di OVH in breve" width="491" height="150" /></a><p class="wp-caption-text">Il Real Private Server di OVH in breve</p></div>
<p>Questa soluzione permette di avere grandi prestazioni in termini di calcolo e memoria (pari ad un dedicato) e buona affidabilità in termini di disco: senza bisogno di avere soluzioni avanzate di RAID interno i nostri dati sono al sicuro da eventuali crash di dischi con l&#8217;unico svantaggio di un accesso non troppo veloce al disco ed una limitata capacità.</p>
<p>In particolare l&#8217;accesso al disco avviene sempre tramite la scheda di rete a 100mbps che collega l&#8217;RPS ad internet e quindi non potrà in alcun caso superare questa velocità (circa 10MB/s). Il disco di rete predefinito, inoltre, è di soli 10GB, che vi verranno molto stretti se volete installare una macchina virtuale. Io ho approfittato di una offerta presente fino a qualche giorno fa con la quale OVH regalava un disco da 50GB al posto dei 10GB predefiniti, mantenendo il prezzo.</p>
<div id="attachment_65" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/04/ovh-rps-confronto-rps3-4-5.jpg"><img class="size-medium wp-image-65" title="confronto-rps-amd" src="http://digg.it/wp-content/uploads/2009/04/ovh-rps-confronto-rps3-4-5-300x142.jpg" alt="Confronto caratteristiche RPS3, RPS4 e RPS5" width="300" height="142" /></a><p class="wp-caption-text">Confronto caratteristiche RPS3, RPS4 e RPS5</p></div>
<p>Se intendete provare VMWare il mio consiglio è di scegliere almeno una RPS3 che per 20€ al mese vi da 2GB di RAM e un processore dual code AMD che supporta i flag di virtualizzazione (chiamato &#8220;<em>svm</em>&#8221; nel caso dei processori AMD). <strong>Con circa 40€ potete permettervi un server con 4GB di RAM e un AMD Phenom X4</strong>. Teniamo sembre presente che più memoria abbiamo più dati del disco riusciremo a cachare e meno la lentezza dell&#8217;accesso al disco influirà sulle prestazioni finali. WOW!</p>
<h3 style="clear: both;">Kernel</h3>
<p>Gli RPS vengono consegnate con una distribuzione linux a vostra scelta. Io ho scelto Fedora Core 9, poichè utilizzo redhat/fedora da circa 10 anni e la conosco meglio e poi, in questo caso, torna utile il supporto per i pacchetti RPM.</p>
<p>Innanzitutto per poter installare VMWare Server è necessario che il kernel del sistema supporti il caricamento dinamico di moduli e il dispositivo /dev/rtc (Real Time Clock). I kernel predefiniti presenti nel netboot degli RPS non supportano i moduli e quindi dovrete <a href="http://digg.it/2009/03/31/kernel-modulare-su-un-rps-di-ovh/">compilare ed installare un kernel personalizzato</a>.</p>
<p>Assicuratevi quindi che dopo il reboot il comando &#8220;lsmod&#8221; non restituisca errore e che il device /dev/rtc esista (ls /dev/rtc)</p>
<pre>
shell# lsmod
Module                  Size  Used by
iptable_filter          3072  0
ip_tables              11920  1 iptable_filter
....

shell# ls -al /dev/rtc
lrwxrwxrwx 1 root root 4  2 apr 02:00 /dev/rtc -&gt; rtc0</pre>
<h3 style="clear: both;">Download di VMware Server 2.0.1</h3>
<div id="attachment_80" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/04/vmware-server-nag.jpg"><img class="size-medium wp-image-80" title="vmware-server-nag" src="http://digg.it/wp-content/uploads/2009/04/vmware-server-nag-300x183.jpg" alt="VMWare Server 2.0" width="300" height="183" /></a><p class="wp-caption-text">VMWare Server 2.0</p></div>
<p>Vi consiglio di eseguire la <a href="http://www.vmware.com/go/getserver">procedura di registrazione</a> sul sito di vmware così da ottenere una login e password da utilizzare per scaricare il file dal vostro server e la chiave di registrazione.</p>
<div id="attachment_118" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/04/vmware-server-licenze.jpg"><img class="size-medium wp-image-118" title="vmware-server-licenze" src="http://digg.it/wp-content/uploads/2009/04/vmware-server-licenze-300x164.jpg" alt="Sito VMWare - Download e chiave licenza" width="300" height="164" /></a><p class="wp-caption-text">Sito VMWare - Download e chiave licenza</p></div>
<p>Una volta ottenuta la login/password e i codici di licenza per la versione linux potrete, direttamente dal server scaricare il pacchetto rpm:</p>
<pre>shell# lynx http://www.vmware.com/go/getserver</pre>
<p>Accetate i cookies con &#8220;A&#8221; (vi verrà chiesto un paio di volte), trovate il punto dove mettere username e password per poi proseguire con &#8220;continue&#8221; e a quel punto selezionate la versione RPM per linux e scaricatela con &#8220;D&#8221;.<br />
Quando vi viene chiesto il nome assicuratevi di cancellare i parametri presenti dopo al &#8220;?&#8221; così che il file abbia estensione <em>.rpm</em>.<br />
Noterete che il server scarica i quasi 500MB dal sito VMWare a 10MB/s <img src='http://digg.it/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ma li salva in memoria. Quando andrete a salvararli su disco ci metterà altrettanto tempo (anche l&#8217;accesso al disco è a 10MB/s circa!! <img src='http://digg.it/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  ).</p>
<h3>Installazione</h3>
<pre>shell# rpm -Uvh VMware-server-2.0.1-156745.i386.rpm

Preparazione in corso...   ########################################### [100%]
1:VMware-server          ########################################### [100%]

The installation of VMware Server 2.0.1 for Linux completed successfully.
You can decide to remove this software from your system at any time by
invoking the following command: "rpm -e VMware-server".

Before running VMware Server for the first time, you need to
configure it for your running kernel by invoking the
following command: "/usr/bin/vmware-config.pl".

Enjoy,

--the VMware team</pre>
<p>Come suggerito dal testo avviamo poi la configurazione:</p>
<pre>
shell# /usr/bin/vmware-config.pl
Making sure services for VMware Server are stopped.

Stopping VMware autostart virtual machines:
Virtual machines                                        [FALLITO]
Stopping VMware management services:
VMware Virtual Infrastructure Web Access
VMware Server Host Agent                                [FALLITO]
Stopping VMware services:
VMware Authentication Daemon                            [  OK  ]
Virtual machine monitor                                 [  OK  ]

You must read and accept the End User License Agreement to continue.
Press enter to display it.</pre>
<p>Ci viene mostrata l&#8217;intera licenza&#8230;</p>
<pre>
Do you accept? (yes/no) <strong>yes</strong>

Thank you.

None of the pre-built vmmon modules for VMware Server is suitable for your running kernel.  Do you want this program to try to build the vmmon module for your system (you need to have a C compiler installed on your system)? <strong>[yes]</strong>

Using compiler "/usr/bin/gcc". Use environment variable CC to override.

What is the location of the directory of C header files that match your running kernel?
<strong>[/lib/modules/2.6.28.4-custom-std-ipv4-32-mod/build/include]</strong>

Extracting the sources of the vmmon module.

Building the vmmon module.

Using 2.6.x kernel build system.
make: [RIMOSSO OUTPUT COMPILAZIONE]
The vmmon module loads perfectly into the running kernel.

None of the pre-built vmci modules for VMware Server is suitable for your running kernel.  Do you want this program to try to build the vmci module for your system (you need to have a C compiler installed on your system)? <strong>[yes]</strong>

Extracting the sources of the vmci module.

Building the vmci module.

Using 2.6.x kernel build system.
make: [RIMOSSO OUTPUT COMPILAZIONE]
The vmci module loads perfectly into the running kernel.

None of the pre-built vsock modules for VMware Server is suitable for your running kernel.  Do you want this program to try to build the vsock module for your system (you need to have a C compiler installed on your system)? <strong>[yes]</strong>

Extracting the sources of the vsock module.

Building the vsock module.

Using 2.6.x kernel build system.
make: [RIMOSSO OUTPUT COMPILAZIONE]
The vsock module loads perfectly into the running kernel.
<strong>[yes]</strong></pre>
<p>A questo punto viene la parte importante della configurazione della rete di VMware. In pratica creiamo una rete Bridged sulla dummy0 (già presente per la gestione dell&#8217;IP FailOver nell&#8217;RPS) ed una HostOnly lasciando scegliere un IP privato a VMware Server (non useremo questo IP).</p>
<pre>Do you want networking for your virtual machines? (yes/no/help) [yes]

Configuring a bridged network for vmnet0.

Please specify a name for this network.
[Bridged]

Your computer has multiple ethernet network interfaces available: dummy0, eth0.
Which one do you want to bridge to vmnet0? [eth0] dummy0

The following bridged networks have been defined:

. vmnet0 is bridged to dummy0

Do you wish to configure another bridged network? (yes/no) [no]

Do you want to be able to use NAT networking in your virtual machines? (yes/no) [yes] no

Do you want to be able to use host-only networking in your virtual machines? [no] yes

Configuring a host-only network for vmnet1.

Please specify a name for this network.
[HostOnly]

Do you want this program to probe for an unused private subnet? (yes/no/help) [yes]

Probing for an unused private subnet (this can take some time)...

The subnet 192.168.219.0/255.255.255.0 appears to be unused.

The following host-only networks have been defined:

. vmnet1 is a host-only network on private subnet 192.168.219.0.

Do you wish to configure another host-only network? (yes/no) [no]</pre>
<pre>
None of the pre-built vmnet modules for VMware Server is suitable for your
running kernel.  Do you want this program to try to build the vmnet module for
your system (you need to have a C compiler installed on your system)? [yes]

Extracting the sources of the vmnet module.

Building the vmnet module.

Using 2.6.x kernel build system.
make: [RIMOSSO OUTPUT COMPILAZIONE]
The vmnet module loads perfectly into the running kernel.

Please specify a port for remote connections to use [902]

You have a pre-existing config.xml.  The new version will be created as
/etc/vmware/hostd/NEW_config.xml.  Please check the new file for any new values
that you may need to migrate to your current config.xml.

Please specify a port for standard http connections to use [8222]

Please specify a port for secure http (https) connections to use [8333]

The current administrative user for VMware Server  is ''.  Would you like to
specify a different administrator? [no]

Using root as the VMware Server administrator.

You have a pre-existing vmInventory.xml.  The new version will be created as
/etc/vmware/hostd/NEW_vmInventory.xml.  Please check the new file for any new
values that you may need to migrate to your current vmInventory.xml.

In which directory do you want to keep your virtual machine files?
[/var/lib/vmware/Virtual Machines] /home/vms

You have a pre-existing datastores.xml.  The new version will be created as
/etc/vmware/hostd/NEW_datastores.xml.  Please check the new file for any new
values that you may need to migrate to your current datastores.xml.

Do you want to enter a serial number now? (yes/no/help) [no] yes

Please enter your 20-character serial number.

Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel:  YYYYY-YYYYY-YYYYY-YYYYY</pre>
<pre>
Creating a new VMware VIX API installer database using the tar4 format.

Installing VMware VIX API.

In which directory do you want to install the VMware VIX API binary files?
[/usr/bin]

In which directory do you want to install the VMware VIX API library files?
[/usr/lib/vmware-vix/lib]

The path "/usr/lib/vmware-vix/lib" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]

In which directory do you want to install the VMware VIX API document pages?
[/usr/share/doc/vmware-vix]

The path "/usr/share/doc/vmware-vix" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]

The installation of VMware VIX API 1.6.2 build-156745 for Linux completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command: "/usr/bin/vmware-uninstall-vix.pl".

Enjoy,

--the VMware team</pre>
<p>L&#8217;installazione prosegue poi avviando vmware:</p>
<pre>
Starting VMware services:
Virtual machine monitor                                 [  OK  ]
Virtual machine communication interface                 [  OK  ]
VM communication interface socket family:               [  OK  ]
Virtual ethernet                                        [  OK  ]
Bridged networking on /dev/vmnet0                       [  OK  ]
Host-only networking on /dev/vmnet1 (background)        [  OK  ]
DHCP server on /dev/vmnet1                              [  OK  ]
VMware Server Authentication Daemon (background)        [  OK  ]
Shared Memory Available                                 [  OK  ]
Starting VMware management services:
VMware Server Host Agent (background)                   [  OK  ]
VMware Virtual Infrastructure Web Access
Starting VMware autostart virtual machines:
Virtual machines                                        [  OK  ]

The configuration of VMware Server 2.0.1 build-156745 for Linux for this
running kernel completed successfully.</pre>
<h2>Verifica</h2>
<p>Se tutto è andato bene dovreste vedere che vmware ha fatto il bind di parecchie porte:</p>
<pre>
shell# netstat -lnp | grep '\(vmware\|webA\)'
tcp        0      0 127.0.0.1:8005              0.0.0.0:*                   LISTEN      3253/webAccess
tcp        0      0 0.0.0.0:902                 0.0.0.0:*                   LISTEN      3222/vmware-authdla
tcp        0      0 0.0.0.0:8009                0.0.0.0:*                   LISTEN      3253/webAccess
tcp        0      0 0.0.0.0:8333                0.0.0.0:*                   LISTEN      3346/vmware-hostd
tcp        0      0 127.0.0.1:8307              0.0.0.0:*                   LISTEN      3346/vmware-hostd
tcp        0      0 0.0.0.0:8308                0.0.0.0:*                   LISTEN      3253/webAccess
tcp        0      0 0.0.0.0:8222                0.0.0.0:*                   LISTEN      3346/vmware-hostd
</pre>
<p>A questo punto aprendo un browser su <em>https://VOSTROSERVER:8333/ui/</em> dovrebbe apparirvi la richiesta d&#8217;accesso al pannello di gestione vmware via web. <img src='http://digg.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /><br />
Se avete installato il Virtual Infrastructure Client potete alternativamente utilizzare quest&#8217;ultimo usando come indirizzo <em>VOSTROSERVER:8333</em>.<br />
Vedremo successivamente come sia possibile disabilitare la gestione web di vmware che utilizza un sacco di memoria sul server.</p>
<p>Se non vi funziona (molto probabile) allora controllate la prossima sezione.</p>
<p>Se vi funziona sappiate che non è ancora finita. <strong>Bisogna</strong> infatti <strong>ancora configurare il nostro server perchè faccia il forwarding dei pacchetti per l&#8217;IP failover verso le macchine virtuali</strong> e configurare correttamente le macchine virtuali.</p>
<h2>Risoluzione problemi</h2>
<h3>Disabilitazione SELinux</h3>
<p>vmware server 2.0 ha problemi con SELinux. I kernel di OVH non supportano SELinux, quindi se non l&#8217;avete abilitato voi non dovreste averlo. Se invece ce l&#8217;avete e non volete disabilitarlo provate a leggere il changelog di VMware server 2.0.1 che include qualche suggerimento su come sistemare i problemi con SELinux.</p>
<h3>Problemi con HALdaemon</h3>
<p>Riconoscete questo problema controllando il contenuto del log di vmware:</p>
<pre>shell# tail /var/log/vmware/hostd.log
[2009-04-02 19:41:58.793 'Libs' 3077572288 info] HAL05LoadHALLibraries: dlopened libhal.so.1.
[2009-04-02 19:41:58.793 'Libs' 3077572288 info] HAL05LoadHalLibraries: dlopened libdbus-1.so.3.
[2009-04-02 19:41:58.795 'Libs' 3077572288 info] HAL05Init: HAL context initialization failed. Try starting hald as root.
</pre>
<p>Innanzitutto verificate che haldaemon sia installato e caricato (<code>ps aux | grep hal</code> visualizza processi?).</p>
<pre>shell# rpm -qa |grep hal</pre>
<p>Non dovrebbe darvi alcun risultato, che significa che non è installato.</p>
<pre>shell# yum install hal</pre>
<p>Una volta installato provate a riavviare l&#8217;RPS. Probabilmente continuerete a vedere lo stesso errore nel log vmware.<br />
Questo succede perchè di default vmware server si avvia con una priorità maggiore rispetto ad haldaemon e questo non gli permette di avviarsi correttamente. E&#8217; quindi necessario modificare l&#8217;ordine di avvio così che vmware venga avviato successivamente ad haldaemon.</p>
<pre>
shell# vi /etc/rc.d/init.d/vmware
( nelle prime righe troverete i parametri chkconfig )
###
# chkconfig: 235 19 08
# description: Manages the services needed to run VMware software
###
</pre>
<p>Modificate il 19 in 39 così da ritardare maggiormente l&#8217;inizializzazione, salvate e avviate la riconfigurazione degli script di avvio:</p>
<pre>chkconfig vmware reset</pre>
<p>Con ogni probabilità continuerete a vedere questo errore perchè il servizio HAL sembra non partire correttamente. Nel mio caso ho risolto cambiando la priorità di avvio anche per hal:</p>
<pre>
shell# vi /etc/rc.d/init.d/haldaemon
( nelle prime righe troverete i parametri chkconfig )
###
# chkconfig: 235 26 72
# description: Manages the services needed to run VMware software
###
</pre>
<p>Modificate il 26 72 in 36 62 così da ritardare maggiormente l&#8217;inizializzazione mantenendola comunque prima di vmware (che abbiamo messo a 39), salvate e avviate la riconfigurazione degli script di avvio:</p>
<pre>chkconfig haldaemon reset</pre>
<h2>Risorse</h2>
<p>Le risorse, prevalentemente in francese (che non conosco) ma anche in inglese, usate come guida:<br />
Joannes Vermorel&#8217;s <a href="http://blog.vermorel.com/?p=92">Installing VMWare Server 2.0 on a OVH RPS</a><br />
Softilion&#8217;s <a href="http://www.nanokrill.com/(S(azy32a45mjji2d45nr1mmy45))/OVH.ashx">OVH: monter un serveur dédié Windows Server avec une licence déjà acquise par ailleurs via virtualisation VMWare</a><br />
GuiGui&#8217;s <a href="http://blog.guiguiabloc.fr/index.php/2008/10/28/vmware-server-20-sur-dedies-ovh-et-mise-en-oeuvre-dune-solution-de-haute-disponibilite-avec-datastore-en-drbd/">VMWare Server 2.0 sur dédiés OVH et mise en oeuvre d’une solution de haute disponibilité avec datastore en DRBD</a></p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/04/03/installare-vmware-server-201-su-un-rps-di-ovh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Utilizzare IP failover su un RPS</title>
		<link>http://digg.it/2009/04/02/utilizzare-ip-failover-su-un-rps/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=utilizzare-ip-failover-su-un-rps</link>
		<comments>http://digg.it/2009/04/02/utilizzare-ip-failover-su-un-rps/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 11:05:54 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[ifconfig]]></category>
		<category><![CDATA[ip failover]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[rps]]></category>

		<guid isPermaLink="false">http://digg.it/?p=51</guid>
		<description><![CDATA[Gli RPS di OVH vengono consegnati con 2 IP, di cui uno viene chiamato IP Failover. Purtroppo, a differenza dei dedicati, questo IP non può essere reindirizzato su un&#8217;altro RPS poichè è necessario durante il boot per la corretta connessione al disco iSCSI. Di fatto, quindi, l&#8217;IP failover in dotazione non può essere &#8220;basculato&#8221; tra [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<div id="attachment_60" class="wp-caption alignright" style="width: 132px"><a href="http://digg.it/wp-content/uploads/2009/04/ovh-rps-servizi.jpg"><img src="http://digg.it/wp-content/uploads/2009/04/ovh-rps-servizi-122x300.jpg" alt="Pannello di controllo servizi OVH" title="ovh-rps-servizi" width="122" height="300" class="size-medium wp-image-60" /></a><p class="wp-caption-text">Pannello di controllo servizi OVH</p></div>Gli RPS di OVH vengono consegnati con 2 IP, di cui uno viene chiamato IP Failover. Purtroppo, a differenza dei dedicati, questo IP non può essere reindirizzato su un&#8217;altro RPS poichè è necessario durante il boot per la corretta connessione al disco iSCSI.</p>
<p>Di fatto, quindi, l&#8217;IP failover in dotazione non può essere &#8220;basculato&#8221; tra gli RPS.</p>
<h3>Come e perchè</h3>
<p>Qualche giorno fa OVH ha annunciato che ora è possibile acquistare fino a 30 IP Failover aggiuntivi anche sugli RPS.</p>
<p>Per poter assegnare IP FailOver aggiuntivi al server è necessario acquistare degli &#8220;slot&#8221; e lo possiamo fare direttamente dal menu &#8220;Servizi&#8221; => &#8220;IP FailOver&#8221; del pannello di controllo:</p>
<p><div id="attachment_53" class="wp-caption alignnone" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/04/ovh-rps-ip-failover.jpg"><img src="http://digg.it/wp-content/uploads/2009/04/ovh-rps-ip-failover-300x205.jpg" alt="Pannello di controllo degli IP FailOver sul Manager di OVH" title="gestione-ip-failover" width="300" height="205" class="size-medium wp-image-53" /></a><p class="wp-caption-text">Pannello di controllo degli IP FailOver sul Manager di OVH</p></div>
<p>Una volta acquistati gli slot è possibile selezionare l&#8217;IP tra quelli ancora disponibili sulle reti OVH. L&#8217;IP FailOver appartiene ad un blocco registrato al RIPE come italiano e quindi, nonostante sia fisicamente in francia, dal punto di vista dell&#8217;assegnazione di una nazionalità risulterà italiano (alcuni esperti SEO sostengono che questo fattore sia importante per migliorare l&#8217;indicizzazione dei siti italiani: io, sinceramente, sono molto scettico e non ho ancora trovato prove in merito).</p>
<p>Al momento in cui ho effettuato l&#8217;acquisto io erano disponibili molti IP in 5 differenti classi C (alcuni esperti SEO sostengono che è importante che i link tra siti siano su IP differenti, meglio ancora su classi C differenti. Questo mi sembra già più plausibile e lo verificherò a breve spostando alcuni siti su nuovi IP).</p>
<p>Molto interessante a parer mio poter vedere l&#8217;elenco degli IP tra i quali scegliere così da assicurarsi di non utilizzare un IP con una cattiva reputazione (un IP usato in precedenza per scopi non troppo etici).</p>
<h3>Configurazione di un IP FailOver su Fedora Core 9</h3>
<p>Aggiungere un IP FailOver ad un RPS con Fedora Core 9 è piuttosto semplice.</p>
<p>l&#8217;IP failover in dotazione è già configurato su una interfaccia di rete &#8220;virtuale&#8221; chiamata dummy0<br />
Per aggiungere un alias possiamo creare copie del file dummy0 aggiungendo :1, :2, :3 per ogni IP FailOver che ci serve aggiungere.</p>
<pre>
# la cartella di configurazione della rete è per le Fedora in sysconfig
<code>shell# cd /etc/sysconfig/network-scripts</code>
<code>shell# cp dummy0 dummy0:1</code>
<code>shell# vi ifcfg-dummy0:1</code>
<code>DEVICE=dummy0:1
BOOTPROTO=static
IPADDR=94.23.XX.XXX
NETMASK=255.255.255.255
ONBOOT=yes</code>
</pre>
<p>A questo punto sarà sufficiente modificare il file appena creato (ifcfg-dummy0:1) inserendo come IPADDR l&#8217;ip failover acquistato e poi abilitare gli alias</p>
<pre>
<code>shell# ./ifup-aliases dummy0</code>
</pre>
<p>E verificare che abbia funzionato:</p>
<pre>
<code>shell# ifconfig dummy0:1</code>
<code>
dummy0:1  Link encap:Ethernet  HWaddr F2:DD:43:XX:XX:XX
&nbsp;&nbsp;inet addr:94.23.XX.XXX  Bcast:94.23.XX.XXX  Mask:255.255.255.255
&nbsp;&nbsp;UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
</code>
</pre>
<p>Il mio consiglio è quello di provare subito anche a riavviare il server per verificare che l&#8217;IP venga riacquisito correttamente al boot.</p>
<h3>Next</h3>
<p>La mia intenzione è quella di provare ad installare VMware Server 2 e configurare una macchina virtuale che utilizzi l&#8217;IP FailOver appena configurato. Per ora tutto liscio, le prossime puntate saranno un po&#8217; più complicate.</p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/04/02/utilizzare-ip-failover-su-un-rps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ridurre le dimensioni del kernel su un RPS3</title>
		<link>http://digg.it/2009/04/01/ridurre-le-dimensioni-del-kernel-su-un-rps3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ridurre-le-dimensioni-del-kernel-su-un-rps3</link>
		<comments>http://digg.it/2009/04/01/ridurre-le-dimensioni-del-kernel-su-un-rps3/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 10:20:42 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[initrd]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[rps3]]></category>

		<guid isPermaLink="false">http://digg.it/?p=35</guid>
		<description><![CDATA[Due giorni fa ho scritto come ricompilare il kernel per un RPS di OVH e come questo renda il boot molto lento. Convertendo in moduli caricabili dinamicamente tutte le opzioni del kernel che lo supportano e che non siano necessarie durante il boot, togliendo alcune funzionalità non utilizzate e lasciando i soli moduli necessari per [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<p>Due giorni fa ho scritto come ricompilare il kernel per un RPS di OVH e come questo renda il boot molto lento.</p>
<p>Convertendo in moduli caricabili dinamicamente tutte le opzioni del kernel che lo supportano e che non siano necessarie durante il boot, togliendo alcune funzionalità non utilizzate e lasciando i soli moduli necessari per l&#8217;hardware dell&#8217;RPS3 (AMD Athlon 64) sono riuscito a ridurre l&#8217;immagine compressa del kernel <strong>da 4.5MB a 1.8MB</strong>!</p>
<p>Ho lasciato la compilazione statica per la scheda di rete 100mbps (nForce), il supporto per le filesystems ext2, ext3, cramfs, il supporto per iSCSI, iSCSI initiator, il supporto per i block devices, il supporto per il ramdisk.</p>
<p>Ho inoltre impostato l&#8217;ottimizzazione per processori AMD Athlon 64 togliendo il supporto per tutti gli Intel ed altri.</p>
<p>Ho abilitato tutte le funzionalità di iptables ma come modulo.</p>
<p>Il risultato è questo <a href="http://digg.it/wp-content/uploads/2009/04/.config">.config</a> che potete utilizzare al posto di quello di OVH e poi <a href="http://digg.it/2009/03/31/kernel-modulare-su-un-rps-di-ovh/">ricompilare ed installare il kernel</a>.</p>
<p><strong>Così facendo il tempo direboot del mio RPS3 è passato da 15 minuti a 8 minuti. </strong>Continuo a ricevere i ticket di OVH che si accorge che il sistema non è raggiungibile da troppo tempo ma a questo punto il ticket rimane aperto talmente poco che è improbabile che un tecnico OVH prenda in carico il ticket e decida di riavviare l&#8217;RPS con il netboot.</p>
<h3>Riabilitare lo swap</h3>
<p>La rimozione del supporto USB dal kernel verso un modulo fa si che la direttiva <em>append=&#8221;libusual.bias=ub&#8221;</em> (presente nel /etc/lilo.conf) non funzioni più. Quella direttiva fa si che la chiave usb presente per lo swap venga chiamata /dev/uba e non /dev/sd* per evitare di fare conflitto con i dischi iSCSI.<br />
Per risistemare le cose dobbiamo quindi eliminare l&#8217;append &#8220;inutile&#8221; dal lilo.conf e poi abilitare lo swap manualmente.</p>
<pre><code>swapon -s</code>
# se non è già presente lo swap su /dev/sdb lo abilitiamo
<code>mkswap -v1 /dev/sdb</code>
<code>swapon /dev/sdb</code>
<code>grep -q "/dev/sdb" /etc/fstab || echo "/dev/sdb none swap sw 0 0" &gt;&gt; /etc/fstab</code></pre>
<p>A questo punto lo swap verrà riabilitato in automatico al boot.<br />
Ricordatevi inoltre che dopo aver modificato il <em>lilo.conf</em> dovete aggiornare il bootrecord con &#8220;<em>lilo -v</em>&#8221;</p>
<h3>Altro sulle dimensioni del kernel</h3>
<p>Per capire quanto influisca ciascuna funzionalità &#8220;built-in&#8221; sulla dimensione del kernel possiamo usare un metodo grezzo quanto efficace:</p>
<pre><code>cd /usr/src/linux
find . -name "built-in.o" | xargs size | sort -n -r -k 4</code></pre>
<p>Importante tenere in considerazione che i moduli built-in vengono aggregati per cartella e quindi ad esempio &#8220;<em>./fs/built-in.o</em>&#8221; includerà &#8220;<em>./fs/ext3/built-in.o</em>&#8220;.</p>
<p>Per ridurre ulteriormente forse si potrebbe far uso della chiave usb inserita nel&#8217;RPS (usata normalmente come swap), ma forse c&#8217;è bisogno di modificare anche l&#8217;initrd.</p>
<p>Per la cronaca l&#8217;<em>initrd-iscsi.img</em> che trovate nella root del disco è un loop device con filesystem cramfs.</p>
<p>Potete esplorarne il contenuto così:</p>
<pre><code>cp /initrd-iscsi.img /tmp/initrd
mkdir /tmp/content
mount -o loop /tmp/initrd /tmp/content
</code></pre>
<p>All&#8217;interno della cartella /tmp/content troverete tutti gli script specifici per montare il disco iSCSI come root.<em><br />
</em></p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/04/01/ridurre-le-dimensioni-del-kernel-su-un-rps3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installare un kernel modulare su un RPS di OVH</title>
		<link>http://digg.it/2009/03/31/kernel-modulare-su-un-rps-di-ovh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=kernel-modulare-su-un-rps-di-ovh</link>
		<comments>http://digg.it/2009/03/31/kernel-modulare-su-un-rps-di-ovh/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 18:24:43 +0000</pubDate>
		<dc:creator>bago</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ovh]]></category>
		<category><![CDATA[rps]]></category>

		<guid isPermaLink="false">http://digg.it/?p=3</guid>
		<description><![CDATA[Gli RPS (Real Private Server) di OVH sono server &#8220;reali&#8221; (e non virtuali) con la sola differenza che non hanno un disco proprio ma piuttosto utilizzano iSCSI per accedere ad un disco di rete. Di default gli RPS effettuano il boot via netboot, ossia dalla rete. OVH utilizza un sistema per il quale è possibile [...]
Nessun articolo simile]]></description>
			<content:encoded><![CDATA[<p>Gli RPS (Real Private Server) di OVH sono server &#8220;reali&#8221; (e non virtuali) con la sola differenza che non hanno un disco proprio ma piuttosto utilizzano iSCSI per accedere ad un disco di rete.</p>
<div id="attachment_5" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/03/ovh-rps-netboot.jpg"><img class="size-medium wp-image-5" title="Selezione netboot per un RPS" src="http://digg.it/wp-content/uploads/2009/03/ovh-rps-netboot-300x186.jpg" alt="Pagina di gestione del netboot nel manager v3 di OVH" width="300" height="186" /></a><p class="wp-caption-text">Gestione del netboot nel manager v3 di OVH</p></div>
<p>Di default gli RPS effettuano il boot via netboot, ossia dalla rete. OVH utilizza un sistema per il quale è possibile tramite interfaccia web (manager) selezionare che tipo di boot si voglia effettuare tra hd, rescue-pro, vKVM e vari kernel precompilati da OVH con o senza supporto di ipv6 e con o senza supporto GRSEC (patch che migliora la sicurezza del kernel).</p>
<p>Alla consegna esiste già un kernel installato anche sull&#8217;hd ed è quindi possibile fare il boot da hd: basta selezionare &#8220;hd&#8221; e poi riavviare l&#8217;RPS ed aspettare un po&#8217;.</p>
<p>Ebbene sì, il boot da HD risulta molto più lento del netboot ed impiega circa 15 minuti, durante i quali riceverete alcune email da OVH che si accorge che il sistema non è raggiungibile ed apre automaticamente un ticket di assistenza per poi richiuderlo (sempre automaticamente) appena il server torna online.</p>
<p>Nei numerosi test che ho effettuato qualche volta mi è capitato che i tecnici di OVH gestissero il ticket prima che venisse effettivamente richiuso in automatico. In questi casi mi sono ritrovato il server impostato sul netboot del primo kernel di rete e riavviato con quello.</p>
<p>Utilizzare un kernel su hd per un RPS è quindi fortemente sconsigliato ma ci sono casi in cui può essere fondamentale poter utilizzare un kernel personalizzato, come ad esempio l&#8217;uso di un driver particolare (e.g: DRBD), di una particolare regola iptables oppure del supporto per i moduli del kernel (e.g: per installare vmware server). Il kernel di rete non è modulare e non è modificabile quindi in tutti questi casi avrete bisogno di ricompilare il kernel, installarlo ed attivare il boot da hd.</p>
<p>Nel mio caso l&#8217;OS dell&#8217;RPS è una Fedora Core 9 Italiano, ma le istruzioni dovrebbero essere sostanzialmente le stesse con tutte le distribuzioni.</p>
<p>Scarichiamo i sorgenti del kernel usato da OVH dal loro <a href="ftp://ftp.ovh.net/made-in-ovh/bzImage/" target="_blank">server</a>. Mentre scrivo questo articolo la 2.6.28.4 è l&#8217;ultima disponibile:</p>
<pre># lavoriamo in /usr/src, cartella standard per i sorgenti
<code>cd /usr/src/</code>
# download del kernel
<code>wget <a title="kernel-ovh" href="ftp://ftp.ovh.net/made-in-ovh/bzImage/linux-2.6.28.4-ovh.tar.gz">ftp://ftp.ovh.net/made-in-ovh/bzImage/linux-2.6.28.4-ovh.tar.gz</a></code>
# decompressione
<code>tar xzf linux-2.6.28.4-ovh.tar.gz</code>
# link a /usr/src/linux per comodità
<code>ln -s linux-2.6.28.4-ovh linux</code></pre>
<p>Scarichiamo poi il file di configurazione usato da OVH, come base prima delle nostre modifiche. Sempre nell&#8217;ftp precedente OVH ne fornisce 2, quello a 32bit e quello a 64bit.</p>
<pre># entriamo nella cartella del kernel
<code>cd linux</code>
# scarichiamo il file di configuraizone (nel mio caso a 32bit)
<code>wget ftp://ftp.ovh.net/made-in-ovh/bzImage/2.6-config-xxxx-std-ipv4-32</code>
# rinominiamo il file a .config
<code>mv 2.6-config-xxxx-std-ipv4-32 .config</code>
A questo punto siamo pronti per riconfigurare il kernel secondo le nostre esigenze:
</pre>
<pre># lancio della configurazione del server:
<code>make menuconfig</code>
</pre>
<p><div id="attachment_15" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/03/ovh-rps-menuconfig.jpg"><img src="http://digg.it/wp-content/uploads/2009/03/ovh-rps-menuconfig-300x219.jpg" alt="Interfaccia ncurses della riconfigurazione del kernel" title="make menuconfig" width="300" height="219" class="size-medium wp-image-15" /></a><p class="wp-caption-text">Interfaccia ncurses della riconfigurazione del kernel</p></div><br />
A questo punto potete apportare le modifiche di configurazione che vi servono.</p>
<p>Nel mio caso si trattava dell&#8217;abilitazione del supporto dei moduli con &#8220;<strong>Enable loadable module support</strong>&#8221; e la sotto funzione &#8220;<strong>Module unloading</strong>&#8220;, da &#8220;Device Drivers&#8221; la funzione &#8220;<strong>Connector &#8211; unified userspace &lt;-&gt; kernelspace linker</strong>&#8221; e il &#8220;<strong>Real Time Clock</strong>&#8220;, che in questo caso attivo come moduli esterni (&lt;M&gt;) </p>
<p>Per distinguere correttamente il nostro kernel dovremo poi cambiare il suffisso nel menu &#8220;General setup&#8221; alla voce &#8220;<strong>Local version &#8211; append to kernel release</strong>&#8220;.<br />
<div id="attachment_19" class="wp-caption alignright" style="width: 310px"><a href="http://digg.it/wp-content/uploads/2009/03/ovh-rps-menuconfig-suffix.jpg"><img src="http://digg.it/wp-content/uploads/2009/03/ovh-rps-menuconfig-suffix-300x106.jpg" alt="Scelta del suffisso del kernel" title="kernel-suffix" width="300" height="106" class="size-medium wp-image-19" /></a><p class="wp-caption-text">Scelta del suffisso del kernel</p></div><br />
Io ho scelto &#8220;<strong>-custom-std-ipv4-32-mod</strong>&#8221;</p>
<p>Completate le modifiche uscite memorizzando il .config e proseguiamo con la compilazione che richiederà tra i 15 e i 30 minuti e l&#8217;installazione:</p>
<pre>
# compila
<code>make</code>
# installazione dei moduli
<code>make modules_install</code>
# installazione degli headers
<code>make headers_install</code>
</pre>
<p>Completata questa procedura il kernel è pronto. Evitate di usare il classico &#8220;make install&#8221; per l&#8217;installazione perchè l&#8217;installazione ovh usa un initrd molto particolare (per l&#8217;uso del disco iscsi) che non vogliamo rigenerare.</p>
<pre>
# copia del kernel
<code>cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage-2.6.28.4-custom-std-ipv4-32-mod</code>
# copia della System.map
<code>cp /usr/src/linux/System.map /boot/System.map-2.6.28.4-custom-std-ipv4-32-mod</code>
</pre>
<p>Non ci resta che abilitare il nuovo kernel in lilo (credo che in tutte le RPS sia installato lilo)</p>
<pre>
# lancia l'editing (vi o il vostro editor preferito).
<code>vi /etc/lilo.conf</code>

# mantengo il vecchio kernel come "linux-orig" e aggiungo la configurazione del nuovo. Il file risultante è:
<code>
prompt
timeout=10
default=linux
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
lba32
&nbsp;&nbsp;
image=/boot/bzImage-2.6.28.4-custom-std-ipv4-32-mod
&nbsp;&nbsp;label=linux
&nbsp;&nbsp;read-only
&nbsp;&nbsp;root=/dev/ram0
&nbsp;&nbsp;initrd=/initrd-iscsi.img
&nbsp;&nbsp;append="libusual.bias=ub"
image=/boot/bzImage-2.6.24.5-xxxx-grs-ipv4-32
&nbsp;&nbsp;label=linux-orig
&nbsp;&nbsp;read-only
&nbsp;&nbsp;root=/dev/ram0
&nbsp;&nbsp;initrd=/initrd-iscsi.img
&nbsp;&nbsp;append="libusual.bias=ub"
</code>

# salviamo ed aggiorniamo il bootloader:
<code>lilo -v</code>

# risultato del comando lilo
<code>
LILO version 22.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2006 John Coffman
Released 19-Feb-2007 and compiled at 09:15:23 on Feb 19 2007.
&nbsp;&nbsp;
Reading boot sector from /dev/sda
Using MENU secondary loader
Calling map_insert_data
&nbsp;&nbsp;
Boot image: /boot/bzImage-2.6.28.4-custom-std-ipv4-32-mod
Mapping RAM disk /initrd-iscsi.img
Added linux *
&nbsp;&nbsp;
Boot image: /boot/bzImage-2.6.24.5-xxxx-grs-ipv4-32
Mapping RAM disk /initrd-iscsi.img
Added linux-orig
&nbsp;&nbsp;
Writing boot sector.
/boot/boot.0800 exists - no boot sector backup copy made.
</code>
</pre>
<p>Riavviamo la macchina (<code>shutdown -r now</code>) e dopo 10-15 minuti la macchina dovrebbe essere caricata con il nuovo kernel. Il comando <code>uname -r</code> dovrebbe perciò dirci &#8220;2.6.28.4-custom-std-ipv4-32-mod&#8221; e non più &#8220;2.6.28.4-xxxx-std-ipv4-32&#8243; e il comando lsmod dovrebbe funzionare (mostra l&#8217;elenco dei moduli se il kernel è modulare).</p>
<p>Se la macchina non dovesse ripartire potete sempre andare nel manager ed impostare il netboot sul kernel di rete per poi forzare in riavvio.</p>
<p>Nel prossimo articolo vi mostro il mio .config con il quale ho ridotto le dimensioni dell&#8217;immagine del kernel da 4.5MB a 1.8MB così da ridurre i tempi di reboot a circa 6-7 minuti.</p>
<p>Nessun articolo simile</p>]]></content:encoded>
			<wfw:commentRss>http://digg.it/2009/03/31/kernel-modulare-su-un-rps-di-ovh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

