Administration système Linux
Mohamed Yacoubi

Par Mohamed Yacoubi

Xen vif-route and private lan

Xen_logo.png
J'utilisais depuis quelques années un lan privé entre mes DomU et le Dom0 (le Dom0 génère les graphs Munin) qui fonctionnait sans problème en bridge mais suite à l'allocation de ma plage IPv6 routé, j'ai du modifier ma configuration Xen en mode routé (vif-route).

En mode routé je devais exécuter des commandes manuellement sur le Dom0 afin de modifier le routage de l'interface eth1.

ip route del 10.41.233.XXX dev blog.1  scope link  src 78.41.233.XXX
ip route add 10.41.233.XXX dev blog.1  scope link  src 10.41.233.XXX

Ce fonctionnement me permettait des communications DomU <=> Dom0 mais pas DomU <=> DomU (perte de paquet aléatoire).

Suite à la réinstallation de mon hyperviseur Xen en 64Bits (ca m'aura pris du temps pour trouver la motivation), je me suis décidé à tout remettre au propre. (je traine des patchs homemade depuis Xen-3.2.1)

Voici donc ma nouvelle configuration permettant l'utilisation du vif-route et du vif-bridge simultanément, pour éviter d'éventuel bug j'ai préféré créer une interface dummy plutôt que d'ajouter un alias à l'interface loopback.

  • /etc/conf.d/net
config_dummy0=( "10.41.233.1/24" )
  • /etc/xen/scripts/network-custom
#!/bin/sh
dir=$(dirname "$0")
"$dir/network-route" "$@" netdev=eth0
"$dir/network-bridge" "$@" netdev=dummy0 bridge=private
  • /etc/xen/scripts/vif-custom
#!/bin/sh
dir=$(dirname "$0")
IFNUM=$(echo ${vif}|> | cut -d. -f2)
 
if [ "$IFNUM" = "0" ] ; then
	# Interface 0 = public lan
	"$dir/vif-route" "$@"
else
	# Sinon private lan
	"$dir/vif-bridge" "$@"
fi
  • /etc/xen/xend-config.sxp

On commente l'ensemble des autres scripts réseaux (bridge, route, nat)

(network-script network-custom)
(vif-script     vif-custom)

On relance xend

/etc/init.d/xend restart

A ce stade vous devriez avoir une interface nommée private disposant de l'IP privée assignée.

15: private: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 16:c7:56:f6:4d:3c brd ff:ff:ff:ff:ff:ff
    inet 10.41.233.1/24 brd 10.41.233.255 scope global private
    inet6 fe80::14c7:56ff:fef6:4d3c/64 scope link 
       valid_lft forever preferred_lft forever

Il vous suffit à présent d'adopter cette configuration sur vos DomU.

vif = [ 'mac=XX:XX:XX:XX:XX:XX, ip=78.41.233.XXX', 'mac=XX:XX:XX:XX:XX:XX, ip=10.41.233.XXX, bridge=private' ]


Liens utiles :
- Xen Networking Examples

Système de fichier distribué Glusterfs - volume en striping

gluster_logo

La suite des tests gluster, nous attaquons la mise en place d'un volume en striping.
Les serveurs de fichiers dispose d'une partition de 10Go qui sera exporté.

filer-1 / # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  1.4G  8.0G  15% /
udev                   10M  116K  9.9M   2% /dev
shm                   249M     0  249M   0% /dev/shm
filer-2 ~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  1.4G  8.0G  15% /
udev                   10M  116K  9.9M   2% /dev
shm                   249M     0  249M   0% /dev/shm


Configuration de base :


Il faut dans un premier temps le pool de confiance si ce dernier n'existe pas.
La procédure est décrite dans l'article volume répliqué et distribué


Configuration d'un volume en striping :


Nous allons créer le volume stripé sur 2 serveurs de stockage, le but étant d' aggreger l'espace de stockage (Raid-0).

  • La création du volume est extrêmement simple :
filer-1 ~ # gluster volume create test-volume stripe 2 transport tcp filer-1:/mnt filer-2:/mnt
Creation of volume test-volume has been successful. Please start the volume to access data.
  • On vérifie le volume
filer-2 ~ # gluster volume info
Volume Name: test-volume
Type: Stripe
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: filer-1:/mnt
Brick2: filer-2:/mnt
  • A présent on démarre le volume
filer-2 ~ # gluster volume start test-volume
  • On monte le volume depuis les clients
client-1 ~ # mount -t glusterfs filer-1:7997:/test-volume /glusterfs
client-1 ~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.9G  1.6G  6.0G  22% /
udev                   10M  112K  9.9M   2% /dev
shm                   249M     0  249M   0% /dev/shm
filer-1:/test-volume   20G  2.8G   16G  15% /glusterfs

Nous disposons bien d'un volume strippé.

Test divers :

  • Test en ecriture.
client-1 ~ # for i in `seq 0 2`; do dd if=/dev/zero of=/glusterfs/wap$i.img bs=300M count=1; done
client-1 ~ # du -h /glusterfs/*
301M	/glusterfs/wap0.img
301M	/glusterfs/wap1.img
301M	/glusterfs/wap2.img
filer-1 ~ # du -h /mnt/*
151M	/mnt/wap0.img
151M	/mnt/wap1.img
151M	/mnt/wap2.img
filer-2 ~ # du -h /mnt/*        
151M	/mnt/wap0.img
151M	/mnt/wap1.img
151M	/mnt/wap2.img
  • Voyons comment réagi le volume en cas de panne sur l'un des filer.
client-1 ~ # echo 'abcdefghij' > /glusterfs/test
client-1 ~ # ls -l /glusterfs
total 8
-rw-r--r-- 1 root root 11 Nov 12 00:38 test
filer-1 / # ls -l /mnt/
total 8
-rw-r--r-- 1 root root 11 Nov 12 00:38 test
filer-1 / # cat /mnt/test 
abcdefghij
filer-1 / #
filer-2 ~ # ls -l /mnt/
total 4
-rw-r--r-- 1 root root 0 Nov 12 00:38 test
filer-2 ~ # cat /mnt/test 
filer-2 ~ #
  • Simulation de panne sur filer-2

On désactive le filer-2

filer-2 ~ # halt
Broadcast message from root (pts/0) (Sat Nov 12 00:40:50 2011):
The system is going down for system halt NOW!

On écrit sur le point de montage depuis le client

client-1 ~ # rm /glusterfs/test 
rm: cannot remove `/glusterfs/test': Transport endpoint is not connected
client-1 ~ # cat /glusterfs/test 
cat: /glusterfs/test: Transport endpoint is not connected
client-1 ~ # touch /glusterfs/test2
touch: cannot touch `/glusterfs/test2': Input/output error

On réactive filer-2 et on vérifie que tout est ok.

filer-2 ~ # ls -l /mnt/
total 4
-rw-r--r-- 1 root root 0 Nov 12 00:38 test

On écrit sur le point de montage depuis le client

client-1 ~ # touch /glusterfs/test3
client-1 ~ # ls -l /glusterfs
total 12
-rw-r--r-- 1 root root 11 Nov 12 00:38 test
-rw-r--r-- 1 root root  0 Nov 12 00:44 test3
  • Simulation de panne sur filer-1

On eteint filer-1

filer-1 / # halt
Broadcast message from root (pts/0) (Sat Nov 12 00:47:43 2011):
The system is going down for system halt NOW!

On effectue un accès depuis client-1

client-1 ~ # ls -l /glusterfs/
ls: cannot access /glusterfs/: Transport endpoint is not connected


Les fichiers sont stockés à 50% sur chacun des filers et les en cas de panne les conséquences sont catastrophique.
Le benchmark devrait être intéressant :)

Euro-Web devient Hegerys

Sous le giron du groupe Magic OnLine, Euro-Web devient Hegerys.

Communiqué de presse du 30 Novembre 2011 :

Bonjour,

Le 4 juillet 2011 dernier, nous vous annoncions la fusion d'Euro-Web avec l'activité hébergement de Magic OnLine, avec pour principal objectif d'accroître notre R&D afin de vous proposer de nouveaux services, tout en continuant à vous apporter des réponses rationnelles et économiques à vos besoins.

Quatre mois plus tard, nous avons le plaisir de vous annoncer la naissance de Hegerys : une nouvelle entité qui regroupe les deux activités d'hébergement du groupe Magic OnLine.

Cette nouvelle marque positionnera Hegerys comme un « pure player » de l'hébergement à valeur ajoutée opérant près de 4000 serveurs dans 5 datacenters et un réseau IP de 10 Gb/s.

Sur le plan opérationnel :

Hegerys est dirigé par les fondateurs d'Euro-Web et vos interlocuteurs techniques habituels restent bien évidemment les mêmes.
Le site internet d'Euro-Web sera transféré dans les jours qui viennent sur http://www.hegerys.com.
Votre espace client et vos identifiants clients sont inchangés : http://www.hegerys.com/clients/login.php5
Notre numéro de téléphone reste identique et vous pouvez continuer à nous contacter au 01.75.43.75.75.
Nos adresses emails restent identiques et seront transférées progressivement sur hegerys.com.
Comme vous le verrez à la visite du site http://www.hegerys.com, des nouveaux services viennent de voir le jour :

Cloud Hyper-V
Cloud VMWare
Cloud privé
Services Saas
Sécurité et Firewall

Toutes nos équipes se tiennent à votre disposition pour tout renseignement complémentaire.

Cordialement,
L'équipe Hegerys.

Système de fichier distribué Glusterfs - Benchmark replication distribuée

gluster_logo

Après la publication de la réplication distribuée, voici les premiers benchmarks.

Le protocole de test est le suivant :

  • Serveurs : Intel Core2 Quad Q9550 - 512Mo de RAM
  • Outil : fileop
  • Pas d'optimisation particulère
  • Création d'une arborescence de fichier de 4K (création de 20 répertoires contenant 20 répertoires contenant un fichier de 4K)
  • Création d'une arborescence de fichier de 40M (création de 6 répertoires contenant 6 répertoires contenant un fichier de 40M)
  • Comparatif : Écriture en local, via gluster puis NFS


1) Génération de l'arborescence 4K:

Test en local :

client-1 ~ # time ./fileop -d /glusterfs_local/ -f 20 -s 4k -e
 .       mkdir   chdir   rmdir  create    open    read   write   close    stat  access   chmod readdir  link    unlink  delete  Total_files
A   20   23960  381779   98668   16779  442536   63848   63694  389805  555721  490175  369310   70380  178352  241133   94628       8000 
 
real    0m54.757s
user    0m0.203s
sys     0m0.520s

Test via le protocole NFS :

client-1 ~ # mount | grep /glusterfs_nfs
78.41.XXX.XXX:/nfs on /glusterfs_nfs type nfs (rw,noatime,addr=78.41.XXX.XXX)
client-1 ~ # time ./fileop -d /glusterfs_nfs/ -f 20 -s 4k -e
 .       mkdir   chdir   rmdir  create    open    read   write   close    stat  access   chmod readdir  link    unlink  delete  Total_files
A   20     190   25031     273     154    6418   62354  163237  266426   12863  394146    4618    6265    1347     313     302       8000 
 
real	4m33.915s
user	0m0.030s
sys	0m0.080s

Test via le protocole Gluster :

client-1 ~ # mount | grep '/glusterfs'
filer-1:/test-volume on /glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
client-1 ~ # time ./fileop -d /glusterfs/ -f 20 -s 4k -e
 .       mkdir   chdir   rmdir  create    open    read   write   close    stat  access   chmod readdir  link    unlink  delete  Total_files
A   20    1362    3371    2398     835    2462    3411   16958    6960    2785    4124    1545    2840     945    1232    1188       8000 
 
real	1m59.461s
user	0m0.023s
sys	0m0.523s



2) Génération de l'arborescence 40M :

Test local :

client-1 ~ # time ./fileop -d /mnt/ -f 6 -s 40M -e
 .       mkdir   chdir   rmdir  create    open    read   write   close    stat  access   chmod readdir  link    unlink  delete  Total_files
A    6   71305  403178  105082   15906  113915       1      14  104410  520373  510405  367981  169848  202678  295200     875        216 
 
real	7m44.478s
user	0m27.758s
sys	0m15.576s

Test via le protocole NFS :

client-1 ~ # mount | grep /glusterfs_nfs
78.41.XXX.XXX:/nfs on /glusterfs_nfs type nfs (rw,noatime,addr=78.41.XXX.XXX)
client-1 ~ # time ./fileop -d /glusterfs_nfs/ -f 6 -s 40M -e
 .       mkdir   chdir   rmdir  create    open    read   write   close    stat  access   chmod readdir  link    unlink  delete  Total_files
A    6     306  153298     642      45    3070       1      26   90751   11435   13304    2221    8485    5251    3831     639        216 
 
real	7m23.497s
user	0m28.012s
sys	0m16.809s

Test via le protocole Gluster :

client-1 ~ # mount | grep '/glusterfs'
filer-1:/test-volume on /glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
client-1 ~ # time ./fileop -d /glusterfs -f 6 -s 40M -e
 .       mkdir   chdir   rmdir  create    open    read   write   close    stat  access   chmod readdir  link    unlink  delete  Total_files
 
A    6    1528  357139    2713      26     806       1       2    2558    4536    3942    2533    4365    1259    1870     424        216 
 
real	17m1.170s
user	0m27.895s
sys	0m8.719s

Système de fichier distribué Glusterfs - volume répliqué et distribué

gluster_logo

Après quelques temps d'absence je reprend les différents tests gluster, nous attaquons par la mise en place d'un volume répliqué distribué. Je passerais volontairement la mise en place du volume répliqué simple car ne présentant aucun intérêt pour mes besoins.

Configuration de base :


Nous allons créer dans un premier temps le pool de confiance. Lorsque vous démarrez le premier serveur, le pool de confiance se compose de ce serveur seul, il vous suffira alors d'ajouter depuis ce serveur le 2nd serveur de stockage puis depuis des serveurs déjà présent dans le pool d'ajouter les serveurs suivants afin de les autoriser à interagir entre eux.

filer-1 ~ # gluster peer probe filer-2
Probe successful
filer-2 ~ # gluster peer probe filer-1
Probe successful


Configuration d'un volume répliqué et distribué :


Nous allons commencer par le plus simple à savoir un volume répliqué et distribué sur 2 serveurs de stockage, le but étant d'avoir du master/master (Raid-1).

  • La création du volume est extrêmement simple :
filer-2 ~ # gluster volume create test-volume replica 2 transport tcp filer-1:/mnt filer-2:/mnt
Creation of volume test-volume has been successful. Please start the volume to access data.
  • On vérifie le volume
filer-2 ~ # gluster volume info
Volume Name: test-volume
Type: Replicate
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: filer-1:/mnt
Brick2: filer-2:/mnt
  • A présent on démarre le volume
filer-2 ~ # gluster volume start test-volume
  • On monte le volume depuis les clients
client-1 ~ # mount -t glusterfs filer-1:7997:/test-volume /glusterfs
client-1 ~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.9G  1.3G  6.3G  17% /
udev                   10M  112K  9.9M   2% /dev
shm                   249M     0  249M   0% /dev/shm
filer-1:/test-volume  9.9G  1.4G  8.1G  15% /glusterfs

Test divers :

  • On vérifie que le volume est bien redondant
client-1 ~ # touch /glusterfs/test
client-1 ~ # ls -l  /glusterfs/
total 0
-rw-r--r-- 1 root root 0 Mar  8 20:39 test
filer-1 ~ # ls -l /mnt/
total 0
-rw-r--r-- 1 root root 0 Mar  8 20:39 test
filer-2 ~ # ls -l /mnt/
total 0
-rw-r--r-- 1 root root 0 Mar  8 20:39 test
  • Simulation de panne sur filer-2

On désactive le filer-2

filer-2 ~ # halt
Broadcast message from root (pts/0) (Tue Mar  8 20:57:52 2011):
The system is going down for system halt NOW!

On écrit sur le point de montage depuis le client

client-1 ~ # rm /glusterfs/test 
client-1 ~ # touch /glusterfs/test_2
client-1 ~ # ls -l /glusterfs/
total 4
-rw-r--r-- 1 root root 0 Mar  8 22:43 test_2

On verifie que tout est ok sur le filer-1

filer-1 ~ # ls /mnt/ -l
total 4
-rw-r--r-- 1 root root 0 Mar  8 22:43 test_2

On réactive filer-2 et on vérifie que tout est ok, malheureusement, tant qu'aucun accès n'aura été fait depuis le client, la reconstruction du volume ne sera pas effectué.

filer-2 ~ # ls -l /mnt/
total 0

On effectue un accès depuis le client via un simple ls et on revérifie.

filer-2 ~ # ls /mnt/ -l
total 4
-rw-r--r-- 1 root root 0 Mar  8 22:43 test_2
  • Simulation de panne sur filer-1

On eteint filer-1

On écrit sur le point de montage depuis le client

client-1 ~ # rm /glusterfs/test_2
client-1 ~ # touch /glusterfs/test_3
client-1 ~ # ls -l /glusterfs/
total 4
-rw-r--r-- 1 root root 0 Mar  9 22:17 test_3

On effectue un accès depuis client-1 et on vérifie filer-1

filer-1 ~ # ls -l /glusterfs/
total 4
-rw-r--r-- 1 root root 0 Mar  9 22:17 test_3


On constate que le fait de monter filer-1 ne pose aucun problème en cas de panne de ce dernier, il serait donc plus juste de dire que nous avons monté le pool de confiance. :)

La prochaine étape un benchmark des performances ...

- page 1 de 9