[server] HAProxy로로드 밸런싱을 위해 URL 매개 변수 사용

쿠키를 통해로드 밸런싱하는 시스템이 있지만 대안으로 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 %로 선택하지 않는 것 같습니다. 매개 변수를 쿼리 문자열로 사용하려고 시도했지만 (? 표시 뒤) 작동하지 않습니다. 내가 무엇을 잘못하고 있지?



답변

여기에 haproxy 메일 링리스트에 응답이 있습니다.

발췌

구성에서 아래 행을 간단히 업데이트하십시오.

 stick on url_param(SIMULATE_STICKY_SESSION,;) table simulate

기본적으로 url_param은 물음표 (?) 다음에있는 매개 변수를 검색합니다. 위의 구성은 세미콜론 (;)에서 쿠키를 찾아서 덮어 씁니다.

참고 : 최근 1.5dev haproxy, 바람직하게는 dev 18을 실행해야합니다.


답변