HAProxy: plusieurs frontends, même bind

10

Est-il possible / correct de configurer plusieurs frontaux qui se lient au même port sur HAProxy?

frontend A
    bind :80
    bind :2000-5000
    acl rule_about_A
    use_backend server_A if rule_about_A

frontend B
    bind :80
    acl rule_about_B
    use_backend server_B if rule_about_B

Dans ce cas d'utilisation, le frontend A doit se lier à 80 et à la plage 2000-5000. Pour le frontend B, je ne veux pas le lier à tous ces ports, seulement à 80.

Je pensais que ça aurait l'air propre si je le configurais de cette façon, au lieu d'utiliser un seul frontend et de jouer avec les ACL, mais il semble que cette configuration rend HAProxy fonctionne mal - applique parfois la bonne règle et parfois non.

Avant de joindre ces frontends en un seul, est-il possible d'utiliser plusieurs frontaux qui se lient aux mêmes ports?

EDIT: BTW, j'utilise HAProxy 1.5

JonDoe297
la source

Réponses:

11

Non, vous ne pouvez pas faire cela et vous attendre à un comportement sensé.

Les demandes pour le port 80 arriveront apparemment au hasard à une extrémité ou à l'autre. Le résultat d'une telle configuration n'est pas défini, et bien qu'il ne soit pas techniquement valable, il s'agit à toutes fins pratiques d'une configuration absurde.

Toutes les règles applicables sur le port 80 (ou n'importe quel port) doivent être spécifiées sur un seul frontend(ou un seul listen) qui est lié au port 80.

Michael - sqlbot
la source