Monter un cluster filesystem avec OCFS2

Posted in Administration by Nap on August 3, 2009 2 Comments

Intérêt de la solution

Les architectures clusters sont de plus en plus présentes. Si nous avons vu dans de précédent post la partie réseaux avec IPVS, il reste la question des applications, et tout particulièrement du partage des données, notamment les fichiers des applications, et parfois même les datafile des bases.
C’est justement un éditeur de base de données, Oracle, qui a mis au point un cluster filesystem développé sous licence GPLv2. Les noeuds doivent avoir accès au même device qui va être “formaté” en ocfs2 pour pouvoir être monté par plusieurs noeuds à la fois. c’est un cluster file system quoi…

Pour ceux qui n’ont pas suivi, voici ce que cela donne avec deux noeuds (mais après vous pouvez en mettre bien plus) :

cluster filesystem

Ici, le même disque est accessible des deux machines grâce à des liens SAN qui peuvent être Fibre ou iScsi (ce dernier suffit la plupart du temps). Dans cet exemple, chaque machine voit le disque sur un nom de device différent, mais ce n’est pas obligatoire.

Regardons un peu comment il fonctionner et comment on le met en place.

More…

Patch Nagios pour un démarrage (bien plus) rapide

Posted in Nagios by Nap on July 2, 2009

Il y a de cela un an, j’ai pris au mot l’auteur de Nagios lorsqu’il écrit dans la documentation de Nagios concernant les vérifications effectuées au démarrage :
“That means all you CompSci graduate students who have been emailing me about doing your thesis on Nagios can contribute some code back. :-)
Je ne sais pas qui ils sont, mais j’ai essayé de résoudre le problème poser : la vérification des liens de parentés dans Nagios était horriblement longue. En fait, j’ai même réussi.

Pour rappel, Nagios permet de définir pour un host un ou plusieurs parents (en terme de réseau). De cette manière, si un switch tombe par exemple et que l’administrateur a bien configuré ses serveurs pour qu’ils soient des fils du switch en question, il ne va recevoir qu’une seule alerte, celle du switch, plutôt que N alertes des serveurs. C’est la dépendance réseau. Cette relation forme un arbre : Nagios remonte les branches pour trouver la cause du problème. La racine est le noeud Nagios lui même. Mais que se passe-t-il si on autorise les cycles dans la configuration? Nagios va tourner en rond lors de la recherche de l’erreur! :evil:

Pour éviter cela, Nagios fait une vérification au démarrage afin de trouve les cycles dans cette configuration s’ils existent. Un premier algorithme naïf est en O(n²). Et bien dans Nagios arrivait à faire du O(n3)… Vous aller me dire que ce n’est pas si grave que ça. Et bien en fait si. Prenons une configuration “costaux” de 40000 hosts avec des relations de parentées. Et bien la vérification prends 70s sur un Core2 à 2.4Ghz. Ce n’est pas négligeable, car pendant ce temps, il n’y a pas de supervision…

J’ai donc décidé d’appliquer mes cours de théorie des graphes et de faire un simple parcours en profondeur, aussi nommé Deep First Search (DFS). C’est donc un algorithme récursif, ce qui n’a rien d’étonnant dans le monde des graphs :mrgreen:

Son fonctionnement est légèrement différent du DFS standard, car le but n’était pas de savoir si une boucle existait, mais de trouver TOUS les noeuds étant dans une boucle, afin d’aider l’utilisateur à corriger les problèmes en un passage.De plus, il n’y a pas de noeud root sur cet arbre de relation. On peut potentiellement partir en plein milieu de l’arbre, ce qui ne facilite pas les choses.

Les noeuds peuvent avoir plusieurs attributs :

DFS_UNCHECKED 0 valeur par défaut
DFS_TEMPORARY_CHECKED 1 a été parcouru une fois
DFS_OK 2 pas de problème
DFS_NEAR_LOOP 3 a des fils à problèmes
DFS_LOOP_INSIDE 4 fait parti d’une boucle

Nouveau test avec ce parcours en profondeur au lieu de l’algorithme initial : 0.006864 sec :-D

Après une longue période de non réponse de l’auteur de Nagios et le “coup de pied au cul” de Icinga avec leur tentative de Fork, de nouveaux développeurs ayant accès au CVS de Nagios ont été nommés. C’est ainsi que mon patch a été intégré dans la version 3.1.2 de Nagios et que des milliers d’administrateurs vont voir leur Nagios démarrer bien plus rapidement.

Reste à appliquer ce principes aux autres relations de dépendances dans Nagios…

Administration et supervision de HeartBeat/Ldirectord/IPVS

Posted in Administration by Nap on June 30, 2009

On a conçu une solution de load balancing et de répartition de charge et nous l’avons mis en place. Le travail n’est pas fini pour autant. Il nous reste à administrer et superviser ces outils.

More…

Mise en place d’une solution de load balancing hautement disponible

Posted in Administration by Nap on June 30, 2009 2 Comments

Nous avons vu le principe de la solution de load balancing hautement disponible, regardons désormais comment la mettre en place.

More…

La haute disponiblité et la répartition de charge avec HeartBeat/IPVS

Posted in Administration by Nap on June 30, 2009

LVS-nat

LVS-logo

Intérêt et problématique

Commençons par la problématique : vous avez besoin pour une application de haute disponibilité et/ou de répartition de charge. Si votre application supporte le fait au les clients arrivent sur tel ou tel serveur (puis restent connectes au même serveur) alors vous pouvez utiliser un système automatiques de répartition des utilisateurs. Là, le choix est vaste.

Déjà, si l’application possède un tel répartiteur en frontal, il faut l’utiliser. Sinon on peux utiliser des switchs dédiés si vous avez un budget important et surtout des besoins de débits très important (de l’ordre de plusieurs dizaines de Mo/s). En cas de débits moindres, il est possible d’utiliser des solutions logicielles open sources que nous allons étudier ici.

More…

UberLogger, un observatoire niveau noyau pour la lutte informatique défensive

Posted in Sécurité by Nap on June 29, 2009

UberLogger est un programme de capture d’appels systèmes entrant dans le cadre des systèmes de honeypots.

Dans l’étude des grands prédateurs du monde animal, deux méthodes existent : soit le naturaliste se déplace sur le lieu de vie de l’animal, soit il recrée ce lieu de vie dans une réserve naturelle et analyse sans risque ses habitudes et ses méthodes de chasse. Dans le domaine de la lutte informatique défensive, ces deux approches sont également valables. Soit les scientifiques vont sur le terrain des pirates, soit ils recréent des conditions propices à la « vie » des pirates dans un environnement sécurisé dans le but de les étudier.

Cette deuxième approche peut se résumer simplement : les pots à miel (« honeypot ») :chinese: . Le dispositif présenté ici permet de créer un système de « honeypots » utilisant les particularités des plates-formes, comme par exemple UML. Ce dispositif peut également entrer dans le cadre du « forensics » permettant de déterminer ainsi si une machine a été compromise et est encore utilisée par un pirate, ou bien dans celui d’une machine « sandbox » permettant de tester des programmes non sûrs.

L’article présenté ici est le paper que nous avons présenté au SSTIC 05. Plus d’informations suivront comme sa mise en place et des exemples de fonctionnement. Le paper d’origine est disponible sur le site du SSTIC : paper.

Le projet n’est actuellement plus développé, mais si certains sont intéressé pour le reprendre, ils peuvent :)

Ouverture de mon blog

Posted in Divers by Nap on June 22, 2009

Ca y est, le blog est ouvert. Sur ce dernier, je vais présenter un peu ce que je fais, ce que j’ai développé et ce que j’ai appris en matière de supervision ou d’administration open source.

Vous ne trouverez pas ici de description sur des supers outils dont les sources ne sont pas disponibles. Pas que je les trouve totalement inutiles et dépasser, mais bien que je préfère me consacrer aux outils auquels je peux faire pleinement confiance etaméliorer s’ils ne me conviennent pas.

Le choix du moteur de blog en est une bonne illustration : Wordpress est un projet open source de qualité qui suporte un nombre impressionnant de blog de par le monde.

Je posterai de temps en temps des tutos sur des actions utiles pour les administrateurs comme comment superviser des systèmes avec Nagios ou bien monter une architecture distribuée et hautement disponible avec HeartBeat/IPVS.

Je parlerai également des quelques programmes que je développe ou que j’ai développé par le passé. On remarque par exemple pyndsgest qui permet de gérer ses jeux NDS et Shinken qui est une réimplémentation de Nagios en python ayant pour objectif de valider des propositions d’architectures et d’algorithmes pour Nagios.

Le bal est ouvert.