HAProxy: mehrere Frontends, gleiche Bindung

10

Ist dies möglich / richtig, um mehrere Frontends zu konfigurieren, die an denselben Port auf HAProxy gebunden sind?

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

In diesem Anwendungsfall muss das Frontend A an 80 und an den Bereich 2000-5000 gebunden sein. Für das Frontend B möchte ich es nicht an alle diese Ports binden, sondern nur an 80.

Ich dachte, es würde sauber aussehen, wenn ich es auf diese Weise konfiguriere, stattdessen ein einzelnes Frontend verwende und mit den ACLs spiele, aber es scheint, dass die Konfiguration dazu führt, dass HAProxy falsch funktioniert - manchmal wird die richtige Regel angewendet und manchmal nicht.

Ist es möglich, mehrere Frontends zu verwenden, die an dieselben Ports gebunden sind, bevor Sie diese Frontends als ein einziges verbinden ?

EDIT: Übrigens verwende ich HAProxy 1.5

JonDoe297
quelle

Antworten:

10

Nein, das können Sie nicht und erwarten vernünftiges Verhalten.

Die Anfragen für Port 80 kommen scheinbar zufällig an dem einen oder anderen Frontend an. Das Ergebnis einer solchen Konfiguration ist undefiniert, und obwohl es technisch nicht gültig ist, handelt es sich für alle praktischen Zwecke um eine unsinnige Konfiguration.

Alle Regeln, die für Port 80 (oder einen beliebigen Port) gelten, müssen für einen einzelnen frontend(oder einen einzelnen listen) Port angegeben werden, der an Port 80 gebunden ist.

Michael - sqlbot
quelle