Forum général.cherche-logiciel Liaison réseau "tamponnée"

Posté par  .
Étiquettes : aucune
1
12
sept.
2009
Bonjour,

j'aimerais trouver un programme qui permette de transmettre des données vers une machine distante qui n'est pas accessible en permanence. Les données arrivent au fil de l'eau, et il faut les transmettre dès que possible.

Un programme de la machine source génère des données (entre 1 et 20 Kio par minute). Le programme que je recherche pourrait les lire sur l'entrée standard ou par un pipe. Si la machine cible est accessible, les données sont envoyées tout de suite. Si la machine cible n'est pas accessible, il faut les stocker sur le disque.
On stocke sur le disque car la machine cible peut être inaccessible pendant des heures, et en cas de redémarrage ou plantage de la machine source il ne faut pas perdre trop de données (mais en perdre un peu n'est pas grave).

Si j'ai bien expliqué, ça existe ce genre de chose ?
  • # des idées

    Posté par  . Évalué à 2.

    1°) ne serait pas la definition d'un socket de communication ?
    un fichier est ecrit par l'appli A
    ce fichier est lu/vidé par l'appli B

    2°) syslog-ng ?
    avec copie locale et envoie vers un serveur ?

    par contre je ne sais pas comment ca se passe si cible plante
    (est ce que ca renvoie les logs non envoyés)

    3°) mysql avec replication vers cible ?
    la replication enverrait tout ce qui a changé pendant la coupure de cible
    • [^] # Re: des idées

      Posté par  . Évalué à 2.

      Cela me fait penser à un ancêtre UUCP
      • [^] # Re: des idées

        Posté par  . Évalué à 2.

        ah les connexions modem et uucp

        en meme temps il reste valable puisque capable de fonctionner via SSH
        et ca pourrait donc bien lui servir
        • [^] # Re: des idées

          Posté par  . Évalué à 1.

          J'ai regardé UUCP. Je l'avais utilisé dans mon jeune âge (quoi mes rhumatismes ?!) à la glorieuse époque des BBS.

          UUCP reste cependant trop compliqué pour mon modeste besoin.
          Je vois dans wikipedia qu'il est indiqué comme étant en fin de vie. Bouhhh, nostalgie toussa.
  • # DRDB

    Posté par  . Évalué à 1.

    Regarde si cela correspond à tes attentes. Ça te montre un cluster entre tes machines en gros.
    http://www.drbd.org/home/what-is-drbd/
  • # un MOM

    Posté par  . Évalué à 2.

    tu veux un middleware orienté message (MOM).
    un MOM gère une queue de messages dans laquelle les informations sont stockées si la livraison immédiate n'est pas possible.

    Il y a des produits commerciaux très connus (IBM MQSeries, tibco, ...).
    tu peux te tourner vers JMS en java, ou activeMQ, ou ... tu trouvera bien l'implémentation qui te plait le mieux.
    • [^] # Re: un MOM

      Posté par  . Évalué à 1.

      J'ai jeté un oeil. C'est un peu comme utiliser un marteau pour tuer un éléphant. Non, utiliser un caillou pour tuer un... non plus :)

      Je pensais à quelque chose de très basique. Un utilitaire comme on dit. Là on est carrément dans les gros programmes qui ont des fonctionnalités probablement très étendues.

      Je prends cependant note à propos de ActiveMQ qui me semble bien, mais pour d'autres besoins. Merci pour l'information :)
  • # un MOM

    Posté par  . Évalué à 3.

    tu veux un MOM ( Message Oriented Middleware).
    c'est un logiciel qui gère l'envoi des informations entre deux autres logiciels avec une queue pour les garder en spool si la transmission immédiate n'est pas possible.

    chez les editeurs IBM MQSeries, Tibco, ...
    en plus libre: OpenJMS, ActiveMQ, ...

    tu trouvera bien l'implémentation qui te plait le mieux sur le web
    • [^] # Re: un MOM

      Posté par  . Évalué à 2.

      ah! bigre !!
      mon premier post n'apparaissait pas j'ai cru que Firefox l'avait avalé tout cru !
      désolé !
    • [^] # Re: un MOM

      Posté par  (site web personnel) . Évalué à 2.

      Alors voila oui, tu peut utiliser un truc super lourd avec plein d'acronymes tout "Entreprise Ready" mais qui vont bouffer 500Mo de ram sur ta machine, ou te la jouer simple is beautiful:

      tu ecrit en local dans un/des fichiers + un cron qui test la presence de la cible (ping -c 1 par exemple) et qui envoi les données (scp).

      ou tu fournit un service uucp et ta cible fetch les données a intervalle régulier via uucp par exemple (cf uucpssh le service de mail "asynchronisé") ou toujours via scp
      • [^] # Re: un MOM

        Posté par  . Évalué à 4.

        je suis partiellement d'accord avec toi. les outils "acronymes" ne sont pas forcément plus compliqués et ne bouffent pas 500Mo de ram. De plus ils viennent avec une api qui fait bien plus qu'une simple copie de fichiers.
        Avec la méthode "fichiers" il va falloir définir le format des fichiers (xml ? ascii ? ...) et puis décider quand on peut l'effacer (quand considère t'on qu'il a bien été traité en face ?), et puis mettre en place un compte applicatif avec une clef ssh sans passphrase (scp), mais alors on voudra le bloquer dans un sous répertoire pour sécuriser la machine (chroot ?) ou alors ne pas utiliser scp mais plutôt une commande associée a la clef ...
        Et puis cela va marcher ... jusqu'au jour ou le contenu du fichier ne sera pas prévu par le parser écrit a-la-rache, et que l'import du fichier va foirer. mais comme c'est mal écrit le script ne sait pas remonter l'erreur, ni sauter le fichier qui pose problème, du coup il se bloque.
        Alors on va décider d'ajouter du monitoring, de créer les sondes cacti qui vont avec, et on va de nouveau engager 15 jours/homme sur ce problème pour "ne pas utiliser d'acronymes".

        Si le besoin est ultra simple (et cela semble le cas), scp peut-être la bonne méthode, mais moi j'en ai marre des usines a gaz commandées par des crontab qui se lancent toutes les minutes, et qui s'enchainent de serveur en serveur pour faire passer les informations. C'est rapide a mettre en place mais c'est rapidement la foire totale sur les machines.
  • # Netcat

    Posté par  (site web personnel) . Évalué à 2.

    Euh, c'est peut être bête, mais un bête script shell utilisant netcat pour envoyer les données? (avec netcat lancé par un cron sur la machine distante)

    Mathias
    • [^] # Re: Netcat

      Posté par  . Évalué à 1.

      Ce n'est pas bête du tout :)
      J'utilise actuellement scp avec un script autour, et je pensais qu'il existait mieux que mon pauvre code à deux balles.
      Ben je reste avec mon code à deux balles (qui marche).
      • [^] # Re: Netcat

        Posté par  . Évalué à 4.

        rsync est peut-etre plus adapaté
        car il peut reprendre un transfert quand la connexion revient ce qui evite de tout renvoyer

        rsync avec les bonnes options et une rotation de fichier peut permettre de gerer proprement les attentes liés à l'absence de la cible, et la synchro quand elle revient

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.