Menggunakan parameter URL untuk menyeimbangkan beban dengan HAProxy

9

Saya memiliki sistem yang memuat penyeimbangan melalui cookie, tetapi saya ingin menggunakan parameter URL sebagai alternatif. (Secara khusus, saya memiliki aplikasi ujung depan yang tidak mendukung cookie). Setup saya sedikit rumit - Saya memiliki sistem multipemain dan saya menggunakan tabel stick dengan cookie ini untuk memastikan orang yang berbeda memainkan game yang sama pergi ke server yang sama. Ini berfungsi dengan baik, kecuali bahwa parameter URL tampaknya tidak melakukan apa-apa. Ini semua dengan haproxy 1.5dev17

Backend saya yang relevan adalah:

defaults
   log            global
   mode           http
   option         httplog
   option         dontlognull
   retries        3
   option         redispatch
   option         http-server-close

   maxconn        2000
   contimeout     5000
   clitimeout     50000
   srvtimeout     50000

backend simulate
    option httpchk OPTIONS /simulate/api/status
    stick-table type string len 40 size 5M expire 30m
    stick store-response set-cookie(SIMULATE_STICKY_SESSION) table simulate
    stick on cookie(SIMULATE_STICKY_SESSION) table simulate
    stick on url_param(SIMULATE_STICKY_SESSION) table simulate

    server app1 10.0.2.11:8080  cookie app1 check inter 10000
    server app2 10.0.3.11:8080  cookie app2 check inter 10000

Perhatikan bahwa SIMULATE_STICKY_SESSION dihasilkan oleh aplikasi saya (berdasarkan tim pemain).

Ketika saya memanggil URL, saya harus mengirimkan jsessionid (sehingga Tomcat akan menemukan sesi yang benar). Jadi saya lakukan

http://my.domain.com/myapp/url;SIMULATE_STICKY_SESSION=1918C909D3F30DB09C2F96B75C57D015.app1+jsessionid;jsessionid=1918C909D3F30DB09C2F96B75C57D015.app1

Ini tampaknya tidak mengambil parameter sesi lengket karena 50% dari waktu itu pergi ke server yang salah. Saya mencoba menggunakan param sebagai string kueri (setelah tanda?) Tetapi itu tidak berhasil. Apa yang saya lakukan salah?

Will Glass
sumber

Jawaban:

3

Sebuah tanggapan diberikan di sini di milis haproxy

kutipan

cukup perbarui baris di bawah ini dalam konfigurasi Anda untuk:

 stick on url_param(SIMULATE_STICKY_SESSION,;) table simulate

Secara default, url_param mencari parameter setelah tanda tanya (?). Konfigurasi di atas menimpa ini dengan mencari cookie Anda dari titik koma (;).

Catatan: Anda harus menjalankan haproxy 1.5dev baru-baru ini, terutama dev 18.

Willy Tarreau
sumber
Seperti yang tercantum pada daftar pengguna, jawabannya adalah mengubah baris menjadi: tetap menggunakan url_param (SIMULATE_STICKY_SESSION ,;) simulasi tabel
Will Glass