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
PrettyPrint
lundi 21 avril 2014
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
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
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.1192.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
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 ;-).
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:
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:
Inscription à :
Articles
(
Atom
)