HAProxy: multiple frontends, binding yang sama

10

Apakah ini mungkin / benar untuk mengonfigurasi beberapa antarmuka yang mengikat ke port yang sama pada 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

Dalam hal penggunaan ini, frontend A perlu diikat ke 80 dan ke kisaran 2000-5000. Untuk frontend B, saya tidak ingin mengikatnya ke semua port tersebut, hanya ke 80.

Saya pikir ini akan terlihat bersih jika saya mengkonfigurasinya dengan cara itu, alih-alih gunakan satu frontend dan mainkan dengan ACL, tetapi sepertinya konfigurasi itu membuat HAProxy berfungsi salah - terkadang menerapkan aturan yang benar dan kadang-kadang, tidak.

Sebelum bergabung dengan frontend tersebut sebagai satu, apakah mungkin menggunakan beberapa frontend yang mengikat port yang sama?

EDIT: BTW, saya menggunakan HAProxy 1.5

JonDoe297
sumber

Jawaban:

10

Tidak, Anda tidak bisa melakukan ini dan mengharapkan perilaku yang masuk akal.

Permintaan untuk port 80 akan tiba secara acak di ujung depan. Hasil dari konfigurasi seperti itu tidak terdefinisi, dan meskipun tidak secara teknis saya valid, itu untuk semua tujuan praktis konfigurasi yang tidak masuk akal.

Semua aturan yang berlaku pada port 80 (atau port apa saja) perlu ditentukan pada satu frontend(atau satu listen) yang terikat ke port 80.

Michael - sqlbot
sumber