<?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>Bartounet&#039;s Blog</title>
	<atom:link href="http://blog.info16.fr/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.info16.fr</link>
	<description>Gnu/Linux et logiciels libres</description>
	<lastBuildDate>Sat, 27 Feb 2010 18:26:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Apache2 VS Cherokee</title>
		<link>http://blog.info16.fr/?p=209</link>
		<comments>http://blog.info16.fr/?p=209#comments</comments>
		<pubDate>Sat, 27 Feb 2010 18:14:16 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=209</guid>
		<description><![CDATA[Voilà un petit moment que j&#8217;entend parler d&#8217;alternative à Apache.
Les articles sur la toile parlent de plus en plus d&#8217;un petit nouveau qui est cherokee.
Sans faire un benchmark détaillé, j&#8217;ai voulu savoir ce que donnait ce nouveau serveur Web avec une configuration par défaut.
La plupart des serveurs Web des blogger, sont configurés par défauts ou [...]]]></description>
			<content:encoded><![CDATA[<p>Voilà un petit moment que j&#8217;entend parler d&#8217;alternative à Apache.<br />
Les articles sur la toile parlent de plus en plus d&#8217;un petit nouveau qui est cherokee.</p>
<p>Sans faire un benchmark détaillé, j&#8217;ai voulu savoir ce que donnait ce nouveau serveur Web avec une configuration par défaut.<br />
La plupart des serveurs Web des blogger, sont configurés par défauts ou très peu d&#8217;options ont été modifiées.<br />
C&#8217;est pourquoi j&#8217;ai voulu savoir si Cherokee n&#8217;était pas trop ridicule face au géant Apache.</p>
<p>Pour faire mes tests, j&#8217;ai voulu mettre les serveur sur un pied d&#8217;égalité.<br />
J&#8217;ai donc crée 2 Machine virtuelles KVM.</p>
<p><strong>Vm Apache2 :</strong><br />
2 Vcpus<br />
512 Mo ram<br />
Disk Logical Volume LVM2 8Go<br />
VIRTIO drivers<br />
OS= Ubuntu Server 9.10 X86_64 uptodate</p>
<p><strong>Vm Cherokee:</strong><br />
2 Vcpus<br />
512 Mo ram<br />
Disk Logical Volume LVM2 8Go<br />
VIRTIO drivers<br />
OS= Ubuntu Server 9.10 X86_64 uptodate</p>
<p>Les deux OS sont rigoureusement identique, puisque c&#8217;est un template que j&#8217;ai redescendu sur les 2. Les 2 sytèmes sont des copies conformes.</p>
<p>Si ca vous interesse voilà la ligne de commande KVM.</p>
<blockquote><p>kvm -m 512 -smp 2 -net nic,macaddr=00:16:3a:00:00:02,model=virtio -net tap -drive if=virtio,cache=none,format=raw,media=disk -hda /dev/vg0/kvm -vnc :2 -k fr -localtime -daemonize
</p></blockquote>
<p><strong><br />
Installation de Cherokee sur le serveur 1</strong><br />
<code>apt-get install cherokee</code><br />
<code>libcherokee-mod-admin</code><br />
Cela suffit, je ne fais pas de paramétrage.</p>
<p>On obtien donc la version de cherokee contenu dans Karmic<br />
<code>root@ubuntukvm:~# cherokee --version<br />
Cherokee Web Server 0.99.19</code></p>
<p><strong><br />
Installation de apache2 sur le serveur 2</strong><br />
<code>apt-get install apache2</code><br />
Cela suffit, je ne fais pas de paramétrage.</p>
<p>On obtien donc la version de Apache2 contenu dans Karmic<br />
<strong>root@ubuntukvm:~# apache2 -v<br />
Server version: Apache/2.2.12 (Ubuntu)</strong></p>
<p>Nos 2 serveurs sont installés, l&#8217;un avec cherokee 0.99.19 l&#8217;autre avec apache 2.2.12</p>
<p><strong>Afin de tester les performances des deux serveurs web avec leur configuration par défaut, je vais utiliser l&#8217;utilitaire ab (apache benchmark)</strong></p>
<p>A partir d&#8217;un autre poste de mon réseau, j&#8217;installe la suite d&#8217;outils pour faire les bench.</p>
<p>Avant de commencer, chose importante, je copie le fichier /var/www/index.html du serveur apache, sur le serveur Cherokee.<br />
En effet, la page par défaut de cherokee est beaucoup plus lourde que celle d&#8217;apache, si bien que cela aurait faussé nos résultas.</p>
<p>Commencons par le serveur Apache2 (ip=10.0.0.206)<br />
<code><br />
root@laptop:/home/bartounet# ab -n 10000 -c 30 http://10.0.0.206/index.html</code></p>
<p>Explications des options de ab :<br />
-n Nombre total de requêtes envoyées<br />
-c Nombre de requêtes envoyées en parallèle<br />
-H permet de modifier les entêtes http ce qui permet par exemple d&#8217;indiquer au serveur http que apachebench supporte la compression gz.</p>
<p>J&#8217;utilise pour des tests rapides les paramètres suivant :<br />
-n 1000 -c 20<br />
Pour des tests lourds :<br />
-n 5000 -c 50<br />
Enfin pour avoir des tests vraiment significatifs :<br />
-n 50000 -c 30<br />
En augmentant massivement le nombre de requêtes on obtient une moyenne du nombre de requêtes par seconde beaucoup plus significative.<br />
( sources:http://dev.petitchevalroux.net/linux/tester-son-serveur-http-linux.159.html)</p>
<p>Voiçi les résultats pour Apache2</p>
<blockquote><p>
Server Software:        Apache/2.2.12<br />
Server Hostname:        10.0.0.206<br />
Server Port:            80</p>
<p>Document Path:          /index.html<br />
Document Length:        177 bytes</p>
<p>Concurrency Level:      30<br />
Time taken for tests:   19.476 seconds<br />
Complete requests:      10000<br />
Failed requests:        0<br />
Write errors:           0<br />
Total transferred:      4520000 bytes<br />
HTML transferred:       1770000 bytes<br />
Requests per second:    513.45 [#/sec] (mean)<br />
Time per request:       58.428 [ms] (mean)<br />
Time per request:       1.948 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          226.64 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:        2   22  46.1     21    3022<br />
Processing:     2   35  79.0     23    1588<br />
Waiting:        2   33  73.6     23    1568<br />
Total:          5   58  92.4     45    3045</p>
<p>Percentage of the requests served within a certain time (ms)<br />
  50%     45<br />
  66%     47<br />
  75%     48<br />
  80%     49<br />
  90%     70<br />
  95%    135<br />
  98%    302<br />
  99%    337<br />
 100%   3045 (longest request)
</p></blockquote>
<p>Testons maintenant le serveur Cherokee ( ip=10.0.0.204)</p>
<p><code>root@laptop:/home/bartounet# ab -n 10000 -c 30 http://10.0.0.204/index.html</code></p>
<p>Voiçi sans plus tarder les résultats:</p>
<blockquote><p>
Server Software:        Cherokee/0.99.19<br />
Server Hostname:        10.0.0.204<br />
Server Port:            80</p>
<p>Document Path:          /index.html<br />
Document Length:        177 bytes</p>
<p>Concurrency Level:      30<br />
Time taken for tests:   17.133 seconds<br />
Complete requests:      10000<br />
Failed requests:        0<br />
Write errors:           0<br />
Total transferred:      3890000 bytes<br />
HTML transferred:       1770000 bytes<br />
Requests per second:    583.68 [#/sec] (mean)<br />
Time per request:       51.398 [ms] (mean)<br />
Time per request:       1.713 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          221.73 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:        2   27 158.5     18    3025<br />
Processing:     2   24  33.0     20     488<br />
Waiting:        2   23  28.4     19     466<br />
Total:         10   51 161.9     39    3046</p>
<p>Percentage of the requests served within a certain time (ms)<br />
  50%     39<br />
  66%     42<br />
  75%     44<br />
  80%     46<br />
  90%     49<br />
  95%     68<br />
  98%    149<br />
  99%    307<br />
 100%   3046 (longest request)
</p></blockquote>
<p>Déjà à première vue sur ce test, cherokee est plus véloce qu&#8217;apache.</p>
<p><strong>Passons au test siege.</strong><br />
Ici les options signifie :</p>
<p>-c : nombre d&#8217;utilisateurs<br />
-r : nombre de connexion par chaque utilisateur<br />
-d : délai en seconde de sleep</p>
<p>Ainsi, en lançant siege avec de tels paramètres, je simule la connexion de 100 utilisateurs, exécutant chacun 300 requêtes, espacé de une seconde. Ce qui fait à peu près 30 000 requêtes. ( cf: <a href="http://www.tux-planet.fr/benchmark-sur-un-serveur-apache/">http://www.tux-planet.fr/benchmark-sur-un-serveur-apache/</a>)</p>
<p><strong>Pour le server cherokee</strong></p>
<p><code>siege -d1 -r300 -c100 http://10.0.0.204/index.html</code></p>
<p>Les résultats:</p>
<blockquote><p>
Transactions:		       30000 hits<br />
Availability:		      100.00 %<br />
Elapsed time:		      178.66 secs<br />
Data transferred:	        5.06 MB<br />
Response time:		        0.02 secs<br />
Transaction rate:	      167.92 trans/sec<br />
Throughput:		        0.03 MB/sec<br />
Concurrency:		        3.28<br />
Successful transactions:       30000<br />
Failed transactions:	           0<br />
Longest transaction:	        3.03<br />
Shortest transaction:	        0.00
</p></blockquote>
<p><strong><br />
Pour apache2 voiçi les résultats:<br />
</strong></p>
<blockquote><p>
Transactions:		       30000 hits<br />
Availability:		      100.00 %<br />
Elapsed time:		      187.62 secs<br />
Data transferred:	        4.18 MB<br />
Response time:		        0.05 secs<br />
Transaction rate:	      159.90 trans/sec<br />
Throughput:		        0.02 MB/sec<br />
Concurrency:		        8.28<br />
Successful transactions:       30000<br />
Failed transactions:	           0<br />
Longest transaction:	        3.07<br />
Shortest transaction:	        0.00
</p></blockquote>
<p>Encore une fois cherokee est plus véloce.</p>
<p>Quand j&#8217;aurai le temps de continuerai ce billet en tester les 2 serveurs sur des grosses pages php, telles ques wordpress ou dotclear avec une base Mysql.</p>
<p>Encore une fois je le répète mes tests sont réalisés avec les confurations de Cherokee et d&#8217;Apache2 par <strong>défaut</strong><br />
Les connaisseurs de l&#8217;un ou l&#8217;autre des serveurs auront tôt fait de critiquer ces résultats, et ils auront raison car les améliorations que l&#8217;ont peut apporter sont nombreuses.</p>
<p>En tous cas, on ne peut pas nier que sur une page html statique légère avec les config par défauts, Cherokee est sensiblement plus performant que Apache.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=209</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comparaison des formats de compressions Gnu/Linux</title>
		<link>http://blog.info16.fr/?p=198</link>
		<comments>http://blog.info16.fr/?p=198#comments</comments>
		<pubDate>Wed, 13 Jan 2010 18:52:24 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=198</guid>
		<description><![CDATA[Juste un petit post pour montrer en quelques lignes les différences d&#8217;éfficacités et de rapidité des outils de compressions sous Gnu/Linux
Je fais ce post car j&#8217;ai cherché un moment un outil de compréssion qui me permettrait de faire passer mes 700Go de backup dans la nuit. On trouve peu de site sur le net qui [...]]]></description>
			<content:encoded><![CDATA[<p>Juste un petit post pour montrer en quelques lignes les différences d&#8217;éfficacités et de rapidité des outils de compressions sous Gnu/Linux</p>
<p>Je fais ce post car j&#8217;ai cherché un moment un outil de compréssion qui me permettrait de faire passer mes 700Go de backup dans la nuit. On trouve peu de site sur le net qui disent clairement quel outil utiliser.</p>
<p>Je vais comparer gzip, bzip2, zip, lzop</p>
<p>Mon premier test raest simple , je cherche pour l&#8217;instant à faire un test de rapidité.<br />
je compresse un logical volume de 2Go rempli d&#8217;environ 10% de données aléatoires et du vide.</p>
<p>-GZIP</p>
<blockquote><p>
dd if=/dev/vg0/testlv bs=1M | gzip &#8211;fast | dd of=/root/test.gz bs=1M<br />
2048+0 records in<br />
2048+0 records out<br />
2147483648 bytes (2.1 GB) copied, 52.2422 s, 41.1 MB/s<br />
0+8870 records in<br />
0+8870 records out<br />
146155226 bytes (146 MB) copied, 52.2431 s, 2.8 MB/s
</p></blockquote>
<p>la compression à été réalisée en 52.24s avec un taux de compression de 92,87%</p>
<p>************</p>
<p>-BZIP2</p>
<blockquote><p>
# dd if=/dev/vg0/testlv bs=1M | bzip2 &#8211;fast | dd of=/root/test.bz2 bs=1M<br />
2048+0 records in<br />
2048+0 records out<br />
2147483648 bytes (2.1 GB) copied, 100.699 s, 21.3 MB/s<br />
0+23402 records in<br />
0+23402 records out<br />
138479304 bytes (138 MB) copied, 100.664 s, 1.4 MB/s
</p></blockquote>
<p>la compression à été réalisée en 100.66s avec un taux de compression de 93,26%</p>
<p>***************</p>
<p>-ZIP</p>
<blockquote><p>
t# dd if=/dev/vg0/testlv bs=1M | zip -1 | dd of=/root/test.zip bs=1M<br />
  adding: -2048+0 records in<br />
2048+0 records out<br />
2147483648 bytes (2.1 GB) copied, 52.4479 s, 40.9 MB/s<br />
 (deflated 93%)<br />
3+3891 records in<br />
3+3891 records out<br />
146155352 bytes (146 MB) copied, 52.4466 s, 2.8 MB/s
</p></blockquote>
<p>la compression à été réalisée en -52.44s avec un taux de compression de 92,87%</p>
<p>************</p>
<p>-LZOP</p>
<blockquote><p>
# dd if=/dev/vg0/testlv bs=1M | lzop &#8211;fast | dd of=/root/test.lz bs=1M<br />
2048+0 records in<br />
2048+0 records out<br />
2147483648 bytes (2.1 GB) copied, 41.1209 s, 52.2 MB/s<br />
1+7872 records in<br />
1+7872 records out<br />
145436530 bytes (145 MB) copied, 41.1216 s, 3.5 MB/s
</p></blockquote>
<p>la compression à été réalisée en 41.12s avec un taux de compression de 92,91%</p>
<p>Comme on peut le constater lzop est largement plus rapide c&#8217;est pourquoi je l&#8217;ai choisi, pour réaliser mes backups, sachant que mon facteur limitant etait le temps et non la volumétrie disque&#8230;</p>
<p>En revanche ceux qui veulent privilégier l&#8217;espace de stockage au détriment de la rapidité s&#8217;orienteront plutot vers bzip2</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=198</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration de mon serveur dédié Dedibox vers un serveur Xen</title>
		<link>http://blog.info16.fr/?p=170</link>
		<comments>http://blog.info16.fr/?p=170#comments</comments>
		<pubDate>Fri, 27 Nov 2009 23:34:37 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=170</guid>
		<description><![CDATA[Je disposais depuis un bon moment d&#8217;un serveur Dédibox V2.
Ce serveur était vieillissant et très chargé.
Il hebergeait mon blog, mon site perso, un serveur de messagerie, un serveur DNS, un serveur Teamspeak, Jabber et j&#8217;en oublie surement.
J&#8217;ai donc décidé de migrer sur un serveur plus puissant et de virtualiser l&#8217;ensemble.
je me suis tourné vers un [...]]]></description>
			<content:encoded><![CDATA[<p>Je disposais depuis un bon moment d&#8217;un serveur Dédibox V2.<br />
Ce serveur était vieillissant et très chargé.<br />
Il hebergeait mon blog, mon site perso, un serveur de messagerie, un serveur DNS, un serveur Teamspeak, Jabber et j&#8217;en oublie surement.<br />
J&#8217;ai donc décidé de migrer sur un serveur plus puissant et de virtualiser l&#8217;ensemble.</p>
<p>je me suis tourné vers un serveur Kimsuffi 750G ( 4 Q6600 4x 2.40+ GHz 4 Go et 750Go hdd).<br />
Un serveur largement dimensionné pour remplacer ma dédibox mais qui me permettra de faire pas mal de tests et de provisionner plusieurs serveurs virtuels.</p>
<p>J&#8217;ai donc décidé d&#8217;installer un serveur Xen ( Dom0 Opensuse 11.1) et d&#8217;éclater mon serveur dédibox en 4 Machines virtuelles paravirtualisées sous Ubuntu Server 9.10 64 bits.<br />
J&#8217;ai faits ce choix, car j&#8217;ai quelques compétences sous Xen et Suse LInux Enterprise mais par contre je préfère administrer des serveurs Ubuntu.</p>
<p>Voiçi un court résumé de mon infra<br />
Excusez moi pour le schéma j&#8217;ai pas trop l&#8217;habitude de Dia<br />
<img src="http://www.info16.fr/ftpl/infraxenkimsuffi.PNG" alt="infraxen" /></p>
<p>Commençons par le début:<br />
Sachant que kimsufi ne propose pas par défaut une installation d&#8217;OS qui me convenait, j&#8217;ai décidé d&#8217;installer moi même une Opensuse11.1.<br />
Premier problème ovh a fait le choix d&#8217;utiliser encore LILO comme gestionnaire d&#8217;armocage..<br />
 j&#8217;ai donc dut très vite réinstaller un grub afin de pouvoir me lancer dans la net install d&#8217;opensuse.</p>
<p>je ne vais pas réécrire ce que j&#8217;ai déjà mis dans ce blog. je vous invite à me relire ici.<br />
<a href="http://blog.info16.fr/?p=10">http://blog.info16.fr/?p=10</a></p>
<p>Une fois grub installé on peut se lancer dans une net install d&#8217;openSuse. Même chose, j&#8217;ai déjà écris un article sur la question.<br />
<a href="http://blog.info16.fr/?p=31">http://blog.info16.fr/?p=31</a></p>
<p>Durant l&#8217;installation pas de problème particulier.<br />
J&#8217;ai opté pour le partitionnement suivant:<br />
/boot &#8211;> 128 Mo (ext3)<br />
/       &#8211;> 16Go (xfs)<br />
swap &#8211;>2Go<br />
LVM2 pour le reste ( lvm servira a faire des periphériques blocs pour les DomU) (680Go)</p>
<p>J&#8217;ai installé Xen directement, lors du choix des softwares durant l&#8217;install.<br />
Je ne m&#8217;étend pas trop sur l&#8217;installation d&#8217;openSuse qui reste sommes toutes assez simple.</p>
<p>Une fois l&#8217;installation terminée, n&#8217;oubliez pas de paramétrer votre grub pour qu&#8217;il boot par défaut sous Xen.</p>
<blockquote><p># Modified by YaST2. Last modification on Mon Nov 23 09:55:28 CET 2009<br />
default 0<br />
timeout 8<br />
##YaST &#8211; generic_mbr<br />
gfxmenu (hd0,0)/message<br />
##YaST &#8211; activate</p>
<p>###Don&#8217;t change this comment &#8211; YaST2 identifier: Original name: xen###<br />
title Xen &#8212; openSUSE 11.1 &#8211; 2.6.27.37-0.1<br />
    root (hd0,0)<br />
    kernel /xen.gz<br />
    module /vmlinuz-2.6.27.37-0.1-xen root=/dev/disk/by-id/ata-ST3750640AS_5QD16XRN-part2 resume=/dev/disk/by-id/ata-ST3750640AS_5QD16XRN-part3 splash=silent showopts<br />
    module /initrd-2.6.27.37-0.1-xen</p>
<p>###Don&#8217;t change this comment &#8211; YaST2 identifier: Original name: linux###<br />
title openSUSE 11.1 &#8211; 2.6.27.37-0.1<br />
    root (hd0,0)<br />
    kernel /vmlinuz-2.6.27.37-0.1-default root=/dev/disk/by-id/ata-ST3750640AS_5QD16XRN-part2 resume=/dev/disk/by-id/ata-ST3750640AS_5QD16XRN-part3 splash=silent showopts<br />
    initrd /initrd-2.6.27.37-0.1-default</p>
<p>###Don&#8217;t change this comment &#8211; YaST2 identifier: Original name: failsafe###<br />
title Failsafe &#8212; openSUSE 11.1 &#8211; 2.6.27.37-0.1<br />
    root (hd0,0)<br />
    kernel /vmlinuz-2.6.27.37-0.1-default root=/dev/disk/by-id/ata-ST3750640AS_5QD16XRN-part2 showopts ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe<br />
    initrd /initrd-2.6.27.37-0.1-default</p></blockquote>
<p>Une fois rebooté sous Xen il faut commencer par quelques petites modifications.</p>
<p>Tous d&#8217;abord je souhaite faire du NAT. En effet n&#8217;ayant qu&#8217;une adresse IP publique sur ma kimsufi, je dois configurer mes domU avec des ip locale et faire du nat pour qu&#8217;elles accèdent à l&#8217;exterieur. </p>
<p>Pour commencer, paramétrons Xen pour faire du Nat.<br />
Tout se passe dans le fichier <em>/etc/xen/xend-config.sxp</em></p>
<p>Pour se faire, changeons les éléments suivants.</p>
<blockquote><p>
(network-script network-nat)</p>
<p># If you are using only one bridge, the vif-bridge script will discover that,<br />
# so there is no need to specify it explicitly.<br />
#<br />
(vif-script &#8216;vif-bridge bridge=br0&#8242;)</p>
<p># enable-dom0-ballooning below) and for xm mem-set when applied to dom0.<br />
(dom0-min-mem 512)</p>
<p># Whether to enable auto-ballooning of dom0 to allow domUs to be created.<br />
# If enable-dom0-ballooning = no, dom0 will never balloon out.<br />
(enable-dom0-ballooning yes)</p>
<p># In SMP system, dom0 will use dom0-cpus # of CPUS<br />
# If dom0-cpus = 0, dom0 will take all cpus available<br />
(dom0-cpus 0)</p>
<p># set this to 0.0.0.0<br />
(vnc-listen &#8216;0.0.0.0&#8242;)</p>
<p># The default password for VNC console on HVM domain.<br />
# Empty string is no authentication.<br />
(vncpasswd &nbsp;&raquo;)
</p></blockquote>
<p>On peut remarquer que j&#8217;utilise le script: {network-script network-nat}<br />
Mais par contre j&#8217;utilise (vif-script &#8216;vif-bridge bridge=br0&#8242;)</p>
<p>Il faut bien distinguer 2 choses:<br />
<strong>- network-script</strong> est un script lancé par Xen au démarrage du daemon Xen.<br />
Donc en mettant network-nat, il va mettre en place les règles nat (ip-forwarding, masquerade etc..) necessaires.</p>
<p><strong>-vif-script</strong> est le script qui va etre lancé au demarrage des domU. et qui va décider comment va être relié les interfaces réseaux des domU et du Dom0.</p>
<p>Pour ma part j&#8217;ai décidé de creer un bridge ( switch virtuel) nommé br0 avec une ip en 192.168.1.254/24 et grace  vif-bridge, toutes les interface de mes DomU vont s&#8217;attacher à ce bridge.</p>
<p>Pour creer ce fameux bridge on peut utiliser les fichiers directement dans /etc/sysconfig/network, mais le plus simple reste de passer par yast.</p>
<p><img src="http://www.info16.fr/ftpl/yastbr0.png" alt="yastbr0" /></p>
<p>On redemarre Xen , on peut vérifier nos deux interfaces réseaux.</p>
<blockquote><p>linux:~ # ifconfig<br />
br0       Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF<br />
          inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0<br />
          inet6 addr: fe80::3c8b:16ff:fe67:b2b7/64 Scope:Link<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:425920 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:476880 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:0<br />
          RX bytes:143058546 (136.4 Mb)  TX bytes:233932702 (223.0 Mb)</p>
<p>eth0      Link encap:Ethernet  HWaddr 00:1C:C0:FD:69:A3<br />
          inet addr:94.x.x.21  Bcast:94.23.236.255  Mask:255.255.255.0<br />
          inet6 addr: fe80::21c:c0ff:fefd:69a3/64 Scope:Link<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:5211844 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:9516144 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:1000<br />
          RX bytes:568921568 (542.5 Mb)  TX bytes:13470776595 (12846.7 Mb)<br />
          Interrupt:252 Base address:0xc000
</p></blockquote>
<p>Le plus dur reste à faire. préparer notre template de DomU qui nous servira d&#8217;image pour toutes nos machines virtuelles.</p>
<p>Tout d&#8217;abord la première chose à faire est de récupérer les images iso des distributions que nous allons installer. Pour ma part j&#8217;ai opté pour Ubuntu server 9.10 x64 et Opensuse11.1 x64<br />
Les isos sont très vite téléchargées puisque nous avons 100Mbits de bande passante entre le serveur et le net.</p>
<p>Petit rappel il y a deux types de DomU:<br />
<strong>Les HVM</strong>: Le système va etre totalement émulé et n&#8217;est pas conscient d&#8217;etre sur un systeme de virtualisation. C&#8217;est le plus simple à mettre en place mais le moins performant.</p>
<p><strong>La paravirtualisation</strong>: La paravirtualisation permet aux moniteurs de machines virtuelles (MMV) d&#8217;être plus simples et aux machines virtuelles fonctionnant dessus d&#8217;atteindre un niveau de performance proche du matériel réel. Cependant, les systèmes d&#8217;exploitations doivent explicitement être portés afin de fonctionner sur des MMV paravirtualisées. (cf wikipedia)<br />
autrement dit les domU paravirtualisés sont conscients d&#8217;etre virtualisés et sont modifiés pour cela. ( Kernel compilé avec les extensions Xen, et drivers block et réseau ). Ce mode est le plus performant.</p>
<p>Pour commencer il faut installer le DomU en HVM.<br />
Je commence par creer le périphérique block qui va héberger la VM.<br />
J&#8217;utilise pour cela la souplesse de lvm2.<br />
Mon premier domU sera sur /dev/vg0/lv0 de 16Go</p>
<blockquote><p>lvcreate -L16G -nlv0 vg0</p></blockquote>
<p>Je crée un fichier de domU dans /etc/xen/vm</p>
<blockquote><p>
######VM PARAM####<br />
name=&nbsp;&raquo;wwwinfo16&#8243;<br />
ostype=&nbsp;&raquo;linux&nbsp;&raquo;<br />
memory=512<br />
vcpus=2<br />
cpu_weight=256<br />
cpu_cap=0<br />
hap=1<br />
apic=1<br />
acpi=1<br />
pae=1<br />
stdvga=0<br />
usb=1<br />
usbdevice=&nbsp;&raquo;tablet&nbsp;&raquo;<br />
serial=&nbsp;&raquo;pty&nbsp;&raquo;<br />
timer_mode=1<br />
localtime=1<br />
extid=0<br />
on_crash=&nbsp;&raquo;restart&nbsp;&raquo;<br />
on_reboot=&nbsp;&raquo;restart&nbsp;&raquo;<br />
on_poweroff=&nbsp;&raquo;destroy&nbsp;&raquo;<br />
######HVM#########<br />
builder=&nbsp;&raquo;hvm&nbsp;&raquo;<br />
device_model=&nbsp;&raquo;/usr/lib64/xen/bin/qemu-dm&nbsp;&raquo;<br />
kernel=&nbsp;&raquo;/usr/lib/xen/boot/hvmloader&nbsp;&raquo;<br />
######PVM#########<br />
#builder=&nbsp;&raquo;linux&nbsp;&raquo;<br />
#bootloader = &#8216;/usr/lib/xen/boot/domUloader.py&#8217;<br />
#bootargs = &#8216;&#8211;entry=hda1:/vmlinuz-xen,/initrd-xen&#8217;<br />
#extra=&nbsp;&raquo;root=/dev/hda2 vga=0&#215;31a console=tty0&#8243;<br />
######DEV#########<br />
vfb=[ 'type=vnc,vncunused=1', ]<br />
disk=[ 'phy:/dev/vg0/lv0,hda,w', 'file:/sotck/ubuntu-9.10.iso,hdc:cdrom,r', ]<br />
vif=[ 'type=ioemu,mac=00:16:3a:11:11:00', ]<br />
boot=&nbsp;&raquo;c
</p></blockquote>
<p>J&#8217;utilise ce fichier très pratique qui me permet de basculer de hvm en para très facilement en commentant la section HVM ou PVM<br />
On peut regler aussi facilement le nombre de Vcpus, Memoire, disk etc&#8230;</p>
<p>On lance alors le domU avec</p>
<blockquote><p>
xm create domU
</p></blockquote>
<p>Si tout se passe bien vous pouvez acceder à l&#8217;installation de votre domU directement par vnc.<br />
Le premier domU s&#8217;attache au port 5900 le deuxieme au 5901 etc&#8230;</p>
<p>Pour le premier domU je peux y acceder par<br />
ippublique:5900</p>
<p>Je ne vais pas détailler l&#8217;installation d&#8217;un DomU qui est une installation basique.</p>
<p>Une fois installé vous pouvez rebooter votre DomU et profiter de votre serveur en HVM.<br />
J&#8217;ai commencé à paramétrer le réseau de mon domU en lui mettant comme ip 192.168.1.1/24 et la passerelle 192.168.1.254 (br0) et comme DNS, le dns de la kimsuffi.</p>
<blockquote><p>
# This file describes the network interfaces available on your system<br />
# and how to activate them. For more information, see interfaces(5).</p>
<p># The loopback network interface<br />
auto lo<br />
iface lo inet loopback</p>
<p># The primary network interface<br />
auto eth0<br />
iface eth0 inet static<br />
        address 192.168.1.1<br />
        netmask 255.255.255.0<br />
        network 192.168.1.0<br />
        broadcast 192.168.1.255<br />
        gateway 192.168.1.254<br />
        # dns-* options are implemented by the resolvconf package, if installed<br />
        dns-nameservers 213.186.33.99
</p></blockquote>
<p>Cette installation en HVM est valable aussi bien pour un DomU OpenSuse que pour Ubuntu.</p>
<p>C&#8217;est sympa de jouer avec les hvm, mais très vite on se rend compte que les performances ne sont pas au rendez vous. en effet les accès disques et réseau consomment énormément de ressources.<br />
Il faut vite passer à la paravirtualisation.</p>
<p>Je suis obligé de scinder ce chapitre en 2 parties:<br />
DomU paravirtualisés sous OpenSuse<br />
DomU paravirtualisés sous Ubuntu/Debian</p>
<p><em><strong>DomU para OpenSuse11.1</strong></em></p>
<p>Pour que opensuse puisse etre utilisé en tant que DomU para, il faut installer simplement le kernel-xen, kernel-xen-base, kernel-xen-extra.<br />
Modifier votre grub pour booter sur le kernel Xen et surtout modifier votre fichier de configuration de la vm</p>
<p><img src="http://www.info16.fr/ftpl/kernelxen.png" alt="kernelxen" /></p>
<blockquote><p>
######VM PARAM####<br />
name=&nbsp;&raquo;wwwinfo16&#8243;<br />
ostype=&nbsp;&raquo;linux&nbsp;&raquo;<br />
memory=512<br />
vcpus=2<br />
cpu_weight=256<br />
cpu_cap=0<br />
hap=1<br />
apic=1<br />
acpi=1<br />
pae=1<br />
stdvga=0<br />
usb=1<br />
usbdevice=&nbsp;&raquo;tablet&nbsp;&raquo;<br />
serial=&nbsp;&raquo;pty&nbsp;&raquo;<br />
timer_mode=1<br />
localtime=1<br />
extid=0<br />
on_crash=&nbsp;&raquo;restart&nbsp;&raquo;<br />
on_reboot=&nbsp;&raquo;restart&nbsp;&raquo;<br />
on_poweroff=&nbsp;&raquo;destroy&nbsp;&raquo;<br />
######HVM#########<br />
#builder=&nbsp;&raquo;hvm&nbsp;&raquo;<br />
#device_model=&nbsp;&raquo;/usr/lib64/xen/bin/qemu-dm&nbsp;&raquo;<br />
#kernel=&nbsp;&raquo;/usr/lib/xen/boot/hvmloader&nbsp;&raquo;<br />
######PVM#########<br />
builder=&nbsp;&raquo;linux&nbsp;&raquo;<br />
bootloader = &#8216;/usr/lib/xen/boot/domUloader.py&#8217;<br />
bootargs = &#8216;&#8211;entry=hda1:/vmlinuz-xen,/initrd-xen&#8217;<br />
extra=&nbsp;&raquo;root=/dev/hda2 vga=0&#215;31a console=tty0&#8243;<br />
######DEV#########<br />
vfb=[ 'type=vnc,vncunused=1', ]<br />
disk=[ 'phy:/dev/vg0/lv0,hda,w', ]<br />
vif=[ 'type=netfront,mac=00:16:3a:11:11:00', ]<br />
boot=&nbsp;&raquo;c&nbsp;&raquo;
</p></blockquote>
<p>On remarque que j&#8217;ai commenté cette fois ci les parametre HVM et décommenté PVM. j&#8217;ai aussi ajouté netfront comme type de care réseau.<br />
Ces lignes sont aussi très importantes:<br />
bootargs = &#8216;&#8211;entry=hda1:/vmlinuz-xen,/initrd-xen&#8217; = partition du DomU sur laquelle se trouve votre kernel (/boot) pour moi hda1<br />
extra=&nbsp;&raquo;root=/dev/hda2 vga=0&#215;31a console=tty0&#8243; = partition du DomU sur laquelle se trouve votre / pour moi hda2</p>
<p>Faire bien attention que dans /boot dans le domU les liens symbolique<br />
vmlinuz-xen et initrd-xen soit bien créer et pointent bien vers le kernel xen</p>
<blockquote><p>
opensuse11-1:/boot # ls -al<br />
total 25820<br />
drwxr-xr-x  3 root root    4096 2009-11-23 13:52 .<br />
drwxr-xr-x 20 root root    4096 2009-11-28 00:28 ..<br />
-rw&#8212;&#8212;-  1 root root     512 2009-01-06 16:44 backup_mbr<br />
lrwxrwxrwx  1 root root       1 2009-01-06 16:14 boot -> .<br />
-rw-r&#8211;r&#8211;  1 root root    1236 2009-01-08 02:03 boot.readme<br />
-rw-r&#8211;r&#8211;  1 root root   90278 2009-10-16 18:29 config-2.6.27.37-0.1-default<br />
-rw-r&#8211;r&#8211;  1 root root   88176 2009-10-16 17:36 config-2.6.27.37-0.1-xen<br />
drwxr-xr-x  2 root root    4096 2009-11-23 13:53 grub<br />
lrwxrwxrwx  1 root root      28 2009-11-23 13:52 initrd -> initrd-2.6.27.37-0.1-default<br />
-rw-r&#8211;r&#8211;  1 root root 5626357 2009-11-23 13:52 initrd-2.6.27.37-0.1-default<br />
-rw-r&#8211;r&#8211;  1 root root 5584838 2009-11-23 13:53 initrd-2.6.27.37-0.1-xen<br />
lrwxrwxrwx  1 root root      24 2009-11-23 13:52 initrd-xen -> initrd-2.6.27.37-0.1-xen<br />
-rw-r&#8211;r&#8211;  1 root root  442880 2009-01-14 15:33 message<br />
-rw-r&#8211;r&#8211;  1 root root  157239 2009-10-16 18:45 symsets-2.6.27.37-0.1-default.tar.gz<br />
-rw-r&#8211;r&#8211;  1 root root  162088 2009-10-16 17:38 symsets-2.6.27.37-0.1-xen.tar.gz<br />
-rw-r&#8211;r&#8211;  1 root root  406110 2009-10-16 18:43 symtypes-2.6.27.37-0.1-default.gz<br />
-rw-r&#8211;r&#8211;  1 root root  402218 2009-10-16 17:37 symtypes-2.6.27.37-0.1-xen.gz<br />
-rw-r&#8211;r&#8211;  1 root root  119804 2009-10-16 18:32 symvers-2.6.27.37-0.1-default.gz<br />
-rw-r&#8211;r&#8211;  1 root root  119842 2009-10-16 17:37 symvers-2.6.27.37-0.1-xen.gz<br />
-rw-r&#8211;r&#8211;  1 root root 1423318 2009-10-16 18:05 System.map-2.6.27.37-0.1-default<br />
-rw-r&#8211;r&#8211;  1 root root 1287397 2009-10-16 17:31 System.map-2.6.27.37-0.1-xen<br />
-rw-r&#8211;r&#8211;  1 root root 3009484 2009-10-16 18:29 vmlinux-2.6.27.37-0.1-default.gz<br />
-rw-r&#8211;r&#8211;  1 root root 2681140 2009-10-16 17:36 vmlinux-2.6.27.37-0.1-xen.gz<br />
lrwxrwxrwx  1 root root      29 2009-11-23 13:52 vmlinuz -> vmlinuz-2.6.27.37-0.1-default<br />
-rw-r&#8211;r&#8211;  1 root root 2541344 2009-10-16 18:05 vmlinuz-2.6.27.37-0.1-default<br />
-rw-r&#8211;r&#8211;  1 root root 2235478 2009-10-16 17:31 vmlinuz-2.6.27.37-0.1-xen<br />
lrwxrwxrwx  1 root root      25 2009-11-23 13:52 vmlinuz-xen -> vmlinuz-2.6.27.37-0.1-xen</p></blockquote>
<p>On lance le domU:<br />
<img src="http://www.info16.fr/ftpl/opensuse11-1para.png" alt="domuopensusepara" /></p>
<p>L&#8217;installation d&#8217;un domU Opensuse11-1 para sur un DomU Opensuse11-1 est assez simple.</p>
<p><em><strong>DomU para Ubuntu Server 9.10</strong></em></p>
<p>Après de longues heures de recherche, j&#8217;ai enfin réussi à faire booter un serveur Ubuntu en paravirtualisé.<br />
Le kernel ubuntu depuis le 2.6.28 etant très peu modifié du kernel Vanilla, il possède en natif les options Xen directement déjà compilé dans le kernel.<br />
De plus on remarque que les pilotes block et réseau de Xen sont aussi présents dans les modules de ubuntu 9.10.</p>
<blockquote><p>
root@bartounet:/# grep -r xen /lib/modules/2.6.31-14-generic/kernel/ | grep front<br />
Binary file /lib/modules/2.6.31-14-generic/kernel/drivers/block/xen-blkfront.ko matches<br />
Binary file /lib/modules/2.6.31-14-generic/kernel/drivers/net/xen-netfront.ko matches
</p></blockquote>
<p>On a donc en natif tout pour faire un DomU paravirtualisé. les options de kernel et les modules.</p>
<p>Commencer par installer votre ubuntu en hvm comme vu plus haut.<br />
une fois le DomU booté en HVM aller tout de suite dans le fstab et modifier les noms de vos disques par /dev/xvd*</p>
<p>Voiçi le fstab modifié:</p>
<blockquote><p>
# /etc/fstab: static file system information.<br />
#<br />
# Use &#8216;blkid -o value -s UUID&#8217; to print the universally unique identifier<br />
# for a device; this may be used with UUID= as a more robust way to name<br />
# devices that works even if disks are added and removed. See fstab(5).<br />
#<br />
# <file system> <mount point>   <type>  <options>       <dump>
<pass>
proc            /proc           proc    defaults        0       0<br />
# / was on /dev/sda2 during installation<br />
/dev/xvda2       /               ext4     defaults        0       1<br />
# /boot was on /dev/sda1 during installation<br />
/dev/xvda1       /boot           ext3    defaults        0       2<br />
# swap was on /dev/sda3 during installation<br />
/dev/xvda3               none            swap    sw              0       0<br />
/dev/xvdb1      /home           xfs     defaults        0       0<br />
/dev/xvdb       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0
</p></blockquote>
<p>j&#8217;ai remplacé les occurences de hd en xvd ( /dev/hda1 = /dev/xvda1) etc&#8230;</p>
<p>important, n&#8217;oubliez pas de creer des liens symbolique pointant vers le kernel en rapport avec votre fichier de conf de domu ( vmlinuz-xen et initrd-xen) mais rien de vous empeche aussi d&#8217;indiquer directement le nom complet du kernel dans le fichier de domU</p>
<blockquote><p>
root@wwwinfo16:~# ls -al /boot/ | grep xen<br />
lrwxrwxrwx  1 root root      27 2009-11-25 12:33 initrd-xen -> initrd.img-2.6.31-14-server<br />
lrwxrwxrwx  1 root root      24 2009-11-25 12:33 vmlinuz-xen -> vmlinuz-2.6.31-14-server
</p></blockquote>
<p>Quelques modifications sont à apporter à notre fichier de conf du domU:</p>
<blockquote><p>
linux:~ # vi /etc/xen/vm/wwwinfo16<br />
######VM PARAM####<br />
name=&nbsp;&raquo;wwwinfo16&#8243;<br />
ostype=&nbsp;&raquo;linux&nbsp;&raquo;<br />
memory=512<br />
vcpus=2<br />
cpu_weight=256<br />
cpu_cap=0<br />
hap=1<br />
apic=1<br />
acpi=1<br />
pae=1<br />
stdvga=0<br />
usb=1<br />
usbdevice=&nbsp;&raquo;tablet&nbsp;&raquo;<br />
serial=&nbsp;&raquo;pty&nbsp;&raquo;<br />
timer_mode=1<br />
localtime=1<br />
extid=0<br />
on_crash=&nbsp;&raquo;restart&nbsp;&raquo;<br />
on_reboot=&nbsp;&raquo;restart&nbsp;&raquo;<br />
on_poweroff=&nbsp;&raquo;destroy&nbsp;&raquo;<br />
######HVM#########<br />
#builder=&nbsp;&raquo;hvm&nbsp;&raquo;<br />
#device_model=&nbsp;&raquo;/usr/lib64/xen/bin/qemu-dm&nbsp;&raquo;<br />
#kernel=&nbsp;&raquo;/usr/lib/xen/boot/hvmloader&nbsp;&raquo;<br />
######PVM#########<br />
builder=&nbsp;&raquo;linux&nbsp;&raquo;<br />
bootloader = &#8216;/usr/lib/xen/boot/domUloader.py&#8217;<br />
bootargs = &#8216;&#8211;entry=xvda1:/vmlinuz-xen,/initrd-xen&#8217;<br />
extra=&nbsp;&raquo;root=/dev/xvda2 vga=0&#215;31a console=tty0&#8243;<br />
######DEV#########<br />
vfb=[ 'type=vnc,vncunused=1', ]<br />
disk=[ 'phy:/dev/vg0/lv0,xvda,w', ]<br />
vif=[ 'type=netfront,mac=00:16:3a:11:11:00', ]<br />
boot=&nbsp;&raquo;c&nbsp;&raquo;
</p></blockquote>
<p>Dans le fichiers de conf on modifie aussi les /dev/hda en /dev/xvda<br />
Dans les options de kernel, mais aussi dans les options de disk.<br />
Si vous définissez un lecteur CD-Rom n&#8217;oubliez pas non plus de le declarer en xvdc, sinon ça ne bootera pas.</p>
<p>si tout se passe bien relancer votre DomU Ubuntu et il devrait booter.<br />
un petit lspci ne retourne rien, vous êtes bien en paravirtualisé.<br />
Regardez les modules chargés au démarrage sur le domU.</p>
<blockquote><p>
root@wwwinfo16:~# lsmod | grep xen<br />
xen_fbfront            10112  1<br />
fb_sys_fops             2304  1 xen_fbfront<br />
sysimgblt               3168  1 xen_fbfront<br />
sysfillrect             4576  1 xen_fbfront<br />
xen_kbdfront            6176  0<br />
syscopyarea             4224  1 xen_fbfront<br />
xen_netfront           21696  0<br />
xen_blkfront           14340  6
</p></blockquote>
<p>netfront et blkfront sont bien chargés&#8230; nous sommes en para.</p>
<p>Un petit test de débit réseau entre le domU et le dom0 finirons ne vous en convaincre..</p>
<blockquote><p>
root@wwwinfo16:/home/ftpuser/anonymous# iperf -w512k -c192.168.1.254 -P2<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Client connecting to 192.168.1.254, TCP port 5001<br />
TCP window size:   256 KByte (WARNING: requested   512 KByte)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
[  4] local 192.168.1.1 port 34407 connected with 192.168.1.254 port 5001<br />
[  3] local 192.168.1.1 port 34406 connected with 192.168.1.254 port 5001<br />
[ ID] Interval       Transfer     Bandwidth<br />
[  4]  0.0-10.0 sec  4.95 GBytes  4.25 Gbits/sec<br />
[  3]  0.0-10.0 sec  2.31 GBytes  1.99 Gbits/sec<br />
[SUM]  0.0-10.0 sec  7.26 GBytes  6.24 Gbits/sec
</p></blockquote>
<p>Plus de 6 Gbits/s c&#8217;est pas mal.</p>
<p>Essayons entre 2 DomU Ubuntu-9.10-x86_64 paravirtualisés</p>
<blockquote><p>
root@wwwinfo16:/home/ftpuser/anonymous# iperf -w512k -c192.168.1.2 -P2<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Client connecting to 192.168.1.2, TCP port 5001<br />
TCP window size:   256 KByte (WARNING: requested   512 KByte)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
[  4] local 192.168.1.1 port 49034 connected with 192.168.1.2 port 5001<br />
[  3] local 192.168.1.1 port 49033 connected with 192.168.1.2 port 5001<br />
[ ID] Interval       Transfer     Bandwidth<br />
[  4]  0.0-10.0 sec  3.31 GBytes  2.84 Gbits/sec<br />
[  3]  0.0-10.0 sec  3.30 GBytes  2.83 Gbits/sec<br />
[SUM]  0.0-10.0 sec  6.61 GBytes  5.67 Gbits/sec
</p></blockquote>
<p>Nos serveurs virtuels on un débit de plus de 5Gbits/s entre eux. Ca laisse de la marge.</p>
<p>Je voulais finir sur le réseau.<br />
C&#8217;est souvent ce qu&#8217;on a du mal à mettre en place quand on commence sous Xen.<br />
Souvenez vous j&#8217;ai utilisez netwok-nat, qui configure le nat au lancement de xen et permet de faire du masquerade.<br />
et vif-bridge bridge=br0 qui permet d&#8217;attacher les interfaces virtuelles des domU à notre bridge qui lui utilisera les parametres du kernel pour router.</p>
<p>Il faut savoir que quand on lance un DomU une interface réseau virtuelle est créee automatiquement.<br />
Lorsque c&#8217;est une HVM c&#8217;est une interface <strong>tap</strong><br />
Lorsque c&#8217;est un para c&#8217;est une interface <strong>vif</strong></p>
<p>Sur mon serveur voiçi l&#8217;exemple concret.<br />
On peut voir sur le dom0 que j&#8217;ai 5 DomU démarrés</p>
<blockquote><p>
linux:~ # xm li<br />
Name                                        ID   Mem VCPUs      State   Time(s)<br />
Domain-0                                     0  2603     4     r&#8212;&#8211;   6787.6<br />
chatinfo16                                  15   128     1     -b&#8212;-     28.3<br />
mailinfo16                                  12   512     2     -b&#8212;-    826.7<br />
nsinfo16                                    14   128     1     -b&#8212;-     19.1<br />
susepara                                    17   128     1     -b&#8212;-     83.6<br />
wwwinfo16                                    7   512     2     -b&#8212;-    496.8
</p></blockquote>
<p>en théorie si je dit vrai on devrait donc avoir 5 interfaces vif de créees puisque je n&#8217;utilise que des domU paravirtualisés.</p>
<p>Vérifions le:</p>
<blockquote><p>
linux:~ # ifconfig<br />
br0       Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF<br />
          inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0<br />
          inet6 addr: fe80::3c8b:16ff:fe67:b2b7/64 Scope:Link<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:1205797 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:1268662 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:0<br />
          RX bytes:12752893921 (12162.1 Mb)  TX bytes:326758032 (311.6 Mb)</p>
<p>eth0      Link encap:Ethernet  HWaddr 00:1C:C0:FD:69:A3<br />
          inet addr:94.x.x.21  Bcast:94.23.236.255  Mask:255.255.255.0<br />
          inet6 addr: fe80::21c:c0ff:fefd:69a3/64 Scope:Link<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:5321651 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:9613762 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:1000<br />
          RX bytes:621290841 (592.5 Mb)  TX bytes:13509616638 (12883.7 Mb)<br />
          Interrupt:252 Base address:0xc000 </p>
<p>lo        Link encap:Local Loopback<br />
          inet addr:127.0.0.1  Mask:255.0.0.0<br />
          inet6 addr: ::1/128 Scope:Host<br />
          UP LOOPBACK RUNNING  MTU:16436  Metric:1<br />
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:0<br />
          RX bytes:586 (586.0 b)  TX bytes:586 (586.0 b)</p>
<p>vif7.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF<br />
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link<br />
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1<br />
          RX packets:1102247 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:1068448 errors:0 dropped:7 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:32<br />
          RX bytes:26806418112 (25564.5 Mb)  TX bytes:79329581 (75.6 Mb)</p>
<p>vif12.0   Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF<br />
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link<br />
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1<br />
          RX packets:668903 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:763612 errors:0 dropped:3 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:32<br />
          RX bytes:66913413 (63.8 Mb)  TX bytes:14387030405 (13720.5 Mb)</p>
<p>vif14.0   Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF<br />
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link<br />
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1<br />
          RX packets:4815 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:6801 errors:0 dropped:5 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:32<br />
          RX bytes:563633 (550.4 Kb)  TX bytes:1296285 (1.2 Mb)</p>
<p>vif15.0   Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF<br />
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link<br />
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1<br />
          RX packets:11409 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:13668 errors:0 dropped:25 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:32<br />
          RX bytes:2077063 (1.9 Mb)  TX bytes:2730964 (2.6 Mb)</p>
<p>vif17.0   Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF<br />
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link<br />
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1<br />
          RX packets:1896 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:3768 errors:0 dropped:81 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:32<br />
          RX bytes:376026 (367.2 Kb)  TX bytes:4379048 (4.1 Mb)
</p></blockquote>
<p>Pour qu&#8217;elles communiquent sur le réseau, il faut qu&#8217;elle soient reliées à mon bridge br0:<br />
Vérifions le:</p>
<blockquote><p>
linux:~ # brctl show<br />
bridge name	bridge id		STP enabled	interfaces<br />
br0		8000.feffffffffff	no		vif12.0<br />
							vif14.0<br />
							vif15.0<br />
							vif17.0<br />
							vif7.0
</p></blockquote>
<p>Les vifs sont bien reliées à br0.<br />
à partir de là elle peuvent communiquer avec le reste de mon réseau.</p>
<p>J&#8217;oubliais de parler des règles nat.<br />
Pour l&#8217;instant, les domU communiquent avec l&#8217;extérieur, par l&#8217;intermédiaire de leur passerelle par défaut 192.168.1.254 et du nat sur eth0.<br />
Mais pour l&#8217;instant toutes les tentatives de connexions extérieures ( http, ftp, dns, smtp etc&#8230;) arrivent sur le dom0, il faudra donc mettre en place des règles iptables pour rediriger les ports vers les bons serveurs (domU)<br />
Par exemple wwwinfo16 est le serveur web, il faudra donc une règle iptable du style:</p>
<blockquote><p>
##Redirection de ports pour les differents services<br />
#######wwwinfo16<br />
$iptables -A PREROUTING -t nat -p tcp -i eth0 &#8211;dport 80 -j DNAT &#8211;to 192.168.1.1:80
</p></blockquote>
<p>Et ceci pour tous les ports que vous voulez rediriger. C&#8217;est un peu fastidieux, mais une fois votre script de règles iptables mis en place cela  fonctionne très bien.</p>
<p>Il reste pas mal de chose a faire, comme paramétrer des sauvegardes que je ferais en mode bloc par du simple dd et de la compression lzop. Le tout externalisé sur un ftp.<br />
Faire un template propre pour provisioner autant de domU que je le souhaite grace à une image identique ( dd est mon amis)<br />
Mais le projet est bien avancé, puisque vous lisez à ce jour, cet article sur mon blog qui est hebergé sur wwwinfo16, vous m&#8217;envoyez des mails par l&#8217;intermédiaire de mailinfo16, le SOA du domaine info16.fr est nsinfo16.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=170</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installation de CAS 3.3.2 avec Active Directory</title>
		<link>http://blog.info16.fr/?p=150</link>
		<comments>http://blog.info16.fr/?p=150#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:55:30 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=150</guid>
		<description><![CDATA[Voilà des jours que j&#8217;essaye de faire fonctionner CAS pour une athentification ldap avec active directory, dans un domaine Windows.
Je me fait un petit billet pour ne pas oublier.
Dejà CAS c&#8217;est quoi, c&#8217;est un outil permettant de faire du SSO.
Il s’agit d’une technique permettant à un utilisateur de ne procéder qu’à une seule authentification pour [...]]]></description>
			<content:encoded><![CDATA[<p>Voilà des jours que j&#8217;essaye de faire fonctionner CAS pour une athentification ldap avec active directory, dans un domaine Windows.<br />
Je me fait un petit billet pour ne pas oublier.</p>
<p>Dejà CAS c&#8217;est quoi, c&#8217;est un outil permettant de faire du SSO.<br />
Il s’agit d’une technique permettant à un utilisateur de ne procéder qu’à une seule authentification pour accéder à plusieurs applications informatiques sécurisées (généralement des sites Web).  Souvent dans une entreprise, les utilisateurs sont amenés à s’identifier dans différentes applications (intranet, courrier électronique, forums, agendas, …). Sans solution de SSO, il est nécessaire de s’identifier dans chacune de ces applications avec souvent des identifiants différents.</p>
<p>Il se présente par une interface Web des plus simpliste.<br />
Mais derriere il y a quoi ?<br />
Il s&#8217;agit dabord d&#8217;installer Tomcat.<br />
Pour mon exemple j&#8217;ai installer Tomcat sur une Opensuse11.1 à grand coup de Yast.<br />
<img src="http://info16.fr/ftpl/yasttomcat.png" alt="Yast Tomcat" /></p>
<p>L&#8217;installation de Tomcat est assez simple avec le gestionaire de paquets, n&#8217;oublier pas d&#8217;installer le manager et les webapps.</p>
<p>Tomcat se base sur Java, vérifiez bien votre version de java.<br />
si tout c&#8217;est bien déroulé, vous devriez avoir accès à tomcat sur</p>
<p>http://votre_server:8080</p>
<p><img src="http://info16.fr/ftpl/tomcat.png" alt="tomcat" /><br />
Afin de pouvoir acceder au manager, il faut creer un compte admin dans le fichier  tomcat-users.xml</p>
<p>Sur OpenSuse 11.1 l&#8217;installation de Tomcat6 se trouve dans /usr/share/tomcat6</p>
<p>On a donc dans /usr/share/tomcat6/conf/ tomcat-users.xml</p>
<blockquote><p>&lt;tomcat-users&gt;</p>
<p>&lt;role rolename=&nbsp;&raquo;tomcat&nbsp;&raquo;/&gt;<br />
&lt;role rolename=&nbsp;&raquo;role1&#8243;/&gt;<br />
&lt;user username=&nbsp;&raquo;tomcat&nbsp;&raquo; password=&nbsp;&raquo;tomcat&nbsp;&raquo; roles=&nbsp;&raquo;tomcat&nbsp;&raquo;/&gt;<br />
&lt;user username=&nbsp;&raquo;both&nbsp;&raquo; password=&nbsp;&raquo;tomcat&nbsp;&raquo; roles=&nbsp;&raquo;tomcat,role1&#8243;/&gt;<br />
&lt;user username=&nbsp;&raquo;role1&#8243; password=&nbsp;&raquo;tomcat&nbsp;&raquo; roles=&nbsp;&raquo;role1&#8243;/&gt;<br />
&lt;user username=&nbsp;&raquo;admin&nbsp;&raquo; password=&nbsp;&raquo;pass&nbsp;&raquo; roles=&nbsp;&raquo;admin,manager&nbsp;&raquo;/&gt;<br />
&lt;/tomcat-users&gt;</p></blockquote>
<p>La dernière ligne est celle que j&#8217;ai ajoutée pour acceder au manager de tomcat.</p>
<p>Passons maintenant à l&#8217;installation de CAS.</p>
<p>Le plus important est d&#8217;utiliser CAS Toolbox, j&#8217;ai galéré des semaines avec cas-server sans succès alors que j&#8217;ai enfin abouti avec cas-toolbox.</p>
<p>Autrement dit c&#8217;est un cas packagé qui simplifie la configuration.<br />
On télécharge l&#8217;archive sur le site de l&#8217;esup<br />
<a href="https://sourcesup.cru.fr/frs/?group_id=401&amp;release_id=1461">https://sourcesup.cru.fr/frs/?group_id=401&amp;release_id=1461</a><br />
Pour ma part j&#8217;ai testé la 3.3.2-1<br />
On decompresse l&#8217;archive et on commence à modifer les fichiers.</p>
<p>TOut d&#8217;abord les fichier qu&#8217;on va modifier sont build.properties et config.properties</p>
<blockquote><p># cp build.sample.properties build.properties<br />
# cp config.sample.properties config.properties</p></blockquote>
<p>Afin de tester j&#8217;ai rapidement monter un controleur de domaine Windows 2003 enterprise sur une machine virtuelle.<br />
Le domaine sera <strong>maison.priv</strong><br />
Il est aussi necessaire de creer dans l&#8217;Active directory un user qui aura les droit d&#8217;interroger l&#8217;AD.<br />
Mon user sera ldapview avec le mot de pass motdepasse</p>
<p>Passons à la configuration des ficher CAS</p>
<p>Voiçi le fichiers build.properties</p>
<blockquote><p>#deploy dir</p>
<p>deploy.path=/usr/share/tomcat6/webapps/cas</p>
<p>#configuration file to use</p>
<p>config.file=${basedir}/config.properties</p>
<p>#config.file=${basedir}/resources/quickstart/quickstart.properties</p>
<p>#use maven dependency offline</p>
<p>#must run on time inline</p>
<p>maven.offline=false</p>
<p>#SVN part to get other update</p>
<p>svnant.update.url=http://subversion.cru.fr/cas-toolbox/tags/3.3.2-1/update.esup/</p>
<p>svnant.repository.user=</p>
<p>svnant.repository.passwd=</p>
<p>svnant.update.path=${basedir}/update.esup</p>
<p>svnant.update.version=HEAD</p>
<p># do not change after this line</p>
<p>#package configuration</p>
<p>package.name=cas-toolbox</p>
<p>package.version=1</p>
<p>package.build.path=${build.path}/package</p>
<p>#quickstart configruation</p>
<p>#config.file=${basedir}/resources/quickstart/quickstart.properties</p>
<p>quickstart.name=cas-quickstart</p>
<p>quickstart.version=1</p>
<p>quickstart.build.path=${build.path}/quickstart</p>
<p>quickstart.ressource.path=${resources.path}/quickstart</p>
<p>#maven properties</p>
<p>maven.ant.task.version=2.0.9</p>
<p>maven.local.dir=maven-repository</p>
<p>maven.local.repository=${basedir}/build/${maven.local.dir}</p>
<p>maven.package.name=cas-maven-repository</p>
<p>maven.proxy.host=</p>
<p>maven.proxy.port=8080</p>
<p>maven.proxy.username=</p>
<p>maven.proxy.password=</p>
<p>update.path=${basedir}/update</p>
<p>#${basedir}/update.esup</p>
<p>#${basedir}/update.stats</p>
<p>#${basedir}/update.memcache</p>
<p>custom.path=${basedir}/custom</p>
<p>build.path=${basedir}/build</p>
<p>resources.path=${basedir}/resources</p>
<p>cas.build.path=${build.path}/cas</p>
<p>cas.update.webpage.path=${update.path}/webpages</p>
<p>cas.custom.webpage.path=${custom.path}/webpages</p>
<p>cas.update.source.path=${update.path}/source</p>
<p>cas.custom.source.path=${custom.path}/source</p>
<p>quickstart.build.path=${build.path}/quickstart</p>
<p>quickstart.ressource.path=${resources.path}/quickstart</p>
<p>simpleTestHandler.name=</p>
<p>simpleTestHandler.conf=simpletest-auth.xml</p>
<p>ldapHandler.name=cas-server-support-ldap</p>
<p>ldapHandler.conf=ldap-auth.xml</p></blockquote>
<p>Le config.properties</p>
<blockquote><p># Ldap properties</p>
<p>ldap.host.1=ldap://10.0.0.153</p>
<p>ldap.basedn=sAMAccountName=%u,CN=Users,dc=maison,dc=priv</p>
<p># file authenticate layer</p>
<p>passfile.encode-algo=MD5</p>
<p>passfile.location=classpath:/../usersFile</p>
<p>log.dir=${catalina.home}/logs</p>
<p>#cas host</p>
<p>cas.host=localhost</p>
<p># cas uri (empty if /)</p>
<p>cas.uri=</p>
<p># cas port empty (if standard)</p>
<p>cas.port=:8080</p>
<p>#User allow to use services manager (services/manage.html)</p>
<p>security.useradmin=admin</p>
<p># graphic theme</p>
<p>theme=default</p>
<p>views=default</p>
<p># auth layer to use</p>
<p># see build.properties to view all</p>
<p>cas.authHandlers=ldapHandler</p></blockquote>
<p>Modifier bien sur selon votre configuration.<br />
Enfin on fini par creer une arborescence dans cas-toolbox-3.3.2-1<br />
tell que cas-toolbox-3.3.2-1/custom/webpages/WEB-INF/auth-configuration/<br />
et on va creer un fichier ldap-auth.xml<br />
vi custom/webpages/WEB-INF/auth-configuration/ldap-auth.xml</p>
<blockquote><p>
&lt;?xml version=&nbsp;&raquo;1.0&#8243; encoding=&nbsp;&raquo;UTF-8&#8243;?&gt;<br />
&lt;!&#8211;<br />
| deployerConfigContext.xml centralizes into one file some of the declarative configuration that<br />
| all CAS deployers will need to modify.<br />
|<br />
| This file declares some of the Spring-managed JavaBeans that make up a CAS deployment.<br />
| The beans declared in this file are instantiated at context initialization time by the Spring<br />
| ContextLoaderListener declared in web.xml.  It finds this file because this<br />
| file is among those declared in the context parameter &laquo;&nbsp;contextConfigLocation&nbsp;&raquo;.<br />
|<br />
| By far the most common change you will need to make in this file is to change the last bean<br />
| declaration to replace the default SimpleTestUsernamePasswordAuthenticationHandler with<br />
| one implementing your approach for authenticating usernames and passwords.<br />
+&#8211;&gt;<br />
&lt;beans xmlns=&nbsp;&raquo;http://www.springframework.org/schema/beans&nbsp;&raquo;<br />
xmlns:xsi=&nbsp;&raquo;http://www.w3.org/2001/XMLSchema-instance&nbsp;&raquo;<br />
xmlns:p=&nbsp;&raquo;http://www.springframework.org/schema/p&nbsp;&raquo;<br />
xsi:schemaLocation=&nbsp;&raquo;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&nbsp;&raquo;&gt;</p>
<p>&lt;!&#8211;<br />
|    LDAP authentication.<br />
+&#8211;&gt;<br />
&lt;bean id=&nbsp;&raquo;ldapHandler&nbsp;&raquo; class=&nbsp;&raquo;org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler&nbsp;&raquo;&gt;<br />
&lt;property name=&nbsp;&raquo;filter&nbsp;&raquo; value=&nbsp;&raquo;sAMAccountName=%u&nbsp;&raquo; /&gt;<br />
&lt;property name=&nbsp;&raquo;searchBase&nbsp;&raquo; value=&nbsp;&raquo;DC=maison,DC=priv&nbsp;&raquo; /&gt;<br />
&lt;property name=&nbsp;&raquo;contextSource&nbsp;&raquo; ref=&nbsp;&raquo;contextSource&nbsp;&raquo; /&gt;<br />
&lt;property name=&nbsp;&raquo;ignorePartialResultException&nbsp;&raquo; value=&nbsp;&raquo;yes&nbsp;&raquo; /&gt;<br />
&lt;/bean&gt;</p>
<p>&lt;bean id=&nbsp;&raquo;contextSource&nbsp;&raquo; class=&nbsp;&raquo;org.springframework.ldap.core.support.LdapContextSource&nbsp;&raquo;&gt;<br />
&lt;property name=&nbsp;&raquo;anonymousReadOnly&nbsp;&raquo; value=&nbsp;&raquo;false&nbsp;&raquo; /&gt;<br />
&lt;property name=&nbsp;&raquo;password&nbsp;&raquo; value=&nbsp;&raquo;motdepasse&nbsp;&raquo; /&gt;</p>
<p>&lt;property name=&nbsp;&raquo;pooled&nbsp;&raquo; value=&nbsp;&raquo;true&nbsp;&raquo; /&gt;<br />
&lt;property name=&nbsp;&raquo;urls&nbsp;&raquo;&gt;<br />
&lt;list&gt;<br />
&lt;value&gt;ldap://10.0.0.153:389&lt;/value&gt;<br />
&lt;/list&gt;<br />
&lt;/property&gt;<br />
&lt;property name=&nbsp;&raquo;userDn&nbsp;&raquo; value=&nbsp;&raquo;ldapview&nbsp;&raquo; /&gt;<br />
&lt;property name=&nbsp;&raquo;baseEnvironmentProperties&nbsp;&raquo;&gt;<br />
&lt;map&gt;<br />
&lt;!&#8211;<br />
&lt;entry&gt;<br />
&lt;key&gt;&lt;value&gt;java.naming.security.protocol&lt;/value&gt;&lt;/key&gt;<br />
&lt;value&gt;ssl&lt;/value&gt;<br />
&lt;/entry&gt;<br />
&#8211;&gt;<br />
&lt;entry&gt;<br />
&lt;key&gt;&lt;value&gt;java.naming.security.authentication&lt;/value&gt;&lt;/key&gt;<br />
&lt;value&gt;simple&lt;/value&gt;<br />
&lt;/entry&gt;<br />
&lt;/map&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;<br />
&lt;/beans&gt;</p></blockquote>
<p>On fini enfin en utilisant la commande ant</p>
<p>ant init<br />
qui va builder cas selon votre config</p>
<p>ant deploy qui va aller copier les fichier cas dans le chemin que vous lui avez definit dans build.properties.</p>
<p>Si tout se passe bien vous devriez voir apparaitre un webbaps cas dans le manager de tomcat.<br />
Il devrait démarrer..<br />
<img src="http://info16.fr/ftpl/casw.png" alt="CAS Acceuil" /><br />
et une fois authentifier avec un compte du domaine Active directory<br />
<img src="http://info16.fr/ftpl/cassucc.png" alt="CAS Succes" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=150</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Montée en charge d&#8217;un serveur Apache et DOS,DDOS</title>
		<link>http://blog.info16.fr/?p=139</link>
		<comments>http://blog.info16.fr/?p=139#comments</comments>
		<pubDate>Sun, 16 Aug 2009 10:30:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=139</guid>
		<description><![CDATA[Comme chacun sait il existe en général deux types d&#8217;attaque par deni de service. les DOS et les DDOS
Comme le dit bien Wikipedia:
Un déni de service est une situation où un serveur informatique est incapable de répondre aux requêtes de ses clients. Un serveur informatique (par exemple un serveur Web) doit traiter plusieurs requêtes dans [...]]]></description>
			<content:encoded><![CDATA[<p>Comme chacun sait il existe en général deux types d&#8217;attaque par deni de service. les DOS et les DDOS<br />
Comme le dit bien Wikipedia:</p>
<p>Un déni de service est une situation où un serveur informatique est incapable de répondre aux requêtes de ses clients. Un serveur informatique (par exemple un serveur Web) doit traiter plusieurs requêtes dans un court laps de temps. Lorsque le serveur est incapable de traiter toutes les requêtes qu&#8217;il reçoit, il y a déni de service. (DOS)</p>
<p>Une attaque par déni de service distribuée (en anglais, Distributed Denial of Service attack ou DDoS attack) est une attaque par déni de service dans laquelle le serveur cible est attaqué par plusieurs ordinateurs simultanément.</p>
<p>Pour ma part je ne m&#8217;étais jamais trop interessé à la monté en charge de mon serveur apache, pensant que mon site peu visité ne pouvait pas faire l&#8217;objet d&#8217;attaque.</p>
<p>Mais c&#8217;est en voulant tester un outil de montée en charge tels que siege, que je me suis rendu compte qu&#8217;il était très simple de mettre à genoux un serveur peu sécurisé&#8230;</p>
<p>Pour commencer tester la tenue en charge de notre serveur Apache avec siège.<br />
<strong><br />
1. Installation</strong></p>
<p>Après avoir récupéré le code source sur le site officiel, entrez les commandes suivante :</p>
<blockquote><p>
    tar zxvf siege-latest.tar.gz<br />
    cd siege<br />
    ./configure<br />
    make<br />
    make install
</p></blockquote>
<p><strong>2. Utilisation</strong></p>
<p>La première étape consiste à créer le fichier de configuration. Pour cela, il suffit de lancer la commande siege.config, dans son terminal.</p>
<p>Ensuite, on pourra tester son serveur web avec quelque chose comme çà :</p>
<blockquote><p>   siege -d1 -r300 -c100 http://ip_du_serveur_a_tester/</p></blockquote>
<p>Ici les options signifie :</p>
<p>-c : nombre d&#8217;utilisateurs<br />
-r : nombre de connexion par chaque utilisateur<br />
-d : délai en seconde de sleep</p>
<p>Ainsi, en lançant siege avec de tels paramètres, je simule la connexion de 100 utilisateurs, exécutant chacun 300 requêtes, espacé de une seconde. Ce qui fait à peu près 30 000 requêtes.</p>
<p>Et là c&#8217;est le drame&#8230;</p>
<blockquote><p>root@sd-15226:~# siege -d1 -r300 -c100 http://forum.info16.fr<br />
** SIEGE 2.69<br />
** Preparing 100 concurrent users for battle.<br />
The server is now under siege&#8230;<br />
HTTP/1.1 200   2.79 secs:    6295 bytes ==> /<br />
HTTP/1.1 200   2.88 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.89 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.89 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.90 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.92 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.93 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.94 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.95 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   2.96 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   3.57 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   5.78 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   6.59 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.24 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.31 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.42 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.46 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.61 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.61 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.67 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.73 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.73 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.93 secs:    6296 bytes ==> /<br />
HTTP/1.1 200   9.99 secs:    6295 bytes ==> /<br />
HTTP/1.1 200  10.17 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  10.37 secs:    6295 bytes ==> /<br />
HTTP/1.1 200  10.68 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  11.94 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  12.88 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  14.44 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  14.82 secs:    6295 bytes ==> /<br />
HTTP/1.1 200  14.86 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  15.05 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  15.49 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  15.88 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  16.09 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  18.04 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  18.67 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  19.87 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  20.20 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  20.92 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  21.39 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  21.42 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  21.42 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  22.94 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  23.00 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  23.35 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  22.79 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  23.74 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  23.82 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  23.88 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  24.14 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  24.72 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  24.87 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  24.92 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.38 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.43 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.44 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.45 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.55 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.79 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.80 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  25.91 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  26.13 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  26.30 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  26.57 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  27.67 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  27.68 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  28.52 secs:    6296 bytes ==> /<br />
HTTP/1.1 200  28.50 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  28.55 secs:    6297 bytes ==> /<br />
HTTP/1.1 200  28.89 secs:    6297 bytes ==> /<br />
warning: socket: 1831987536 select timed out: Connection timed out<br />
warning: socket: 1748060496 select timed out: Connection timed out<br />
warning: socket: 1664133456 select timed out: Connection timed out<br />
warning: socket: 1605384528 select timed out: Connection timed out<br />
warning: socket: 1471101264 select timed out: Connection timed out<br />
warning: socket: 1303247184 select timed out: Connection timed out<br />
warning: socket: 1538242896 select timed out: Connection timed out<br />
warning: socket: 1236105552 select timed out: Connection timed out<br />
warning: socket: 1437530448 select timed out: Connection timed out<br />
warning: socket: 1403959632 select timed out: Connection timed out<br />
warning: socket: 1454315856 select timed out: Connection timed out<br />
warning: socket: 1840380240 select timed out: Connection timed out<br />
warning: socket: 1706096976 select timed out: Connection timed out<br />
warning: socket: 1185749328 select timed out: Connection timed out</p></blockquote>
<p>En quelques secondes, mon serveur était down&#8230; impossible d&#8217;acceder au site, impossible aussi de se connecter en ssh&#8230; seul la réponse au ping était encore fonctionnelle.<br />
et là ca commence à faire peur.. en fait n&#8217;importe quel serveur peut etre saturé, par le moindre petit malin&#8230;</p>
<p>Cette situation n&#8217;est pas tolérable, on ne peut pas laisser un serveur ainsi&#8230; </p>
<p>après avoir longuement cherché et réfléchi sur un moyen de contrer ce probleme&#8230; je suis tombé sur un module d&#8217;apache des plus interessant:</p>
<p>le <strong>mod_evasive</strong> :permet de détecter les floods et les tentatives de déni de service (DOS). Ce module renvoie des erreurs HTTP 403 lorsque le seuil de sollicitation du serveur apache par IP a été dépassé.</p>
<p>c&#8217;est la solution. Le bandit à force de connexion répétée aura un joli placard erreur 403 et sera blacklisté un moment.<br />
<strong><br />
1- Télécharger le mod_evasive sur le site officiel</strong></p>
<p><a href="http://www.zdziarski.com/projects/mod_evasive/">http://www.zdziarski.com/projects/mod_evasive/</a></p>
<p><strong>2- Installation</strong></p>
<p>Nous allons utiliser l&#8217;outil apxs d&#8217;apache (apxs is a tool for building and installing extension modules for the Apache HyperText Transfer Protocol (HTTP) server)<br />
En effet c&#8217;est un outil qui permet d&#8217;installer proprement un module dans apache<br />
De base je n&#8217;avais pas la commande apxs</p>
<blockquote><p>apt-get install apache2-threaded-dev</p></blockquote>
<blockquote><p>tar xvfz mod_evasive_1.10.1.tar.gz<br />
cd mod_evasive<br />
/usr/bin/apxs2 -i -a -c mod_evasive20.c #Module pour apache2</p></blockquote>
<p>il faut à présent paramétrer le fichier apache2.conf. ( apxs est censé le faire, mais je pense qu&#8217;il cherche un httpd.conf qui n&#8217;est pas présent sur une distribution Ubuntu)</p>
<p>voiçi les ligne à rajouter dans le fichier de conf d&#8217;apache.</p>
<blockquote><p><strong>LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so</strong><br />
<IfModule mod_evasive20.c><br />
    DOSHashTableSize    3097<br />
    DOSPageCount        2<br />
    DOSSiteCount        50<br />
    DOSPageInterval     1<br />
    DOSSiteInterval     1<br />
    DOSBlockingPeriod   10<br />
    DOSWhitelist    127.0.0.*<br />
    DOSEmailNotify  admin@votredomaine.fr<br />
    DOSSystemCommand &laquo;&nbsp;/bin/echo %s >> /var/log/apache2/evasive/evasive.log &#038;&#038; /bin/date >> /var/log/apache2/evasive/evasive.log&nbsp;&raquo;<br />
    DOSLogDir               &laquo;&nbsp;/var/log/evasive&nbsp;&raquo;<br />
</IfModule></p></blockquote>
<p><strong>Explications :</strong></p>
<p><strong>DOSSiteCoun</strong>t : Le nombre maximal de requêtes qu&#8217;une adresse IP source peut réaliser sur le même enfant pendant une unité de temps sans être ajoutée à la liste noire.</p>
<p><strong>DOSSiteInterval</strong> : L&#8217;unité de temps (en secondes) évoquée dans la directive DOSSiteCount. La valeur par défaut est d&#8217;une seconde.</p>
<p><strong>DOSPageCount </strong>: Le nombre maximal de requêtes qu&#8217;une adresse IP source peut réaliser sur la même ressource (même URL) pendant une unité de temps sans être ajoutée à la liste noire.</p>
<p><strong>DOSPageInterva</strong>l : L&#8217;unité de temps évoquée dans la directive DOSPageCount.</p>
<p><strong>DOSBlockingPeriod</strong> : Désigne la durée pendant laquelle tous les accès des adresses IP en liste noire seront refusés et recevront une erreur 403. Par défaut, cette durée est de 10 secondes.</p>
<p><strong>DOSEmailNotify</strong> : Précise une adresse email à laquelle envoyer un courriel lorsqu&#8217;une adresse IP est ajoutée en liste noire. (Attention de bien positionner MAILER dans les sources du module pour utiliser cette directive).</p>
<p><strong>DOSSystemCommand</strong> : Une commande à appeler pour, par exemple, ajouter l&#8217;adresse en liste noire sur un routeur.<br />
<strong><br />
DOSWhiteList</strong> : Spécifie une adresse IP à ne jamais positionner en liste noire. Il est courant de positionner cette option à 127.0.0.* pour éviter de bloquer nos éventuels propres accès récursifs ou autres robots de référencement. En production, cette option ne devrait jamais être utilisée pour désigner un réseau d&#8217;utilisateurs humains légitimes : les mécanismes internes du module garantissent que le trafic légitime ne sera pas bloqué. Cette directive peut être positionnée plusieurs fois avec divers arguments, ceux-ci seront cumulés dans la configuration.<br />
(cf system-linux.eu)</p>
<p>redemarrer apache</p>
<blockquote><p><strong>/etc/init.d.apache2 restart</strong></p></blockquote>
<p>Vous pouvez verifier tout de meme dans votre server-info que le module est bien chargé.</p>
<p>Dernier petit test sur un de mes forums&#8230;</p>
<blockquote><p>root@sd-15226:~# siege -d1 -r300 -c100 http://forum.info16.fr<br />
** SIEGE 2.69<br />
** Preparing 100 concurrent users for battle.<br />
The server is now under siege&#8230;<br />
HTTP/1.1 200   0.16 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.19 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.19 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.20 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.21 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.20 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.20 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.20 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.29 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.31 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.37 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.36 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.37 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.37 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.37 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.37 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.38 secs:    5178 bytes ==> /<br />
HTTP/1.1 200   0.37 secs:    5178 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 200   0.37 secs:    5178 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.36 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.35 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.34 secs:     351 bytes ==> /<br />
HTTP/1.1 403   0.23 secs:     351 bytes ==> /</p></blockquote>
<p>on remarque bien qu départ la réponse 200 de apache qui stipule que tout va bien, mais quand le nombres de connexions dépasse le taux définit par le module evasive on obtient une erreur 403. l&#8217;ip est balclistée durant un temps défini.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=139</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Migration du blog</title>
		<link>http://blog.info16.fr/?p=137</link>
		<comments>http://blog.info16.fr/?p=137#comments</comments>
		<pubDate>Thu, 13 Aug 2009 16:31:21 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=137</guid>
		<description><![CDATA[Ca faisait un petit moment que j&#8217;en avais marre de dotclear, j&#8217;ai donc décidé de migrer l&#8217;ensemble de mes articles sous Wordpress.
Je le trouve plus convivial et plus souple.
]]></description>
			<content:encoded><![CDATA[<p>Ca faisait un petit moment que j&#8217;en avais marre de dotclear, j&#8217;ai donc décidé de migrer l&#8217;ensemble de mes articles sous Wordpress.<br />
Je le trouve plus convivial et plus souple.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=137</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;une distribution Ubuntu/Debian sur un laptop sans Lecteur de CDROM</title>
		<link>http://blog.info16.fr/?p=33</link>
		<comments>http://blog.info16.fr/?p=33#comments</comments>
		<pubDate>Tue, 14 Jul 2009 12:29:00 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=33</guid>
		<description><![CDATA[J&#8217;ai un petit laptop Dell avec lequel j&#8217;ai beaucoup galéré. Mon but était d&#8217;installer une distribution Gnu/Linux sur ce portable, mais j&#8217;ai vite été confronté au fait qu&#8217;il n&#8217;avais ni lecteur CD ni possibilité de booter en usb.
Heureusement il est doté d&#8217;une carte réseau supportant nativement le boot par le réseau (pxe). Le but de [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai un petit laptop Dell avec lequel j&#8217;ai beaucoup galéré. Mon but était d&#8217;installer une distribution Gnu/Linux sur ce portable, mais j&#8217;ai vite été confronté au fait qu&#8217;il n&#8217;avais ni lecteur CD ni possibilité de booter en usb.</p>
<p>Heureusement il est doté d&#8217;une carte réseau supportant nativement le boot par le réseau (pxe). Le but de ce billet est de me faire un petit aide mémoire pour ce type d&#8217;installation.</p>
<p>Pour cela il nous faut installer un serveur PXE avec tout le toutim (pxe, tftp, dhcp-server etc &#8230;) Après avoir réfléchi un peu, je me suis rappeler qu&#8217;un outil faisait cela très bien sans avoir besoin de se prendre la tête: le fameux System Rescue CD.</p>
<p>je m&#8217;empresse donc de télécharger la dernière version de cet outil sur le site officiel : http://www.sysresccd.org/</p>
<p>Pour ma part je n&#8217;ai pas gracer un CD pour cela. j&#8217;ai simplement booter le sysrescuecd a partir d&#8217;un DomU Xen. mais vous pouvez très bien le faire en gravant le CD et en bootant sur une machine physique. ou même en utilisant l&#8217;outil de virtualisation de votre choix (vmware, virtualbox, qemu et j&#8217;en passe).</p>
<p>Une fois le system rescue on vérifie que le serveur on active la carte réseau du serveur et on lui assigne une ip ( en fixe ou en DHCP)</p>
<blockquote><p>root@sysresccd / % ifconfig eth0</p></blockquote>
<p>pour ma part j&#8217;avais dejà mon serveur dhcp qui tournait.</p>
<blockquote><p> root@sysresccd / % dhclient eth0</p></blockquote>
<blockquote><p>
root@sysresccd / % ifconfig eth0<br />
eth0      Link encap:Ethernet  HWaddr 00:16:3a:11:11:01<br />
          inet addr:10.0.0.54  Bcast:10.0.0.255  Mask:255.255.255.0<br />
          inet6 addr: fe80::216:3aff:fe11:1101/64 Scope:Link<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:52799 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:68521 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:1000<br />
          RX bytes:14016982 (13.3 MiB)  TX bytes:99265410 (94.6 MiB)<br />
          Interrupt:32 Base address:0&#215;2000
</p></blockquote>
<p>Mon serveur à obtenu l&#8217;ip 10.0.0.54/24</p>
<p>On modifie maintenant les options su serveur pxe</p>
<blockquote><p> root@sysresccd / % vi /etc/conf.d/pxebootsrv</p></blockquote>
<blockquote><p>
# Copyright 2003-2007 Francois Dupoux &#8211; www.sysresccd.org<br />
# Distributed under the terms of the GNU General Public License v2</p>
<p># Config file for /etc/init.d/pxebootsrv<br />
# Have a look at the PXE chapter in the official manual for more details:<br />
# http://www.sysresccd.org/Sysresccd-manual-en_PXE_network_booting</p>
<p># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- README &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
# The pxebootsrv service allows to provide a PXE-boot-server for<br />
# SystemRescueCd out of the box. You just need to edit the following<br />
# options and run &laquo;&nbsp;/etc/init.d/pxebootsrv restart&nbsp;&raquo;, and you can boot<br />
# any computer of your local network with PXE.<br />
#<br />
# You must configure these options if the current SystemRescueCd system<br />
# acts as DHCP-server and TFTP-server and HTTP-server. If you keep this<br />
# default behavior you just need to edit these options and start the<br />
# service with &laquo;&nbsp;/etc/init.d/pxebootsrv restart&nbsp;&raquo;.<br />
# If you don&#8217;t want the current system to be the DHCP server, you will have<br />
# to configure everything by hand and it will not be possible to use<br />
# the pxebootsrv service.</p>
<p># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; CONFIGURATION &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
# By default the current systems acts as DHCP and TFTP and HTTP server<br />
# If you want another machine of you network to act as one of those<br />
# you will have to turn the appropriate option yo &laquo;&nbsp;no&nbsp;&raquo;</p>
<p># Set to &laquo;&nbsp;yes&nbsp;&raquo; if you want this machine to act as a DHCP server<br />
PXEBOOTSRV_DODHCPD=&nbsp;&raquo;yes&nbsp;&raquo;<br />
# Set to &laquo;&nbsp;yes&nbsp;&raquo; if you want this machine to act as a TFTP server<br />
PXEBOOTSRV_DOTFTPD=&nbsp;&raquo;yes&nbsp;&raquo;<br />
# Set to &laquo;&nbsp;yes&nbsp;&raquo; if you want this machine to act as an HTTP server<br />
PXEBOOTSRV_DOHTTPD=&nbsp;&raquo;yes&nbsp;&raquo;</p>
<p># Here is a typical PXE-Boot configuration &#8211;> update with your settings<br />
PXEBOOTSRV_SUBNET=&nbsp;&raquo;10.0.0.0&#8243;                    # Used only if PXEBOOTSRV_DODHCPD=&nbsp;&raquo;yes&nbsp;&raquo;<br />
PXEBOOTSRV_NETMASK=&nbsp;&raquo;255.255.255.0&#8243;                 # Used only if PXEBOOTSRV_DODHCPD=&nbsp;&raquo;yes&nbsp;&raquo;<br />
PXEBOOTSRV_DEFROUTE=&nbsp;&raquo;10.0.0.253&#8243;                # Used only if PXEBOOTSRV_DODHCPD=&nbsp;&raquo;yes&nbsp;&raquo;<br />
PXEBOOTSRV_DNS=&nbsp;&raquo;10.0.0.253&#8243;                     # Used only if PXEBOOTSRV_DODHCPD=&nbsp;&raquo;yes&nbsp;&raquo;<br />
PXEBOOTSRV_DHCPRANGE=&nbsp;&raquo;10.0.0.100 10.0.0.110&#8243;<br />
PXEBOOTSRV_LOCALIP=&nbsp;&raquo;10.0.0.54&#8243;<br />
# Keep these values to $PXEBOOTSRV_LOCALIP if the current computer<br />
# acts as TFTP server and HTTP server as well as DHCP server<br />
PXEBOOTSRV_TFTPSERVER=&nbsp;&raquo;$PXEBOOTSRV_LOCALIP&nbsp;&raquo;        # IP address of the TFTP server if PXEBOOTSRV_DODHCPD=&nbsp;&raquo;yes&nbsp;&raquo;<br />
PXEBOOTSRV_HTTPSERVER=&nbsp;&raquo;http://$PXEBOOTSRV_LOCALIP/sysrcd.dat&nbsp;&raquo; # download URL
</p></blockquote>
<p>Comme on peut le voir, j&#8217;ai modifié le fichier pour coller avec ma config réseau. Et j&#8217;ai bien défini une plage dhcp pour mes clients pxe</p>
<p>D&#8217;ailleurs Attention, pensez à stopper vos autres serveurs dhcp qui tourne sur votre réseau ( ou du moins sur votre vlan) sinon le client pxe risque d&#8217;obtenir un bail dhcp venant d&#8217;un autre serveur.</p>
<p>A partir de là notre serveur PXE est prêt pour distribuer une image de SystemRescueCD aux clients PXE.</p>
<blockquote><p> root@sysresccd / %/etc/init.d/pxebootsrv start</p></blockquote>
<p>Vous pouvez dejà tester en lançant un client pxe il devrait booter directement sur system rescue CD. (pensez à régler le bios de votre client en conséquence).</p>
<p>Bon c&#8217;est pas fini, ce que nous venons de faire peut être très pratique pour utiliser system rescue CD sur un pc sans lecteur CD, afin de faire de la maintenance ( partitionement, backup, deboggage etc&#8230;)</p>
<p>Mais ce que je cherche à faire est d&#8217;installer une distribution Ubuntu sur mon laptop.</p>
<p>pour cela il suffit simplement de modifier les fichiers du serveur TFTP de system rescue CD en les remplçant par les fichier de netboot de Ubuntu. Vous pouvez les récuperer sur le net, mais pour ma part j&#8217;avais télécharger le .iso de Ubuntu sur mon pc. J&#8217;ai donc pris les fichiers de netboot directement dessus.</p>
<p>J&#8217;ai donc monter mon image iso pour en extraire les fichiers en questions.</p>
<blockquote><p> opensuse:/ # mount -o loop /media/stock/xubuntu-9.04-alternate-i386.iso /mnt/</p></blockquote>
<p>Sur le cd les fichiers en questions se trouve dans le repertoire /install/netboot</p>
<blockquote><p> opensuse:/ # ls /mnt/install/netboot/ pxelinux.0  pxelinux.cfg  ubuntu-installer  version.info</p></blockquote>
<p>Revenons sur le serveur PXE sysrescuecd Les fichiers necessaires au boot se situent dans /tftpboot J&#8217;ai donc simplement supprimer tout le contenu de /tftpboot</p>
<blockquote><p> root@sysresccd / %rm -rf /tftpboot/*</p></blockquote>
<p>et copié les fichier du netboot ubuntu dans ce dossier.</p>
<blockquote><p> opensuse:/ #scp -r /mnt/install/netboot/* 10.0.0.54:/tftpboot/</p></blockquote>
<p>et voilà</p>
<blockquote><p> root@sysresccd /tftpboot % ls pxelinux.0  pxelinux.cfg  ubuntu-installer  version.info</p></blockquote>
<p>Notre serveur pxe est prêt.</p>
<p>il ne reste plus qu&#8217;a lancer le client lorsque vous booterez sur le serveur, une belle install d&#8217;ubuntu va apparaitre.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=33</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mise en place d&#8217;un forum en cluster ( equilibrage de charge, LVM2 + DRBD + OCFS2)</title>
		<link>http://blog.info16.fr/?p=32</link>
		<comments>http://blog.info16.fr/?p=32#comments</comments>
		<pubDate>Fri, 26 Jun 2009 08:23:00 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=32</guid>
		<description><![CDATA[Il y avait un moment que j&#8217;avais pas écris un petit billet. J&#8217;en profiste pour faire un petit mémo sur la mise en place d&#8217;un forum en cluster sur 2 serveurs dédiés type Dédibox. je dresse rapidement le tableau. Etant beta-testeur Dedibox, j&#8217;ai la chance de disposer de pas mal de serveurs dédiés de tests. [...]]]></description>
			<content:encoded><![CDATA[<p>Il y avait un moment que j&#8217;avais pas écris un petit billet. J&#8217;en profiste pour faire un petit mémo sur la mise en place d&#8217;un forum en cluster sur 2 serveurs dédiés type Dédibox. je dresse rapidement le tableau. Etant beta-testeur Dedibox, j&#8217;ai la chance de disposer de pas mal de serveurs dédiés de tests. Je me suis donc amusé à installé un Forum PunBB sur un cluster Actif/Actif répliqué par DRBD, et permettant les écritures concurentes grace au systeme de fichier cluster OCFS2. Un schéma vaut mieux qu&#8217;un grand discours.</p>
<p><img src="http://info16.fr/ftpl/infraocfs2.JPG" alt="" /></p>
<p>Comme vous pouvez le constater, je suis parti sur le principe que pour redonder un forum, tel que punbb il faut redonder /var/www et /var/lib/mysql. Il y a pas mal de moyen pour redonder un block device, j&#8217;ai otper pour DRBD DRBD (Distributed Replicated Block Device) est un outil qui permet de synchroniser (par réplication) des périphériques de stockage (disque dur, partition, volume logique, etc.) entre deux ordinateurs via le réseau. Cette synchronisation se fait : en temps réel : elle se fait à la volée, pendant que les données sont modifiées de manière transparente : les applications, qui enregistrent leurs données sur le périphérique de stockage répliqué, le font sans même savoir qu&#8217;il s&#8217;agit d&#8217;une unité de stockage spéciale. de manière synchrone ou asynchrone : en fonctionnement synchrone, l&#8217;écriture est déclarée terminée lorsque les données sont écrites localement ET que la synchronisation est terminée. En fonctionnement asynchrone, l&#8217;écriture est déclarée terminée lorsque les données sont écrites localement (sur le serveur primaire et pas sur le serveur de réplique) uniquement. (cf ubuntu.fr) Plantons le tableau. Je suis parti de deux dédibox XL (raid0 pour le stockage) Mon partitionement:</p>
<blockquote><p>
Node1=<br />
Disk /dev/md0: 131 MB, 131530752 bytes (/boot)<br />
Disk /dev/md1: 42.9 GB, 42935779328 bytes (/)(raid0)<br />
Disk /dev/md2: 952.6 GB, 952684642304 bytes (vg0) (raid0)<br />
Node2=<br />
Disk /dev/md0: 131 MB, 131530752 bytes (/boot)<br />
Disk /dev/md1: 42.9 GB, 42935779328 bytes (/)(raid0)<br />
Disk /dev/md2: 952.6 GB, 952684642304 bytes (vg0) (raid0)<br />
///<br />
On peut déjà apprécier l&#8217;éfficacité de Raid logiciel sous linux sur /dev/md2<br />
///<br />
Disk /dev/md2: 952.6 GB, 952684642304 bytes<br />
root@node1:~# dd if=/dev/md2 of=/dev/zero bs=1M iflag=direct<br />
1111+0 records in<br />
1110+0 records out<br />
1163919360 bytes (1,2 GB) copied, 6,55167 s, 178 MB/s
</p></blockquote>
<p>Ca peut aller. Je suis parti d&#8217;une distribution Ubuntu 8.04 LTS 64bit kernel 2.6.24-24-server sur les 2 noeuds. &#8211; Création des LVM.</p>
<blockquote><p> root@node1:~# apt-get install lvm2 </p></blockquote>
<p>verifier bien que le module dm_mod est chargé, sinon chargez le</p>
<blockquote><p> dm_mod                 78200  7 dm_mirror,dm_snapshot </p></blockquote>
<blockquote><p> root@node1:~# pvcreate /dev/md2 </p></blockquote>
<blockquote><p> root@node1:~# lvcreate -L2G -nlv0 vg0 Logical volume &quot;lv0&quot; created </p></blockquote>
<blockquote><p> root@node1:~# lvcreate -L2G -nlv1 vg0 Logical volume &quot;lv1&quot; created </p></blockquote>
<p>nos deux Logcial volume sont crées. destinés à contenir respectivement drbd0 et drbd1 soit /var/www et /var/lib/mysql Creer la même arborescence lv sur les 2 noeuds.</p>
<ul>
<li>Installation de DRBD</li>
</ul>
<p>Afin que l&#8217;installation de DRBD se passe bien, il faut vérifier quelques petits prérequis. Tout d&#8217;abord avoir les outils de compilation.</p>
<blockquote><p> root@node1:~# apt-get install build-essential </p></blockquote>
<p>Vérifier aussi d&#8217;avoir les sources de votre kernel ou du moins les header.</p>
<blockquote><p> root@node1:~#apt-get install kernel-headers-$(uname -r) root@node1:~#apt-get install flex</p></blockquote>
<p>Télécharger les sources de drbd sur le site http://oss.linbit.com/drbd</p>
<blockquote><p> root@node1:/usr/src# tar xvfz drbd-8.3.1.tar.gz </p></blockquote>
<blockquote><p> root@node1:/usr/src# cd drbd-8.3.1 root@node1:/usr/src/drbd-8.3.1# make clean all </p></blockquote>
<p>Véirifier que tout se compile bien. Installer maintenant DRBD</p>
<blockquote><p> root@node1:/usr/src#make install -j4 root@node1:/usr/src#make install-tools -j4 </p></blockquote>
<p>attaquons nous au fichier de configuration de drbd situé dans /etc/drbd.conf</p>
<blockquote><p>
common {<br />
protocol C;<br />
startup {<br />
#become-primary-on both;<br />
wfc-timeout 30;<br />
degr-wfc-timeout 30;<br />
}<br />
disk {<br />
on-io-error detach;<br />
no-disk-flushes;<br />
no-md-flushes;<br />
no-disk-barrier;<br />
no-disk-drain;<br />
}<br />
net {<br />
max-buffers 16384;<br />
max-epoch-size 16384;<br />
unplug-watermark 128;<br />
sndbuf-size 8M;<br />
ko-count 6;<br />
allow-two-primaries;<br />
after-sb-0pri discard-zero-changes;<br />
after-sb-1pri violently-as0p;<br />
after-sb-2pri violently-as0p;<br />
rr-conflict violently;<br />
}<br />
syncer {<br />
rate 100M;<br />
al-extents 1801;<br />
verify-alg crc32c;<br />
}<br />
}<br />
resource r0 {<br />
on node1 {<br />
device    /dev/drbd0;<br />
disk      /dev/vg0/lv0;<br />
address   88.191.84.35:7789;<br />
meta-disk internal;<br />
}<br />
on node2 {<br />
device    /dev/drbd0;<br />
disk      /dev/vg0/lv0;<br />
address   88.191.84.36:7789;<br />
meta-disk internal;<br />
}<br />
}<br />
resource r1 {<br />
on node1 {<br />
device    /dev/drbd1;<br />
disk      /dev/vg0/lv1;<br />
address   88.191.84.35:7790;<br />
meta-disk internal;<br />
}<br />
on node2 {<br />
device    /dev/drbd1;<br />
disk      /dev/vg0/lv1;<br />
address   88.191.84.36:7790;<br />
meta-disk internal;<br />
}<br />
}
</p></blockquote>
<p>Pareil sur le node2</p>
<blockquote><p> root@node2#drbdadm create-md r0 r1 </p></blockquote>
<blockquote><p> root@node2#drbdadm up r0 r1 </p></blockquote>
<p>Puis nous synchronisons les ressources. Sur le node 1 nous lançons</p>
<blockquote><p> root@node1#drbdadm &#8212; &#8211;overwrite-data-of-peer primary r0 r1 </p></blockquote>
<p>On peut alors voir les ressources en cours de synchronisation.</p>
<blockquote><p>
Every 1,0s: cat /proc/drbd<br />
version: 8.3.1 (api:88/proto:86-89)<br />
GIT-hash: fd40f4a8f9104941537d1afc8521e584a6d3003c build by root@sd-15181, 2009-06-21 20:22:50<br />
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r&#8212;-<br />
ns:3157114 nr:98131 dw:1082377 dr:2373543 al:226 bm:133 lo:0 pe:1464 ua:998 ap:1 ep:1 wo:n oos:2027040<br />
[&gt;....................] sync&#8217;ed:  3.6% (2027040/2097052)K<br />
finish: 0:05:07 speed: 6,452 (5,832) K/sec<br />
1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r&#8212;-<br />
ns:2640518 nr:125231 dw:593569 dr:5326403 al:92 bm:133 lo:0 pe:1472 ua:1006 ap:1 ep:1 wo:n oos:2027760<br />
[&gt;....................] sync&#8217;ed:  3.4% (2027760/2097052)K<br />
finish: 0:05:07 speed: 6,448 (5,772) K/sec
</p></blockquote>
<p>On peut remarquer qu&#8217;entre les 2 dedibox la synchronisation se fait 11Mo/s on sature le lien 100Mb/s ( rien ne nous empeche de limiter ce débit dans le drbd.conf)</p>
<ul>
<li>Passons maintenant à OCFS2.</li>
</ul>
<p>Si on montait directement nos bases de données et nos sites sur les drbd après les avoir formatés avec un file sytem non clusterisé cela ne fonctionnerait pas. Car le but est que le forum puisque ecrire dans la base des deux cotés que les deux serveurs soient actifs en même temps et aient un accès concurrents au stockage. Pour cela il nous faut un systeme de fichier qui gere les accès concurrents sur un même espace de stockage (es 2 plus connus sont OCFS2 et GFS) installons OCFS2</p>
<blockquote><p> root@node1#apt-get install ocfs2-tools </p></blockquote>
<p>On créer le répertoire /etc/ocfs2</p>
<blockquote><p> root@node1#mkdir /etc/ocfs2 </p></blockquote>
<p>On édite un fichier cluster.conf (identique sur les deux noeuds)</p>
<blockquote><p>
node:<br />
ip_port = 7777<br />
ip_address = 88.191.84.35<br />
number = 0<br />
name = node1<br />
cluster = ocfs2<br />
node:<br />
ip_port = 7777<br />
ip_address = 88.191.84.36<br />
number = 1<br />
name = node2<br />
cluster = ocfs2<br />
cluster:<br />
node_count = 2<br />
name = ocfs2
</p></blockquote>
<p>Changer la valeur “O2CB_ENABLED=false” en “O2CB_ENABLED=true” dans /etc/default/o2cb</p>
<p>On demmarre alors le cluster OCFS2</p>
<p>on peut alors formater nos devices drbd en ocfs2</p>
<blockquote><p> root@node1#mkfs -t  ocfs2 /dev/drbd0 </p></blockquote>
<blockquote><p> root@node1#mkfs -t  ocfs2 /dev/drbd1 </p></blockquote>
<p>Le faire sur un seul noeud suffit puisque drbd à dejà repliqué ce file system de l&#8217;autre coté.</p>
<p>Voilà le cluster est prêt à recevoir les données.</p>
<p>Pour ma part j&#8217;avais installé lamp avant et j&#8217;ai transferé les données sur les nouveaux montages.</p>
<p>root@node1#mount /dev/drbd0 /var/www root@node1#mount /dev/drbd1 /var/lib/mysql</p>
<p>Par contre il est important de désactiver tous les system de cache dans mysql. Car si ocfs2 est capable de gerer la cohérence sur son systeme disk, evidemment il ne peut pas gerer la cohérence entre les caches des deux serveurs Mysql qui tournent en même temps. En tatonnant un peu, j&#8217;ai réussi à faire demmarer les deux serveur mysql avec ce fichier de conf.</p>
<blockquote><p>
#<br />
# The MySQL database server configuration file.<br />
#<br />
# You can copy this to one of:<br />
# &#8211; &laquo;&nbsp;/etc/mysql/my.cnf&nbsp;&raquo; to set global options,<br />
# &#8211; &laquo;&nbsp;~/.my.cnf&nbsp;&raquo; to set user-specific options.<br />
#<br />
# One can use all long options that the program supports.<br />
# Run program with &#8211;help to get a list of available options and with<br />
# &#8211;print-defaults to see which it would actually understand and use.<br />
#<br />
# For explanations see<br />
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html</p>
<p># This will be passed to all mysql clients<br />
# It has been reported that passwords should be enclosed with ticks/quotes<br />
# escpecially if they contain &laquo;&nbsp;#&nbsp;&raquo; chars&#8230;<br />
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.<br />
[client]<br />
port		= 3306<br />
socket		= /var/run/mysqld/mysqld.sock</p>
<p># Here is entries for some specific programs<br />
# The following values assume you have at least 32M ram</p>
<p># This was formally known as [safe_mysqld]. Both versions are currently parsed.<br />
[mysqld_safe]<br />
socket		= /var/run/mysqld/mysqld.sock<br />
nice		= 0</p>
<p>[mysqld]<br />
#<br />
# * Basic Settings<br />
#</p>
<p>#innodb_data_home_dir =<br />
#<br />
## Le fichier de donnÃ© doivent contenir vos donnÃ© et index.<br />
#innodb_data_file_path = /ibdata/ibdata1:2000M;<br />
##<br />
## Utilisez un buffer de taille 50 Ã 0 % de votre mÃ©ire serveur<br />
## mais assurez vous sous Linux que l&#8217;utilisation totale est infÃ©eure Ã  Go<br />
#set-variable = innodb_buffer_pool_size=1G<br />
#set-variable = innodb_additional_mem_pool_size=20M<br />
#innodb_log_group_home_dir = /dr3/iblogs<br />
##<br />
## innodb_log_arch_dir doit Ãªe le mÃª que  innodb_log_group_home_dir<br />
## (starting from 4.0.6, you can omit it)<br />
#innodb_log_arch_dir = /dr3/iblogs<br />
#set-variable = innodb_log_files_in_group=2<br />
##<br />
## Utilisez un fichier de log de taille 15 % du buffer mÃ©ire<br />
#set-variable = innodb_log_file_size=250M<br />
#set-variable = innodb_log_buffer_size=8M<br />
##<br />
#innodb_flush_log_at_trx_commit=1<br />
#set-variable = innodb_lock_wait_timeout=50<br />
##<br />
## DÃ©mmentez les prochaines lignes, si vous voulez les utiliser<br />
##innodb_flush_method=fdatasync<br />
##set-variable = innodb_thread_concurrency=5<br />
#</p>
<p>#<br />
# * IMPORTANT<br />
#   If you make changes to these settings and your system uses apparmor, you may<br />
#   also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.<br />
#</p>
<p>user		= mysql<br />
pid-file	= /var/run/mysqld/mysqld.pid<br />
socket		= /var/run/mysqld/mysqld.sock<br />
port		= 3306<br />
basedir		= /usr<br />
datadir		= /var/lib/mysql<br />
tmpdir		= /tmp<br />
language	= /usr/share/mysql/english<br />
skip-external-locking = 0<br />
#<br />
# Instead of skip-networking the default is now to listen only on<br />
# localhost which is more compatible and is not less secure.<br />
bind-address		= 127.0.0.1<br />
#<br />
# * Fine Tuning<br />
#<br />
key_buffer		= 0<br />
key_buffer_size		= 0<br />
max_allowed_packet	= 16M<br />
thread_stack		= 128K<br />
thread_cache_size	= 0<br />
#max_connections        = 100<br />
#table_cache            = 64<br />
#thread_concurrency     = 10<br />
#<br />
# * Query Cache Configuration<br />
#<br />
query_cache_type 	= 0<br />
query_cache_limit       = 0<br />
query_cache_size        = 0<br />
#<br />
# * Logging and Replication<br />
#<br />
# Both location gets rotated by the cronjob.<br />
# Be aware that this log type is a performance killer.<br />
log		= /var/log/mysql/mysql.log<br />
#<br />
# Error logging goes to syslog. This is a Debian improvement <img src='http://blog.info16.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
#<br />
# Here you can see queries with especially long duration<br />
#log_slow_queries	= /var/log/mysql/mysql-slow.log<br />
#long_query_time = 2<br />
#log-queries-not-using-indexes<br />
#<br />
# The following can be used as easy to replay backup logs or for replication.<br />
# note: if you are setting up a replication slave, see README.Debian about<br />
#       other settings you may need to change.<br />
#server-id		= 1<br />
#log_bin			= /var/log/mysql/mysql-bin.log<br />
expire_logs_days	= 10<br />
max_binlog_size         = 100M<br />
#binlog_do_db		= include_database_name<br />
#binlog_ignore_db	= include_database_name<br />
#<br />
# * BerkeleyDB<br />
#<br />
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.<br />
skip-bdb<br />
#<br />
# * InnoDB<br />
#<br />
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.<br />
# Read the manual for more InnoDB related options. There are many!<br />
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.<br />
#skip-innodb<br />
#<br />
# * Security Features<br />
#<br />
# Read the manual, too, if you want chroot!<br />
# chroot = /var/lib/mysql/<br />
#<br />
# For generating SSL certificates I recommend the OpenSSL GUI &laquo;&nbsp;tinyca&nbsp;&raquo;.<br />
#<br />
# ssl-ca=/etc/mysql/cacert.pem<br />
# ssl-cert=/etc/mysql/server-cert.pem<br />
# ssl-key=/etc/mysql/server-key.pem</p>
<p>[mysqldump]<br />
quick<br />
quote-names<br />
max_allowed_packet	= 16M</p>
<p>[mysql]<br />
#no-auto-rehash	# faster start of mysql but no tab completition</p>
<p>[isamchk]<br />
key_buffer		= 0</p>
<p>#<br />
# * NDB Cluster<br />
#<br />
# See /usr/share/doc/mysql-server-*/README.Debian for more information.<br />
#<br />
# The following configuration is read by the NDB Data Nodes (ndbd processes)<br />
# not from the NDB Management Nodes (ndb_mgmd processes).<br />
#<br />
# [MYSQL_CLUSTER]<br />
# ndb-connectstring=127.0.0.1</p>
<p>#<br />
# * IMPORTANT: Additional settings that can override those from this file!<br />
# The files must end with &#8216;.cnf&#8217;, otherwise they&#8217;ll be ignored.<br />
#<br />
!includedir /etc/mysql/conf.d/
</p></blockquote>
<p>J&#8217;ai alors installé le forum PunBB sur un noeud, qui s&#8217;est bien sur instantanément répliqué sur l&#8217;autre.</p>
<p>Quand j&#8217;ai parlé d&#8217;équilibrage de charge dans le titre, je l&#8217;obtient en utilisant simplement un round robin au niveau DNS. C&#8217;est à dire 2 enregistrement A avec le meme nom qui pointent sur les 2 ip de mon cluster.</p>
<blockquote><p> forum.info16.fr.        IN      A       88.191.84.35 forum.info16.fr.        IN      A       88.191.84.36 </p></blockquote>
<p>Ainsi aléatoirement un utilisateur cherchant à se connecter au forum forum.info16.fr sera diriger vers 88.191.84.35 ou 88.191.84.36 Attention on ne gere pas du tout le failover. Si un serveur plante l&#8217;utilisateur aura une chance sur 2 d&#8217;etre dirigé vers le site innaccessible.</p>
<p>Et même si on essait de gerer le DNS afin qu&#8217;il detecte si un serveur est innaccessible et modifie ces enregistrements en conséquence, on ne pourra jamais gérer le cache DNS des clients qui se connectent&#8230; Ils auront une ip innaccessible jusqu&#8217;au TTL. d&#8217;ou l&#8217;importance de mettre des TTL bas pour les round robin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=32</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation de OpenSuse sur une dédibox</title>
		<link>http://blog.info16.fr/?p=31</link>
		<comments>http://blog.info16.fr/?p=31#comments</comments>
		<pubDate>Sun, 31 Aug 2008 14:07:00 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=31</guid>
		<description><![CDATA[Ce billet me sert de petit aide mémoire pour installer une OpenSure sur un serveur dédié type dédibox&#8230; Vous vous demandez peut être ou est la difficulté? Et bien le problème est que Suse ne fait pas partie des distributions installable dans la console de gestion de dédibox. Donc problème, comment installer une distribution quand [...]]]></description>
			<content:encoded><![CDATA[<p>Ce billet me sert de petit aide mémoire pour installer une OpenSure sur un serveur dédié type dédibox&#8230; Vous vous demandez peut être ou est la difficulté? Et bien le problème est que Suse ne fait pas partie des distributions installable dans la console de gestion de dédibox. Donc problème, comment installer une distribution quand elle ne fait pas partie du package de l&#8217;herbergeur?</p>
<p>Heureusement Novell à penser à tout la Netinstall</p>
<p>Ce dont vous avez besoin pour réaliser une installation par le réseau est de démarrer le noyau d&#8217;installation ainsi que le programme d&#8217;installation initrd sur la machine distante. Vous avez aussi besoin de connaître l&#8217;adresse IP que l&#8217;ordinateur aura. Supposons que c&#8217;est une adresse IP fixe. Si vous utilisez DHCP, vous pouvez omettre la configuration du réseau. Tout d&#8217;abord, copier l&#8217;image du noyau et le programme d&#8217;installation dans votre répertoire /boot :</p>
<p>Tout d&#8217;abord installer une distribution proposée par dédibox par exemple une Debian. Booter sur le systeme installé.</p>
<p>On peut commencer:</p>
<p>Exemple pour la dernière version de développement:</p>
<blockquote><p>
cd /tmp<br />
wget http://mirrors.kernel.org/opensuse/distribution/SL-OSS-factory/inst-source/boot/i386/loader/linux<br />
wget http://mirrors.kernel.org/opensuse/distribution/SL-OSS-factory/inst-source/boot/i386/loader/initrd<br />
cp linux /boot/vmlinuz.install<br />
cp initrd /boot/initrd.install
</p></blockquote>
<p>Vous avez maintenant le kernel et l&#8217;initrd qui permette de booter sur un systeme minimum et lancer l&#8217;installation par le réseau.</p>
<p>Afin de lancer l&#8217;install par le réseau il faut modifier le grub afin de lancer SSH et d&#8217;indiquer le chemin réseau de l&#8217;install</p>
<blockquote><p> vim /boot/grub/menu.lst </p></blockquote>
<p>On rajoute alors les lignes du type:</p>
<blockquote><p>
title Boot &#8212; SUSE LINUX DEVEL INSTALL<br />
root (hd0,0)<br />
 kernel /boot/vmlinuz.install usessh=1 sshpassword=&nbsp;&raquo;pass&nbsp;&raquo; install=http://204.152.191.7/opensuse/distribution/SL-OSS-factory/inst-source hostip=192.168.1.1 netmask=255.255.255.0 gateway=192.168.1.254 nameserver=192.168.1.254<br />
 initrd /boot/initrd.install
</p></blockquote>
<p>bien sur ceci si votre grub est installé sur la première partition du premier disque (hd0,0) = (sda1) et si votre ip est 192.168.1.1/24 votre passerelle 192.168.1.254 et votre dns 192.168.1.254</p>
<p>Mettre cette entrée en premier afin que le boot se fasse avec ces options. Si tout se passe bien vous devriez bientot pinger a nouveau votre serveur: Il est en train de booter sur le kernel minimal d&#8217;installation.</p>
<p>Après quelques minutes vous pourrez vous connecter en SSH sur le serveur</p>
<blockquote><p> ssh -X 192.168.1.1 </p></blockquote>
<p>-X pour exporter aussi la session graphique. une fois connecté vous pouvez lancer yast.</p>
<p>L&#8217;installation peut commencer comme d&#8217;habitude</p>
<p><img src="http://info16.fr/ftpl/images/yast2.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=31</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expérimentation de NBD (Network Block device), ou comment exporter un périphérique type bloc par le réseau</title>
		<link>http://blog.info16.fr/?p=30</link>
		<comments>http://blog.info16.fr/?p=30#comments</comments>
		<pubDate>Sun, 22 Jun 2008 16:26:00 +0000</pubDate>
		<dc:creator>Bartounet</dc:creator>
				<category><![CDATA[Linux/Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.info16.fr/?p=30</guid>
		<description><![CDATA[Il y a quelque temps, j&#8217;ai fait un petit article sur le protocole isci et l&#8217;export de périphérique bloc via ce protocole&#8230; J&#8217;ai toutefois découvert il y a peu de temps une facon encore plus simple d&#8217;exporter un Block device par le réseau : NBD ou network block device
Je vous laisse installer le nbd-server et [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a quelque temps, j&#8217;ai fait un petit article sur le protocole isci et l&#8217;export de périphérique bloc via ce protocole&#8230; J&#8217;ai toutefois découvert il y a peu de temps une facon encore plus simple d&#8217;exporter un Block device par le réseau : NBD ou network block device</p>
<p>Je vous laisse installer le nbd-server et le nbd-client sur votre distribution préférée&#8230; Pour ma part j&#8217;ai fait les tests sur une OpenSuse 11 pour le serveur et une Ubuntu Hardy pour le client&#8230; Que se soit avec yast ou a coup d&#8217;apt-get vous installerez facilement les paquets nbd.</p>
<p>Bref&#8230;</p>
<p>Si vous avez lu mon blog en entier, vous savez comment mettre en place LVM2, dont je me suis servi pour faire mes test, c&#8217;est tellement pratique de disposer d&#8217;un périphérique block avec une simple commande&#8230;</p>
<p>Sur le Serveur: Commencons par créer un block device avec LVM2</p>
<blockquote><p> xenserver:~ # lvcreate -L1G -ndisk vg0   Logical volume &quot;disk&quot; created </p></blockquote>
<p>Exportons le directement via nbd</p>
<blockquote></blockquote>
<blockquote><p> xenserver:~ # nbd-server 3000 /dev/vg0/disk </p></blockquote>
<p>La commande est simple, on demande à nbd-server d&#8217;exporter le block-device /dev/vg0/disk via le port 3000</p>
<p>Nous pouvons vérifier que nbd-server écoute bien sur le port 3000 et n&#8217;attend plus que la connexion de son client</p>
<blockquote><p> xenserver:~ # netstat -anp | grep 3000 tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      16358/nbd-server </p></blockquote>
<p>Passons maintenant au client: Sur Ubuntu j&#8217;ai dut installer lvm2, (noter que lvm2 n&#8217;est pas du tout indispensable, c&#8217;est juste que je le trouve très souple à utiliser pour mes tests, mais rien ne vous empêche de créer des periphérique via losetup et les periphérique /dev/loop) Il a fallut bien sur installer nbd-client et dans la foulée j&#8217;ai installé mdadm pour gerer le raid&#8230;</p>
<p>Bref, commencons par se connecter au serveur et importons notre block device&#8230;</p>
<blockquote><p> root@bartounet:/media# nbd-client 192.168.1.115 3000 /dev/nbd2 Negotiation: ..size = 1048576KB bs=1024, sz=1048576 </p></blockquote>
<p>Ici on se connecte sur le port 3000 du serveur et on  importe le nbd en local sur /deb/nbd2</p>
<p>Voila le tour est joué notre device /dev/nbd2 est vu comme un simple device local de notre systeme, mais est en réalité exporté par le réseau&#8230;</p>
<p>Comme j&#8217;aime faire quelques petits tests, nous allons pas nous arreter là, je vais tester la vitesse de ce block-device.</p>
<p>Pour cela rien de plus simple, un petit dd va nous permettre de voir la vitesse&#8230;</p>
<blockquote><p> root@bartounet:/media# dd if=/dev/nbd2 of=/dev/zero bs=1M 1024+0 records in 1024+0 records out 1073741824 bytes (1,1 GB) copied, 13,3121 s, 80,7 MB/s </p></blockquote>
<p>C&#8217;est pas mal, je sature presque mon lien réseau, puisque mes deux postes sont réliés via un réseau gigabits donc en théorie pouvant atteindre les 120Mo/s Ceci est un test en lecture sur /dev/nbd2</p>
<p>Pour nous en convaincre un petit iperf entre les deux machines:</p>
<blockquote><p>
root@bartounet:/media# iperf -cxenserver<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Client connecting to xenserver, TCP port 5001<br />
TCP window size: 16.0 KByte (default)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
[  3] local 192.168.1.100 port 35157 connected with 192.168.1.115 port 5001<br />
[  3]  0.0-10.0 sec  1.09 GBytes    936 Mbits/sec
</p></blockquote>
<p>En effet on a bien un lien gigabit entre les deux.. <img src='http://blog.info16.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Pour être transparent je souhaite donner les performances disques disponibles pour les deux machines:</p>
<p>Les configs:</p>
<p>Xenserver: AMD Athlon 64 X2 5000+ Black edition à 2600Mhz 2Go DDR2 2 disques sata WDC WD1600YS (raid edition 160Go) en RAID0 logiciel</p>
<blockquote><p> xenserver:~ # dd if=/dev/md0 of=/dev/zero bs=2M 1260388352 bytes (1.3 GB) copied, 10.4169 s, 121 MB/s </p></blockquote>
<p>Bartounet: Intel Quad Core Q6600 G0 à 2400Mhz 2Go DDR2 2 disques sata Hitachi T7K500 250Go  Raid0 matériel (puce raid Asus P5WDh deluxe)</p>
<blockquote><p> root@bartounet:/media# dd if=/dev/sda of=/dev/zero bs=2M 616562688 bytes (617 MB) copied, 4,90903 s, 126 MB/s </p></blockquote>
<blockquote></blockquote>
<p>Pour finir je me suis dit mais pourquoi pas faire un raid entre un block-device local sur BARTOUNET et un block-device nbd.</p>
<p>Pour cela je crée un block-device local sur bartounet toujours à l&#8217;aide de lvm2</p>
<blockquote><p> root@bartounet:/media# lvcreate -L1G -nraid vgxen   Logical volume &quot;raid&quot; created </p></blockquote>
<p>Maintenant nous pouvons creer le périphérique raid avec mdadm</p>
<blockquote><p>
root@bartounet:/media# modprobe raid0<br />
root@bartounet:/media# mdadm &#8211;create /dev/md1 &#8211;level=0 &#8211;raid-device=2 /dev/vgxen/raid /dev/nbd2<br />
mdadm: array /dev/md1 started.
</p></blockquote>
<p>Notre raid est bien monté</p>
<blockquote>
<p>root@bartounet:/media# mdadm &#8211;detail /dev/md1<br />
/dev/md1:<br />
        Version : 00.90.03<br />
  Creation Time : Sun Jun 22 19:36:35 2008<br />
     Raid Level : raid0<br />
     Array Size : 2097024 (2048.22 MiB 2147.35 MB)<br />
   Raid Devices : 2<br />
  Total Devices : 2<br />
Preferred Minor : 1<br />
    Persistence : Superblock is persistent</p>
<p>    Update Time : Sun Jun 22 19:36:35 2008<br />
          State : clean<br />
 Active Devices : 2<br />
Working Devices : 2<br />
 Failed Devices : 0<br />
  Spare Devices : 0</p>
<p>     Chunk Size : 64K</p>
<p>           UUID : 6b2edcd4:b994fefd:20bc8809:0761db64 (local to host bartounet)<br />
         Events : 0.1</p>
<p>    Number   Major   Minor   RaidDevice State<br />
       0     254        1        0      active sync   /dev/vgxen/raid<br />
       1      43        2        1      active sync   /dev/nbd2
</p></blockquote>
<p>testons tout de suite la vitesse en lecture sur ce raid0 qui je vous rappelle est un raid0 entre un periphérique local /dev/vgxen/raid et un network block device /dev/nbd2 (exporté de Xenserver)</p>
<blockquote><p> root@bartounet:/media# dd if=/dev/md1 of=/dev/zero 4194048+0 records in 4194048+0 records out 2147352576 bytes (2,1 GB) copied, 12,8236 s, 167 MB/s </p></blockquote>
<p>Et voila on obtient un périphérique exploitant la vitesse des deux block device ( un local et un réseau) Marrant non ?</p>
<p>Bon la je me suis attaché aux performances mais rien ne vous empeche de faire du mode sécurisé en raid1 ou plus&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.info16.fr/?feed=rss2&amp;p=30</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
