PrettyPrint

lundi 21 avril 2014

Online logical volume resizing in one command

Logical volume resizing in one command, when the volume group have enough spaces.

AIX:
chfs  -a size=+20G /data
Linux:
lvresize -L+20G /dev/vg_data/lvdata -r

The difference?
On AIX the resizing is done directly on the file system; but on Linux the resizing is done on the logical volume. The volume group have to be specified on Linux's LVM

lundi 31 mars 2014

Load balancing & Failover script

La répartition des charges (load balancing en anglais) est un mécanisme permettant à plusieurs éléments actifs d'un réseau de partager une charge du travail; les éléments actifs étant généralement identique.
Le basculement (failover en anglais) est un mécanisme permettant à un élément actif de basculer vers un élément alternatif en cas de non réponse du primaire.

Dans ce billet, je présente un script que j'ai écris, mettant en oeuvre les 2 mécanismes; load balancing et failover.

Supposons que nous ayons n serveurs identiques (d'un point de vue fonctionnel), et que nous voulons répartir la charge sur ces serveurs et implémenter le mécanisme de basculement (failover) en cas de panne d'un d'entre eux; le script suivant choisira de façon aléatoire l'IP d'un nœud actif. Chaque nœud actif a donc une probabilité de 1/n d'être choisie.

lbfo.sh: nom du script;
nodes.txt: liste des différentes IP de chaque nœud;

n.b: L'utilitaire fping doit être installé.

lbfo.sh
#!/bin/bash
#lbfo.sh
loadBalance() {
    count=0
    while read node
    do
        fping -qt1 -c1 $node &>/dev/null && count=$(($count+1)) && TEST[$count]=$node
    done < ./nodes.txt
    JETON=$(( RANDOM%$count + 1))
    echo ${TEST[$JETON]}
}
loadBalance

nodes.txt
192.168.5.1
192.168.5.3
192.168.5.4

Pour des raisons de latences, le test d'un nœud est positif si son temps de réponse < 1ms en une seule requête.
Temps d'exécution:
  Pour 3 noeuds dont 1 non actif:            real    0m0.042s
  Pour 254 noeuds dont 76 non actifs:      real    0m3.264s

vendredi 31 janvier 2014

Faire l'inventaire de l'ensemble de ces équipements via SSH

Il arrive parfois que le n+1 ou le RSSI nous demande l'inventaire de nos équipements, qui d'habitude n'est pas toujours à jour.
Une petite commande bash, pour le faire sans froncer les sourcils:
Récupération de l'IP et du nom d'hôte:
>for ip in {1..254}; 
>do
>ping -c1 -t3 X.Y.Z.$ip && echo "X.Y.Z.$ip --> `ssh X.Y.Z.$ip 'hostname'`" >> inventaire.txt;
>done

Résultat:
   W.X.Y.Z --> name.intra.domain

Pous pouvez faire varier le ttl en fonction de votre configuration réseau.

jeudi 16 janvier 2014

Howto compare 2 remotes files

diff est un outil permettant d'afficher la différence entre 2 fichiers ligne par ligne.
L'outil devient  très intéressant pour vérifier une configuration commune sur un ensemble de serveur; ceci est rendu possible par la possibilité que diff a, à utiliser les flux de l'entrée standart (STDIN).

Utilisation:
diff entre un fichier local et un fichier distant :
#ssh -q $remoteHost "cat $remoteFile" | diff - $localFile

diff entre 2 fichiers distants:
#ssh -q $HOST1 "cat $file1" | diff - <(ssh -q $HOST2 "cat $file2")
"attention! pas d'espace entre le caractère < et )"

Si vous avez une autre façon d'écrire ceci, merci de partager ;-).

samedi 11 janvier 2014

Paralléliser la compression des gros fichiers


En environnement de production, on est généralement confronté a un problème d'espace lors des sauvegardes. On veut un temps de rétention assez long, sans avoir les ressources disques adéquates. La seule solution est la compression des données sauvegardées (bien qu'elle augmente le temps de sauvegarde et de restauration).
La compression sur des gros fichiers (>80Go), dépasse généralement les 45min avec l'outil gzip. Ce dernier n'utilise pas toutes les ressources cpu de la machine; en cherchant un outil qui parallélise la compression, je suis tombé sur une implémentation de gzip, http://zlib.net/pigz/ qui le fait.
Il fonctionne de la même manière que gzip, il suffit juste d'appeler la commande "pigz".

Installation de pigz sur CentOS 6
- Via le dépôt Epel
#rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
#yum install pigz

Lancez la compression, et vérifier la parallélisation grâce à votre outils de supervision ( nmon ;-) )

mardi 3 décembre 2013

Songo'o sur android

Dépuis mai 2013, olymat et moi (rejoins par la suite par Brice aka elSovo) avons commencé le développement du "songo'o", jeu de société africain (Awalé), pour le concours Android Developper Challenge. N'ayant pas fini le projet à temps, nous avons tout de même décidé de continuer le développement et de le mettre sous licence libre Gnu GPL v3; disponible à l'adresse code.google.com/p/songoo/. Le jeu existe aussi en version web (appEngine - Python).

Martinien(olymat) s'occupe du design de l'interface graphique et des interactions, Brice de la partie réseau et moi de l’intelligence artificielle et du gamePlay.

Vous pouvez participer au développement en allant sur la page du songo'o. En attendant, voici quelques captures d'écrans: