Menu principal

Statut de la page

HAProxy : gérer la persistance des sessions lorsque l’application n’est pas conçue pour

Le problème avec les sessions HTTP c’est qu’elles sont complètement décorrélées des sessions TCP. Sans load balancer, ce n’est pas un problème, par contre dans une architecture multi serveur, un utilisateur peut être redirigé vers un serveur web qui n’est pas au courant de la session HTTP. Ce cas se produit typiquement avec un algorithme de type round robin. Ainsi, un utilisateur peut lors de la première connexion être authentifié sur un serveur puis lors de l’accès suivant être redirigé vers le second serveur moins chargé. Habituellement, pour gérer ce type de situation : On utilise un système de cache partagé entre les serveurs pour gérer les sessions : base de données, memcache, système de fichier L’application gère nativement le mode cluster Pour une même [...]
Lire la suite
Vus : 149
Publié par Morot : 19

Loadbalancer hautement disponible avec HAProxy et Keepalived

Introduction Cet article est une version actualisée de ce que j’avais publié dans GNU/Linux France Magazine numéro 163. Voici ce que l’on souhaite obtenir : Un service utilisateur hautement disponible avec des serveurs de type Postfix, Apache, Zimbra, Dovecot, etc… Les serveurs de ces backends devront être en mode actif/actif afin de pouvoir fournir un système apte à monter en charge La haute disponibilité sera gérée par des load balancer qui ne devront pas être eux mêmes un SPOF, ils seront donc également load balancés Et pour être en phase avec la législation, les backends devront avoir en visibilité les adresses IP des clients et ce contrairement à un certain nombre d’architectures où le load balancer effectue du NAT et donc [...]
Lire la suite
Vus : 273
Publié par Morot : 19

HHVM, l’autre interpréteur PHP!

HHVM est un interpréteur pour le langage PHP créé par Facebook. Il gère actuellement un sous ensemble confortable de PHP5 et le langage de programmation Hack dérivé de PHP. Les différences de fonctionnement entre Hack et PHP sont documentées sur le site officiel. De même, la plupart des modules PHP sont fonctionnels avec HHVM. Installation : Le projet HHVM a le bon goût de proposer des paquets Debian et Ubuntu, par conséquent : sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449 sudo add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" sudo apt-get update sudo apt-get install hhvm Pour tester, c’est très simple, on peut utiliser le démon HHVM. Créons une simple page PHP [...]
Lire la suite
Vus : 516
Publié par Morot : 19

HA avec Keepalived (GLMF 163)

Haute Disponibilité et répartition de charge avec KeepAlived ! Keepalived c’est un peu comme le miel, au début ça colle aux doigts et après on s’aperçoit que son parfum sucré est drôlement agréable. Je vais donc aborder les fondements de la haute disponibilité de services réseaux au niveau kernel pour arriver à une solution entièrement pilotée. De quoi s’agit-il ? Une architecture informatique est dite hautement disponible lorsque sa conception est pensée d’une part pour répondre à la panne d’un ou plusieurs équipements et d’autre part lorsqu’elle est capable d’encaisser un pic de charge sans sourciller. La solution présentée dans ces pages se focalise sur la notion de services réseaux. Bien entendu, la notion de haute disponibilité doit être prise en compte à tous les niveaux [...]
Lire la suite
Vus : 679
Publié par Morot : 19

Authentification LDAP sous Ubuntu 12.04 LTS

Voici un petit tuto très succint pour mettre en place rapidement une authentification LDAP. Je ne m’attarderai pas sur la sécurité, la réplication etc… On part d’un serveur vierge, avec le réseau configuré. Si votre domaine DNS c’est toto.local, le DIT LDAP sera dc=toto,dc=local. Pour moi ce sera dc=morot,dc=fr C’est parti : apt-get install slapd ldap-utils> On met en place nos OU qui contiendront les utilisateurs et les groupes (faire un control+D à la fin de la saisie) : ldapadd -x -W -D cn=admin,dc=morot,dc=fr dn: ou=People,dc=morot,dc=fr objectClass: top objectClass: organizationalUnit ou: People dn: ou=Groups,dc=morot,dc=fr objectClass: top objectClass: organizationalUnit ou: Groups On ajoute une première entrée [...]
Lire la suite
Vus : 2380
Publié par Morot : 19

Tuto Darktable : Effets sélectifs sur les couleurs en noir et le blanc

Les effets noir et blanc ou sépia, tout le monde connait et sait faire, bon nombre de logiciels ont déjà des filtres pré-existants avec parfois quelques variations possibles. Partons d’une simple photo de fleur avec un légers bokeh. Celle-ci est plutôt sans intérêt et pas très bien exposée. Importez cette image dans la bibliothèque Darktable, et rendez-vous dans couleur puis zone de couleur. Si le module n’est pas disponible, vous le trouverez [...]
Lire la suite
Vus : 2370
Publié par Morot : 19

Synology DS213J et ipkg

IPKG, c’est beau propre et frais, mais ça n’existe pas pour l’architecture Marvel Armada 370.  Mais grace à ces petits gars on sait maintenant que c’est à peu près compatible au niveau des binaires avec l’architecture Marvell Kirkwood mv6281 déjà bien supportée. Donc en fait, c’est très simple et fermez les yeux quand on dit que ce n’est pas compatible car les commandes suivantes suffisent pour installer le nécessaire : feed=http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable ipk_name=`wget -qO- $feed/Packages | awk '/^Filename: ipkg-opt/ {print $2}'` wget $feed/$ipk_name tar -xOvzf $ipk_name ./data.tar.gz | tar -C / -xzvf - mkdir -p /opt/etc/ipkg echo "src cross $feed" > [...]
Lire la suite
Vus : 3403
Publié par Morot : 19

Permettre l’exécution forcée de checks dans Nagios

Trop souvent (Debian/Ubuntu!) je tombe sur cette erreur dans un Nagios :


Error: Could not stat() command file ‘/var/lib/nagios3/rw/nagios.cmd’!

The external command file may be missing, Nagios may not be running, and/or Nagios may not be checking external commands. An error occurred while attempting to commit your command for processing.

La solution est pourtant simple, il suffit pourtant dans le fichier /etc/nagios/nagios.cfg de passer à 1 la valeur de la directive check_external_commands puis d’exécuter :


dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
service nagios3 restart

Vus : 1287
Publié par Morot : 19

Redirection HTTP-HTTPS avec HAProxy en conservant le host

Pour garder la conformité du certificat SSL multi-sites, j’avais besoin d’avoir une redirection HTTP vers HTTPS conditionnelle avec un fall back. Voila comment j’ai procédé :

frontend ft_http
    bind *:80
    log global
    mode http
    acl rule_1  hdr_dom(host) -i webmail.foo.fr
    acl rule_2  hdr_dom(host) -i webmail.bar.fr
    redirect location https://webmail.foo.fr if rule_1
    redirect location https://webmail.bar.fr if rule_2
    redirect location https://webmail.toto.fr
Vus : 1711
Publié par Morot : 19

Astuce HAProxy

Petit truc du jour, j’ai des serveurs HTTP/HTTPS en backend, je souhaite que le certificat SSL ne soit pas celui déployé sur le HAProxy, mais celui des serveurs load-balancés.

Dans un premier temps, il faut définir une socket https :

frontend ft_https
    bind 0.0.0.0:443
    mode tcp
    default_backend bk_https

Enfin, via le mode TCP et non pas HTTP afin que le SSL Connect soit fait par les serveurs désservis et non pas entre le navigateur et le HAProxy :

backend bk_https
    mode tcp
    balance roundrobin
    stick-table type ip size 200k expire 30m
    stick on src
    default-server inter 1s
    server www1 192.168.1.1:443 maxconn 10000 weight 1 check inter 10000
    server www2 192.168.1.2:443 maxconn 10000 weight 1 check inter 10000
Vus : 760
Publié par Morot : 19
Powered by BilboPlanet