การใช้พารามิเตอร์ URL สำหรับการปรับสมดุลโหลดด้วย HAProxy


9

ฉันมีระบบที่โหลดบาลานซ์ผ่านคุกกี้ แต่ฉันต้องการใช้พารามิเตอร์ URL เป็นทางเลือก (โดยเฉพาะฉันมีแอพพลิเคชั่นส่วนหน้าซึ่งไม่รองรับคุกกี้) การตั้งค่าของฉันค่อนข้างซับซ้อน - ฉันมีระบบผู้เล่นหลายคนและฉันใช้ตารางแท่งกับคุกกี้นี้เพื่อให้แน่ใจว่าผู้คนที่เล่นเกมเดียวกันต่างไปที่เซิร์ฟเวอร์เดียวกัน ใช้งานได้ดียกเว้นว่าพารามิเตอร์ URL ดูเหมือนจะไม่ทำอะไรเลย นี่คือทั้งหมดที่มี haproxy 1.5dev17

แบ็กเอนด์ที่เกี่ยวข้องของฉันคือ:

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

โปรดทราบว่าแอปของฉันสร้างขึ้นโดย SIMULATE_STICKY_SESSION (ขึ้นอยู่กับทีมผู้เล่น)

เมื่อฉันเรียก URL ฉันต้องผ่าน jsessionid (เพื่อให้ Tomcat พบเซสชั่นที่ถูกต้อง) ดังนั้นฉันกำลังทำ

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

ดูเหมือนว่านี่จะไม่ได้รับพารามิเตอร์เซสชั่นเหนียวเป็น 50% ของเวลาไปยังเซิร์ฟเวอร์ที่ไม่ถูกต้อง ฉันลองใช้พารามิเตอร์เป็นสตริงการสืบค้น (หลังเครื่องหมาย?) แต่ก็ไม่ได้ผล ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


3

คำตอบมีให้ที่นี่ในรายชื่อผู้รับจดหมาย haproxy

สิ่งที่สกัดมา

เพียงอัปเดตบรรทัดด้านล่างในการกำหนดค่าของคุณเป็น:

 stick on url_param(SIMULATE_STICKY_SESSION,;) table simulate

โดยค่าเริ่มต้น url_param ค้นหาพารามิเตอร์หลังเครื่องหมายคำถาม (?) การกำหนดค่าด้านบนเขียนทับสิ่งนี้โดยมองหาคุกกี้ของคุณจากเซมิโคลอน (;)

หมายเหตุ: คุณต้องใช้งาน 1.5dev haproxy ล่าสุดโดยเฉพาะอย่างยิ่ง dev 18


ตามที่ระบุไว้ในรายชื่อผู้ใช้คำตอบคือการเปลี่ยนบรรทัดเป็น: ติดที่ url_param (SIMULATE_STICKY_SESSION ,;) จำลองตาราง
Will Glass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.