HAProxy: várias interfaces, o mesmo vínculo

10

Isso é possível / correto para configurar várias interfaces que se ligam à mesma porta no 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

Nesse caso de uso, o front-end A precisa se vincular a 80 e ao intervalo 2000-5000. Para o frontend B, não quero vinculá-lo a todas essas portas, apenas a 80.

Eu pensei que ficaria limpo se eu configurá-lo dessa maneira, em vez de usar um único frontend e jogar com as ACLs, mas parece que essa configuração está fazendo o HAProxy funcionar errado - às vezes aplica a regra correta e às vezes não.

Antes de unir esses frontends como um único, é possível usar vários frontends que se ligam às mesmas portas?

EDIT: BTW, estou usando o HAProxy 1.5

JonDoe297
fonte

Respostas:

10

Não, você não pode fazer isso e espera um comportamento sensato.

Os pedidos para a porta 80 chegarão aparentemente aleatoriamente em um front end ou no outro. O resultado dessa configuração é indefinido e, embora não seja tecnicamente válido, é para todos os fins práticos uma configuração sem sentido.

Todas as regras aplicáveis ​​na porta 80 (ou em qualquer porta) precisam ser especificadas em uma única frontend(ou uma única listen) que esteja vinculada à porta 80.

Michael - sqlbot
fonte