popof a écrit 52 commentaires

  • # Problème résolu

    Posté par  . En réponse au message reverse proxy Apache + serveur backend = connexion reset by peer. Évalué à 1.

    Le problème ne se situait pas au niveau des RP et du serveur backend.
    Les loadbalancers étaient mal configurés…
    Tout fonctionne. Il m'a fallu démanteler briques après briques pour comprendre.
    Ouf

    Merci pour votre aide

  • [^] # Re: Ca timeout quand ?

    Posté par  . En réponse au message reverse proxy Apache + serveur backend = connexion reset by peer. Évalué à 1.

    Bon, je suis toujours un peu perdu :-)

    VOici les différents logs que j'obtiens :

    Si quelqu'un a le courage de regarder les logs… :-)

    ==> /var/log/httpd/extranet.error.log <==
    [Tue Dec 01 11:36:24 2015] [debug] mod_proxy_http.c(1732): proxy: start body send
    [Tue Dec 01 11:36:29 2015] [debug] mod_auth_cas.c(1745): [client 172.16.10.3] Entering cas_authenticate()
    [Tue Dec 01 11:36:29 2015] [debug] mod_auth_cas.c(1473): [client 172.16.10.3] entering isValidCASCookie()
    [Tue Dec 01 11:36:29 2015] [debug] mod_auth_cas.c(791): [client 172.16.10.3] entering readCASCacheFile()
    [Tue Dec 01 11:36:29 2015] [debug] mod_auth_cas.c(1044): [client 172.16.10.3] entering writeCASCacheEntry()
    [Tue Dec 01 11:36:29 2015] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //apps/apps/listes/etudiant-basc.php
    [Tue Dec 01 11:36:29 2015] [debug] proxy_util.c(1521): [client 172.16.10.3] proxy: http: found worker http://apps/ for http://apps/apps/listes/etudiant-basc.php
    [Tue Dec 01 11:36:29 2015] [debug] mod_proxy.c(1020): Running scheme http handler (attempt 0)
    [Tue Dec 01 11:36:29 2015] [debug] mod_proxy_http.c(1967): proxy: HTTP: serving URL http://apps/apps/listes/etudiant-basc.php
    [Tue Dec 01 11:36:29 2015] [debug] proxy_util.c(2026): proxy: HTTP: has acquired connection for (apps)
    [Tue Dec 01 11:36:29 2015] [debug] proxy_util.c(2082): proxy: connecting http://apps/apps/listes/etudiant-basc.php to apps:80
    [Tue Dec 01 11:36:29 2015] [debug] proxy_util.c(2209): proxy: connected /apps/listes/etudiant-basc.php to apps:80
    [Tue Dec 01 11:36:29 2015] [debug] proxy_util.c(2396): proxy: HTTP: backend socket is disconnected.
    [Tue Dec 01 11:36:29 2015] [debug] proxy_util.c(2460): proxy: HTTP: fam 2 socket created to connect to apps
    [Tue Dec 01 11:36:29 2015] [debug] proxy_util.c(2592): proxy: HTTP: connection complete to vip:80 (apps)
    [Tue Dec 01 11:36:34 2015] [error] [client 172.16.10.3] (70007)The timeout specified has expired: proxy: error reading status line from remote server apps, referer: http://extranet/apps/listes/etudiant-basc.php
    [Tue Dec 01 11:36:34 2015] [debug] mod_proxy_http.c(1405): [client 172.16.10.3] proxy: read timeout, referer: http://extranet/apps/listes/etudiant-basc.php
    [Tue Dec 01 11:36:34 2015] [debug] mod_proxy_http.c(1456): [client 172.16.10.3] proxy: NOT Closing connection to client although reading from backend server apps failed., referer: http://extranet/apps/listes/etudiant-basc.php
    [Tue Dec 01 11:36:34 2015] [error] [client 172.16.10.3] proxy: Error reading from remote server returned by /apps/listes/etudiant-basc.php, referer: http://extranet/apps/listes/etudiant-basc.php
    [Tue Dec 01 11:36:34 2015] [debug] proxy_util.c(2044): proxy: HTTP: has released connection for (apps)
    
    ==> /var/log/httpd/extranet.access.log <==
    172.16.10.3 - user1 [01/Dec/2015:11:35:34 +0100] "POST /apps/listes/etudiant-basc.php HTTP/1.1" 502 438 "http://extranet/apps/listes/etudiant-basc.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454.101 Chrome/45.0.2454.101 Safari/537.36"
    
    ==> /var/log/httpd/extranet.error.log <==
    [Tue Dec 01 11:37:27 2015] [debug] mod_proxy_http.c(1732): proxy: start body send
    [Tue Dec 01 11:37:27 2015] [debug] mod_proxy_http.c(1732): proxy: start body send
    [Tue Dec 01 11:38:27 2015] [info] [client 172.16.10.3] (70007)The timeout specified has expired: core_output_filter: writing data to the network
    [Tue Dec 01 11:38:27 2015] [debug] mod_proxy_http.c(1836): proxy: end body send
    [Tue Dec 01 11:38:27 2015] [debug] proxy_util.c(2044): proxy: HTTP: has released connection for (apps)
    
    ==> /var/log/httpd/extranet.access.log <==
    172.16.10.3 - user1 [01/Dec/2015:11:36:29 +0100] "GET /apps/listes/etudiant-basc.php HTTP/1.1" 200 16503 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454.101 Chrome/45.0.2454.101 Safari/537.36"
    
    ==> /var/log/httpd/extranet.error.log <==
    [Tue Dec 01 11:38:27 2015] [info] [client 172.16.10.3] (70007)The timeout specified has expired: core_output_filter: writing data to the network
    [Tue Dec 01 11:38:27 2015] [debug] mod_proxy_http.c(1836): proxy: end body send
    [Tue Dec 01 11:38:27 2015] [debug] proxy_util.c(2044): proxy: HTTP: has released connection for (apps)
    

    J'ai fait quelques modifs dans les vhosts côté RP et côté APPS. J'ai mis ces paramètres des 2 côtés :

    Timeout 60
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 60
    HostnameLookups Off
    
  • [^] # Re: Ca timeout quand ?

    Posté par  . En réponse au message reverse proxy Apache + serveur backend = connexion reset by peer. Évalué à 1.

    Ca timeout assez rapidemment en fait.

    VOici quelques échantillons faits depuis la VIP, ca provient du débugeur de chrome.

    POST https://extranet/apps/app1/Index.php 200 OK 4,34s >> résultat 0byte, réponse HTTP coupé net
    
    POST https://extranet/apps/app1/Index.php 200 OK 97ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 618ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 658ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 790ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 715ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 2,6s
    
    POST https://extranet/apps/app1/Index.php 200 OK 2,97s
    
    POST https://extranet/apps/app1/Index.php 200 OK 685ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 704ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 60ms
    
    POST https://extranet/apps/app1/Index.php 200 OK 2,79s
    
    POST https://extranet/apps/app1/Index.php 200 OK 2,6s
    
    POST https://extranet/apps/app1/Index.php 200 OK 2,56s
    
    POST https://extranet/apps/app1/Index.php 200 OK 3,14s >> résultat 0byte, réponse HTTP coupé net
    
    POST https://extranet/apps/app1/Index.php 200 OK 2,31s >> résultat 0byte, réponse HTTP coupé net
    
    POST https://extranet/apps/app1/Index.php 200 OK 2,1s
    
    POST https://extranet/apps/app1/Index.php 200 OK 3,03s
    

    La dernière requête à dépasser les 3 secondes et pourtant elle a abouti, contrairement aux 2 derniers plantage.

    Je ne sais vraiment pas quoi en penser

  • [^] # Re: Keepalive des apaches

    Posté par  . En réponse au message reverse proxy Apache + serveur backend = connexion reset by peer. Évalué à 1.

    Salut Merci pour ta réponse.
    J'avais déjà essayé les paramètres que tu suggères

    J'ai pu refaire des tests, même erreur.

    POur info voici ce que j'avais mis dans la partie globale du vhost:

    SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1
    

    Comme tu vois j'ai essayé de mettre le paquet. (peut être que j'ai écris des erreurs ??)

    <Location />
      #Allow from all
      Order deny,allow
      Deny from all
      AuthType CAS
      AuthName "Infocentre"
      require valid-user
      CASAuthNHeader Cas-User
      CASScope /
      Satisfy Any
      Options +FollowSymlinks
      #SetEnv force-proxy-request-1.0 1
      #SetEnv proxy-nokeepalive 1
      #RequestHeader unset Expect early
      ProxyPass "http://app/" timeout=900
      #ProxyPass "http://app/" keepalive=on connectiontimeout=600 timeout=900 disablereuse=on retry=0 flushpackets=On
    </Location>
    
  • # Résolu mais partiellement

    Posté par  . En réponse au message dual boot (windows/linux) dans domaine microsoft. Évalué à 1.

    Avoir un nom d'hôte différent ça me semble idéal mais un autre problème persiste.

    Les machines sont en DHCP (serveur dhcp microsoft) avec une mise à jour automatique des enregistrements DNS (serveur DNS microsoft, ça se configure ça).

    Comment faire pour avoir 2 enregistrements DNS avec une seule adresse MAC ?

    D'autant plus que j'installe les partitions linux depuis spacewalk via des kickstarts :
    - boot PXE (donc recherche du DHCP - à ce stade comment faire pour différencier la machine P25L de P25W ??)
    - recherche d'un serveur TFTP
    - chargement d'une image d'amorçage

    En admettant que via des script pré-install ou post install j'arrive à modifier le nom d'hôte de ma machine, ce serait vachement plus simple de le faire en amont … :-)

    Des idées ?
    Et Super, merci pour vos réponses !

  • [^] # Re: Question à 2 balles (par curiosité)

    Posté par  . En réponse au message Cluster actif/actif qui s'occupe de tout. Évalué à 2. Dernière modification le 13 octobre 2014 à 23:29.

    Ce que je veux rendre haute dispo c'est le linux avec ses services !

    J'ai évidemment des SPOF :

    • Mon émetteur/récepteur rfxcom Lan

    • Mes modules domotiques à piles

    • Mon alimentation électrique non redondée

    • Idem pour mon switch 48 ports… Je n'ai pas de switch stacké

    Il y a forcément des SPOF. le matériel on met pas trop ces mains dedans contrairement au linux et ses bidouilles à gogo ;-)

  • [^] # Re: Question à 2 balles (par curiosité)

    Posté par  . En réponse au message Cluster actif/actif qui s'occupe de tout. Évalué à 2.

    Je n'ai pour le moment pas utilisé les GPIO du cubie, mais d'autres gars de mon forum se sont lancés dans du DIY arduino et Raspberrypi

    Je parle de 3 cubieboard mais j'ai aussi 3 raspberrypi qui pourraient faire parti du cluster

    voici mon projet : http://wiseflat.com
    La démo n'est plus à jour du tout l'IHM de la doc non plus…
    Mais va voir la doc (entre autre la partie architecture)

    Composé de 2 briques :

    • Le manager : nginx/mariadb/php5
    • Le Core : xPL-Perl + une multitude de plugin xPL pour mon besoin perso

    Tout es modulaire dans mon architecture. Et c'est (entre autre) grâce à xPL.

    Mon objectif c'est d'installer le Core+Manager sur chaque cubieboard et de créer un nouveau plugin xPL-cluster par exemple qui se charge de gérer le contexte de haute dispo que j'ai décrit dans mon 1er message

    L'intérêt évident (si tu connais xPL) c'est que chaque plugin connecté au hub xPL envoie de requêtes heartbeat toutes les 30s (ou 60s je sais plus) ainsi qu'un message de type end quand le plugin se déconnecte du hub. Chaque plugin est identifié (hostname, vendor_id, message_type, etc). Utiliser ces info simplifie grandement la gestion de tout ce qui doit tourner.

    Aujourd'hui l'élément le plus critique de mon projet c'est la base de données. D'ou l'intérêt d'avoir une solution de haute dispo à bas cout… C'est ce que je veux sécuriser.

    De plus, mon service xPL-cluster serait en mesure de décider de répartir l'exécution des services xPL sur cubie2 ou cubie3 pour des questions de performances

    Si tu as d'autres questions/remarques n'hésites pas c'est le but de ce brainstorming ;-)

  • [^] # Re: keepalived et ses scripts

    Posté par  . En réponse au message Cluster actif/actif qui s'occupe de tout. Évalué à 1.

    Mon idéal serait un code en perl car tous mes développements sont en perl.
    xPL apporte tellement de potentiel à un service de ce type que mon idéal serait de tout développer dans un module Perl qui s'appuie sur les messages de découverte issu de mon réseau xPL.

    Je pense de toute façon redévelopper la roue. Car je veux quelque chose d'assez customisé.

    Keepalived et ses scripts, c'est un bon début. Merci Neox, je vais regarder aussi de ce côté ci

  • # Suite de la demande

    Posté par  . En réponse au message Samba 4 et Active directory. Évalué à 1.

    Une autre chose que je n'ai pas dit.

    Notre firewall possède un agent SSO qui interroge les sessions utilisateurs connectés au domaine. de cette manière, un utilisateur qui a ouvert sa session sort automatiquement sur internet.

    Pour les clients linux et mac (qui utilisent des comptes locaux), ils sont redirigés sur le portail captif du parfeu qui se charge de récupérer leur login/pass du domaine Microsoft et il peuvent alors sortir sur internet.

    L'intérêt de la solution et de faire du tout en un. Proposer un ADS samba4 + cups qui en plus saura dire à l'active directory que le client linux XXX aura ouvert une session sur le domaine…

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1.

    Ca marche quand même

    cat /etc/resolv.conf
    domain home
    search home
    nameserver 127.0.0.1

    Tu spécifies un fichier global dans /etc/dnsmasq.conf
    resolv-file=/etc/resolv.opendns

    Et tu spécifies les interfaces dans le fichier de conf

    listen-address=127.0.0.1
    listen-address=192.168.0.254
    listen-address=192.168.2.254

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1.

    J'ai corrigé mon fichier il n'écoute plus sur l'interface locale pour tester

    listen-address=192.168.0.254
    listen-address=192.168.2.254

    netstat -natup |grep dnsmasq
    tcp 0 0 192.168.0.254:53 0.0.0.0:* LISTEN 5357/dnsmasq

    tcp 0 0 192.168.2.254:53 0.0.0.0:* LISTEN 5357/dnsmasq

    udp 0 0 192.168.0.254:53 0.0.0.0:* 5357/dnsmasq

    udp 0 0 192.168.2.254:53 0.0.0.0:* 5357/dnsmasq

    udp 0 0 0.0.0.0:67 0.0.0.0:* 5357/dnsmasq

    Mais le pb c'est que le routeur lui même ne fait plus les résolutions :-(

    listen-address=127.0.0.1
    listen-address=192.168.0.254
    listen-address=192.168.2.254

    Je suis obligé de rajouter l'adresse locale lol

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1. Dernière modification le 25 mai 2014 à 22:33.

    J'ai déjà vérifié. Le fichier de configuration de dnsmasq te permet de spécifier quelles interfaces il doit utiliser.
    Et il faut bien qu'il y ait une résolution dns locale bien sur…

        root@zorglub:/etc/dnsmasq.d# netstat -natup |grep dnsmasq
        tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      5186/dnsmasq    
        tcp        0      0 192.168.0.254:53        0.0.0.0:*               LISTEN      5186/dnsmasq    
        tcp        0      0 192.168.2.254:53        0.0.0.0:*               LISTEN      5186/dnsmasq    
        udp        0      0 127.0.0.1:53            0.0.0.0:*                           5186/dnsmasq    
        udp        0      0 192.168.0.254:53        0.0.0.0:*                           5186/dnsmasq    
        udp        0      0 192.168.2.254:53        0.0.0.0:*                           5186/dnsmasq    
        udp        0      0 0.0.0.0:67              0.0.0.0:*                           5186/dnsmasq
  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1. Dernière modification le 25 mai 2014 à 21:51.

    Ca ne marche pas.
    Le service dnsmasq se met en écoute sur l'interface 127.0.0.1.
    La deuxième instance refuse de se lancer

    dnsmasq -C /etc/dnsmasq.dmz.conf
    dnsmasq: failed to create listening socket for 127.0.0.1: Address already in use

    Et toujours ce problème de suffixe…

    dnsmasq: query[A] google.fr.home from 192.168.2.2
    dnsmasq: config google.fr.home is NXDOMAIN-IPv4
    dnsmasq: query[AAAA] google.fr.home from 192.168.2.2
    dnsmasq: config google.fr.home is NXDOMAIN-IPv6

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1.

    Peut-être faut il que je découpe mon fichier de configuration et que je lance 2 instances de dnsmasq …. Une pour chaque sous réseau ?

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1. Dernière modification le 25 mai 2014 à 19:37.

    C'est exactement ce problème là : link

    Non c'est pas tout à fait comme ça…

    J'ai un firewall linux avec 3 interfaces réseaux :
    - eth1, INET_IFACE
    - eth0, LAN_IFACE
    - eth2, DMZ_IFACE

    Le firewall héberge les services suivants :
    - dnsmasq
    - le routage via de règles iptables et ip rules

    Depuis mon LAN, tout fonctionne
    Depuis ma DMZ vers mon LAN tout fonctionne et inversement
    Depuis ma DMZ vers INET (donc internet) aucune des résolutions ne fonctionnent car il suffixe toutes les résolutions DNS par le nom de mon domaine local soit .home

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1.

    Mais pourquoi DNSmasq rajoute mon domaine à la fin de l'adresse depuis mon VLAN DMZ ???

    dnsmasq: query[A] mirrordirector.raspbian.org.home from 192.168.2.2
    dnsmasq: config mirrordirector.raspbian.org.home is NXDOMAIN-IPv4
    dnsmasq: query[AAAA] mirrordirector.raspbian.org.home from 192.168.2.2

    dnsmasq: query[A] mirrordirector.raspbian.org.home from 192.168.2.1
    dnsmasq: config mirrordirector.raspbian.org.home is NXDOMAIN-IPv4
    dnsmasq: query[AAAA] mirrordirector.raspbian.org.home from 192.168.2.1
    dnsmasq: config mirrordirector.raspbian.org.home is NXDOMAIN-IPv6

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1. Dernière modification le 25 mai 2014 à 18:29.

    J'ai viré toutes les références à dmz. Après tout, les machines de mes vlan font parties du même domaine…

    Par contre j'ai déplacé le serveur dans mon vlan et là ça marche…
    C'est clair y a un problème au niveau de mes ip rule ou au niveau du mon parfeu ou au niveau de dnsmasq… je penche plus pour dnsmasq
    Bon je cherche !! raaa qu'est-ce que le temps passe vite quand on galère

  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1. Dernière modification le 25 mai 2014 à 16:52.

    Voici le log de lancement du service dnsmasq (pour info)

    # dnsmasq -d
    dnsmasq: started, version 2.66 cachesize 1000
    dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth
    dnsmasq-dhcp: DHCP, IP range 192.168.2.1 -- 192.168.2.5, lease time 3d
    dnsmasq-dhcp: DHCP, IP range 192.168.0.1 -- 192.168.0.100, lease time 3d
    dnsmasq: using local addresses only for domain 2.168.192.in-addr.arpa
    dnsmasq: using local addresses only for domain 0.168.192.in-addr.arpa
    dnsmasq: using local addresses only for domain dmz
    dnsmasq: using local addresses only for domain home
    dnsmasq: ignoring nameserver 127.0.0.1 - local interface
    dnsmasq: reading /etc/resolv.opendns
    dnsmasq: using nameserver 208.67.220.220#53
    dnsmasq: using nameserver 208.67.222.222#53
    dnsmasq: using local addresses only for domain 2.168.192.in-addr.arpa
    dnsmasq: using local addresses only for domain 0.168.192.in-addr.arpa
    dnsmasq: using local addresses only for domain dmz
    dnsmasq: using local addresses only for domain home
    dnsmasq: read /etc/hosts - 11 addresses
    dnsmasq-dhcp: read /etc/ethers - 6 addresses
  • [^] # Re: etrange, et pas vraiment de piste mais...

    Posté par  . En réponse au message dnsmasq + multiples vlan = pb de résolution DNS externe. Évalué à 1.

    Mais pourquoi ça marche alors depuis mon vlan home ?

    Cette directive n'est elle pas suffisante ?

    resolv-file=/etc/resolv.opendns

    cat /etc/resolv.opendns
    nameserver 208.67.222.222
    nameserver 208.67.220.220

  • [^] # Re: HDFS n'est pas adapté dans ton cas

    Posté par  . En réponse au message HDFS où comment faire un espace de stockage décentralisé en cluster (genre un raid5). Évalué à 0.

    lol j'ai acheté les cubieboard, on verra bien si ça marche et surtout si ça s'avère être une solution stable et pérenne…

    En fait l'idée de supprimer la base de données sur mon nas synology ds412j c'est surtout de récupérer de la mémoire. Il suffit que je télécharge des fichiers depuis le "download manager" et là les requêtes http/mysql deviennent hyper lente… C'est la vrai raison.

    j'ai l'impression (je dis bien c'est du feeling hein), "temps de travail/criticité/disponiblité/reprise sur erreur", avoir un filesystem partagé me semble plus simple à mettre en place qu'un cluster mysql…

    Pour drbd, rien ne m'empêche de rajouter un 3ème noeud pour avoir un quorum de disque ? faut juste rajouter 80€pour une 3ème cubieboard + sd + clé usb :-)

    Pour la perte éventuelle d'une carte SD, une fois mon noeud Y préconfiguré, j'en fais une image de secours. Du coup il me suffira de connecter la SD à mon ordi et recopier l'image de secours. Les données sensibles étant sur la clé usb…

    Ouais dis comme ça ça a l'air cool mais à maintenir… on verra dans le temps lol

  • [^] # Re: HDFS n'est pas adapté dans ton cas

    Posté par  . En réponse au message HDFS où comment faire un espace de stockage décentralisé en cluster (genre un raid5). Évalué à 1.

    En fait j'avais pensé à ça :

    http://maniaque.org/2013/01/cluster-mysql-drbd-heartbeat
    http://docs.chezwam.org/docs/2010/05/21_replication-mysql-avec-drbd.html

    Techniquement ça a l'air de tenir la route, après faut voir à l'usage …

    De toute façon, je vais essayer sur 2 raspberry et sur 2 cubieboard.

    Le plus gros problème (de par l'expérience que j'ai du raspberry), ce n'est pas la mise en cluster des services (surtout si c'est pour faire la répartition de charge), c'est l'utilisation de mysql qui prend 60% de la RAM.

    A voir…

  • [^] # Re: HDFS n'est pas adapté dans ton cas

    Posté par  . En réponse au message HDFS où comment faire un espace de stockage décentralisé en cluster (genre un raid5). Évalué à 1.

    Merci pour ta réponse.
    OK je comprends bien, c'est très clair. Et oui, c'est avant tout pour m'amuser. C'est de la geekerie à l'état pure :-)
    Admettons que le Raid1 me suffise et que je base mon cluster sur 2 noeud uniquement, (donc 2 RPI, et 2 SDcard uniquement), drbd pourrait être suffisant ?

    En fait, tout bien réfléchi, je ne pense pas utiliser la SDcard pour faire le Raid ce sera uniquement le système de fichier. Trop dangereux, ca m'est arrivé une bonne dizaine de fois d'avoir, suite à un reboot sauvage, flingué mon système de fichier et du réinstaller le système.

    Je pense plutôt mettre une petite clé usb de 8Go, sur chacun des raspberry, faire du LVM et faire la réplication du système de fichier dessus.

    Est-ce que dans ce cas drbd serait la meilleure solution ?

  • [^] # Re: Il n'y pas de remède miracle

    Posté par  . En réponse au message Méthode pour gérer les montées de version de structure de base de données. Évalué à 0.

    Whaou! ça c'est du conseil !

    Les objectifs

    - Après la mise à jour de sa BD consécutive à la MÀJ de 1 à 2 de ton soft, l'utilisateur remarque que sa fonction préférée qui marchait très bien dans 1 ne marche pas dans 2. Il ne peut se permettre d'attendre une MÀJ et souhaite retourner à la version 1. Comment fait-il?

    Effectivement, il ne peut pas faire de retour arrière. Pour le moment il est censé attendre une mise à jour corrective. Mais je pourrais le prévoir, d'ailleurs j'ai prévu plusieurs paramètres à mon script d'upgrade
    --install (pour l'installation initiale)
    --updade (pour la montée de version)
    --force-update (pour forcer la réinstallation de la même version, voire d'une version antérieure. Il suffira de fournir en paramètre le chemin de la sauvegarde de la version n-1)

    - Les système en prod peuvent-ils avoir un downtime?

    Arf.. j'avais pas pensé aux scénarios utilisateurs… si le système se met en mode maintenance pendant un scénario ça risque de merder. Donc ça c'est chiant.
    Je pourrais prévoir que l'update se fasse entre 2 scénarios. Une petite boucle dans mon script toutes les 10 secondes devrait faire l'affaire. Faut tester…

    Les contraintes:

    Quels sont les systèmes de BD supportés?

    Pour le moment c'est du mysql.

    L'upgrade de BD se fait côté soft ou bien avec un script SQL/sh?

    L'upgrade se fait via script sh/sql. Il est géré par un cron quotidien.

    Qui fait l'upgrade (admin, utilisateur inexpérimenté?)

    C'est un cron. L'upgrade est géré par le système tel qu'expliqué précédemment.

    Ton nouveau schéma est-il un sur ensemble strict de l'ancien (cas facile)?

    Je ne suis pas sur de comprendre cette remarque.
    Le fichier sql d'update se charge de créer des tables (ou d'en supprimer), de modifier des structures. et je n'ai pas utilisé de clé étrangères (pour le cas des violation de clé, etc)

    Que doit-il se passer si la version 1 de ton soft tourne sur une BD avec le schéma de la version 2?

    Je n'ai pas géré ce cas là car je pars du principe que toute nouvelle livraison contient forcément un Core, un Manager, Un Voice. Et elles doivent s'installer simultanément.


    C'est super, tes remarques sont très pertinentes. Je me rends compte de tous les cas que j'ai pu oublié dans ce contexte de système décentralisé.
    Ce que je peux te dire c'est donc que :

    Je développe mon projet sur mon ordi. Je le teste dans une VM (c'est ma qualif). Et je le teste chez moi ( c'est ma prod).
    Une fois que les corrections/évolutions me semblent intéressantes et stabilisées, je met en ligne les livrables.
    Aucun des scénarios utilisateurs ne pourront tourner au moment de la montée de version. Sauf si je gère une mise en pause de ces scénarios durant l'installation. raaa j'avais pas pensé à ça !!! Donc mon installation automatique ne pourra pas marcher. Sauf si j'impose à l'utilisateur une période de 10 minutes de mise en maintenance quotidienne du système.
    Et il faut forcément que le système (Core, Manager, Voice) se mette en mode maintenance en même temps pour se mettre à jour afin qu'il n'y ait pas de requête sur la base mysql.

    J'aimerai bien utiliser un système en cluster avec un système de fichier distribué, pour que le service mysql puisse démarrer sur n'importe quel noeud. Tous les noeuds se mettraient à jour les uns après les autres et redémarreraient. C'est chaud, faisable mais dangereux. Quoique terriblement GEEK.

    Voilà merci pour ton aide. Ca a été très instructif !

  • [^] # Re: Pourquoi n'allez vous pas voir ce que j'ai fait pour vous en faire une idée ?

    Posté par  . En réponse au message Méthode pour gérer les montées de version de structure de base de données. Évalué à 0.

    Super merci pour ton conseil.

    C'est effectivement cette voix que j'ai choisi de suivre. Je ne gère pas d'outils automatique, ce ne sont que des scripts développés par mes soins donc je suis censé maitriser les phases de montées de versions….
    Il y aura surement des fois où l'upgrade ne sera passera pas bien pour X raisons… il faudra alors faire un retour arrière et repasser l'export réalisé précédemment. Donc oui il faut que je fasse des exports/imports.

    Et pour ta dernière remarque, je ne peux que t'approuver. Je n'aurais pas du dire ça. Je suis dur avec mes développeurs… Et effectivement je me dois de les sensibiliser à ce contexte de production/d'exploitation.
    Ils le comprennent assez bien dans l'ensemble mais il faut du temps. Et ce n'est pas chose facile. Fut un temps où pour les pb de production, ils se connectaient directement en prod pour passer leur script de mise à jour… Ou voir même faire des installations "from scratch" qui consiste à faire un DROP du schéma et recommencer par des CREATE/INSERT… Mais maintenant ce n'est plus le cas et les choses avancent dans le bon sens.

    Souvent les projets sont développés en externe et les cahiers des charges de départs ne contiennent pas certaines des exigences liées à l'exploitation des environnements. Là nos chefs de projets n'y sont pour rien non plus. Mais c'est chiant de faire remonter au chef de projet que le CC n'a pas été analysé et relu par des exploitants.

    Enfin, c'est un long débat passionnant mais ce n'était pas le but de ce post. Merci tout de même pour tes remarques

  • [^] # Re: Pourquoi n'allez vous pas voir ce que j'ai fait pour vous en faire une idée ?

    Posté par  . En réponse au message Méthode pour gérer les montées de version de structure de base de données. Évalué à 1.

    Génial…
    MySQL Workbench c'est juste un peu trop lourd pour moi, mysqldiff me semble l'idéal.
    Existe t'il la même chose sans interface graphique :-) ????? héhé

    J'aime bien la méthode des scripts d'upgrade
    Les imports/exports ça me fait un peu peur, surtout lors de l'import à cause des clefs étrangères et primaires.
    C'est aussi parce que par expérience, en prod on a tjrs des emmerdes à cause des violation de contraintes lors des mises à jour des livrables
    c'est peut être aussi parce que nos développeurs sont des burnes qui savent pas ce que c'est que la production et l'exploitation… mais chut, le répétez pas

    Mouais…donc mon idée de départ semble être la bonne