Nous utilisons plusieurs chassis de blades remplis de Dell m620 ronronnant sous vSphere. Nous remarquons que plusieurs VMs perdent régulierement le réseau. Après plusieurs jours d’investigation,
nous venons à comprendre que le problème est sur un seul chassis. C’est ici que iPerf rentre en jeu.
Le principe de iPerf est simple. Une cible et un initiateur. Un serveur, un client.
iPerf (https://iperf.fr/) est un petit programme qui teste le réseau sans jamais toucher à un disque dur. Contrairement à dd ou aux autres logiciels qui utilisent un buffer sur le disque dur, iPerf,
est seulement réseau. Le serveur écoute sur un port spécifié et le client se connecte et transfert du data. Aussi simple que ca.
Dans notre ca, nous avons réussi à trouver que le port X du module Y de la switch Z du chassis était défectueux.
Voici comment ca fonctionne:
Créez deux VMs. Linux ou Windows. Copiez iPerf ou installez-le (disponible sur les repos linux). Sur le serveur, démarrez le iPerf: iperf -s Sur le client lancez la connexion: iperf -c AdresseDuServeur C'est fait un premier test. Vous connaitrez la vitesse et la taille de la bandwidth que le programme sent. On peut aussi lancer la commande de maniere mirror, donc client serveur et serveur client ensuite: iperf -c AdresseDuServeur -r
J’ai crée un petit script qui fait 10 tests et donne une moyenne. Il est aussi pratique pour voir si le lien est stable ou instable.
Il faut ouvrir le serveur avec
iperf -s
et rouler (sh) ce script de la maniere suivante:
sh iperf.sh 10 AdresseDuServeur
()lanceur, NomDuScript NombreDeRepetitions AdresseDuServeur)
### #!/bin/bashif [ "$#" -ne "2" ]; then echo "ERREUR: Le script cherche quatre arguments, donc:" echo echo "1. Nombre de repetitions (ex: 10)" echo "2. Serveur qui roule iperf -s ' (ex: IP)" echo echo "Par exemple:" echo " $(basename $0) 10 serveur" echo exit 1 else runs=$1 host=$2 filog=iperf.$host.logif [ -f $log ]; then echo removing $log rm $log fiecho "==================================================================" echo " Results" echo "==================================================================" echo " target host .... $host" echo "------------------------------------------------------------------"for run in $(seq 1 $runs); do iperf -c $host -f m >> $log echo -e " run $run: \t $(awk '/Bandwidth/ {getline}; END{print $7, $8}' $log)" doneavg=$(awk -v runs=$runs '/Bandwidth/ {getline; sum+=$7; avg=sum/runs} END {print avg}' $log) echo "------------------------------------------------------------------" echo " moyenne ....... $avg Mbits/sec" echo echo "lire $log pour les details" ## Voila une autre raison d'aimer les logiciels libres.