Yop,

Moi je regarderais du coté de keepalived:
- VRRP pour tes IPs flottantes
- LVS pour la partie load balancing.

Pour tes VIPs, tu devrais pas avoir de soucis. Pour la partie LVS, tu peux tenter l'approche natting, avec marquage du packet (fwmark). Quand tes paquets sont marqué, tu peux les rediriger sur la bonne interface de sortie avec une regle iptables (rien de moche, LVS implique souvent des regles iptables).

Cette solution fonctionnera "simplement" si tes Load Balancer sont des machines distinctes, et si c'est la GW par défaut de ton réseau. Si tu n'es pas dans ce cas de figure, il y'a toujours moyen de faire, mais tu peux rentrer dans des setups qui commencent à devenir compliqué. Pour moi, c'est la méthode élégante, mais peut-etre pas la plus simple.

C'est une approche, mais je serais curieux de savoir s'il y'a d'autres solutions L2 du type. Perso, je fais l'apologie de cette approche dans mon milieu pro, mais ça a du mal à prendre, les gens preferent du HAProxy, mais perso j'aime moins:
- Faire de LoadBalancing L3, c'est que bon pour le HTTP quasiment
- LVS utilise les fonctionnalité du noyau, alors que HAProxy pas
- KeepAlived conf beats HAProxy conf


Le 24 août 2016 à 16:15, Jean-François Gigand <jf@geonef.fr> a écrit :
Bonsoir,

Justement c'est le contraire du classique load-balancing de service...

Merci David, j'ai regardé et le mode "nth" avec --every et --packet devraient coller au besoin.

Je dois alors utiliser -j MASQUERADE (comme la route par défaut, d'ailleurs, puisque les requêtes proviennent d'un container LXC) mais je dois spécifier l'IP pour le nat sur chacune de ces règles, ce que je ne sais pas (encore) faire (d'habitude c'est la table de routage qui s'en occupe).


Jean-François Gigand - Geonef
Paris, France - http://geonef.fr/

Le 24 août 2016 à 22:03, Christophe Dezé <christophedeze@wanadoo.fr> a écrit :

bonjour,

as tu regardé du coté de docker qui peut faire du round-robin en entrée sur plusieurs docker/squid en sortie ?


Le 24/08/2016 à 19:09, Jean-François Gigand a écrit :
Bonjour,

J'ai besoin de mettre en place un proxy HTTP qui bind les requêtes sortantes à une IP source parmi une liste en round-robin.

Par exemple, ayant configuré interfaces(5) avec des ip "failover" comme ceci :

iface eth0:ip1 inet static
      address 1.2.3.4/32
iface eth0:ip2 inet static
      address 1.2.3.5/32
iface eth0:ip3 inet static
      address 1.2.3.6/32

le proxy choisira de binder sa première connexion sortante à 1.2.3.4 puis 1.2.3.5, 1.2.3.6 puis à nouveau 1.2.3.4, etc.

Idéalement, le proxy choisit l'IP dans l'ordre par domaine, ce qui dans l'exemple donnerait [domaine de destination -> IP source] :

domaine1.com -> 1.2.3.4
domaine2.com -> 1.2.3.4
domaine1.com -> 1.2.3.5
domaine1.com -> 1.2.3.6
domaine2.com -> 1.2.3.5

Le proxy doit aussi pouvoir binder en IPv6 (si la destination est accessible en IPv6, même si le client du proxy est IPv4).

Je n'ai pas l'impression que Squid ou HAproxy puissent répondre à ce besoin, mais j'aimerais en être sûr

Est-ce quelqu'un connaît une solution ou une approche à suggérer ?
Ou bien vaut-il mieux écrire un code spécifique ?
(qui devra gérer les requêtes simultanées... en NodeJS par exemple)

Merci !

Jean-François Gigand - Geonef
Paris, France - http://geonef.fr/



_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/


_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/


_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/