HAProxy: vários frontends, o mesmo bind

6

É possível / correto configurar múltiplos frontends 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

Neste caso de uso, o frontend A precisa se vincular a 80 e ao intervalo 2000-5000. Para o frontend B, eu não quero ligá-lo a todas essas portas, apenas para 80.

Eu achei que ficaria limpo se eu configurasse dessa maneira, ao invés disso, usaria um único frontend e tocaria com as ACLs, mas parece que a configuração está fazendo o HAProxy funcionar errado - às vezes aplica a regra correta e algumas 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

    
por JonDoe297 04.08.2016 / 22:09

1 resposta

9

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

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

Todas as regras que se aplicam à porta 80 (ou qualquer porta) precisam ser especificadas em um único frontend (ou um único listen ) que está vinculado à porta 80.

    
por 05.08.2016 / 05:37

Tags