앱 서버에 설정된 쿠키를 사용하여 요청을 haproxy로 어떻게 라우트 할 수 있습니까?기존 쿠키를 사용하여 라우팅
예 : SESS=<hash-of-username>
haproxy은 어떤 경우에 그 자체로 쿠키를 삽입하지 않아야합니다. 그냥 따라 요청 및 경로에서 쿠키를 읽으려면
앱 서버에 설정된 쿠키를 사용하여 요청을 haproxy로 어떻게 라우트 할 수 있습니까?기존 쿠키를 사용하여 라우팅
예 : SESS=<hash-of-username>
haproxy은 어떤 경우에 그 자체로 쿠키를 삽입하지 않아야합니다. 그냥 따라 요청 및 경로에서 쿠키를 읽으려면
, 당신은 당신의 구성에서이 같은 작업을 수행 할 수 있습니다
frontend http
acl cookie_found hdr_sub(cookie) COOKIENAME
use_backend app_server if cookie_found
backend app_server
balance roundrobin
server channel1 X.X.X.X:PORT #Host1
server channel2 Y.Y.Y.Y:PORT #Host2
당신은 균형을 위해 기존의 쿠키를 사용할 수 없습니다, 당신은 할 수 방법을 URI 매개 변수를 사용하십시오. md5()를 사용하거나 쿠키의 해쉬 테이블을 만들 수는 없으며 최소한 문서화되어 있지는 않습니다. 다른 결과를 얻으려면 접두어 매개 변수를 쿠키에 사용할 수 있습니다. 그것은 당신이 찾고있는 것일 수도 있습니다 (당신이 또 다른 쿠키의 생성을 피하고 싶다면).
그래서 경우에 설정은 다음과 같이 보일 것이다 :
backend bk_web
balance roundrobin
cookie SESS prefix indirect nocache
server s1 192.168.10.11:80 check cookie s1
server s2 192.168.10.21:80 check cookie s2
요청이 쿠키없이 도착
은 모든 서버는 라운드 로빈 요청에 의해 선택이로 리디렉션됩니다. 응답이 백엔드에서 도착하면 HAProxy는 SESS 쿠키를 확인하고 설정된 경우 서버 이름 (sX)을 쿠키에 추가하여 클라이언트에 보냅니다. 다음 요청은 그 쿠키를 보낼 때 HAProxy는 SX ~ 부분을소스 스트립으로 브라우저에서 쿠키가 보이는 SX ~ 좋아하지만, 백엔드 서버는 쿠키에 를 본다 : load balancing, affinity, persistence, sticky sessions: what you need to know
나는이 방법을 추천 할 수 haproxy 뒤에 특정 서버를 테스트 :
frontend http
acl is_cookie_hack_1 hdr_sub(cookie) server_test_hack=server1
acl is_cookie_hack_2 hdr_sub(cookie) server_test_hack=server2
... insert your normal acl rules here
use_backend bk_server_1 if is_cookie_hack_1
use_backend bk_server_2 if is_cookie_hack_2
... insert your normal use_backend expressions here
backend bk_server_1
...
backend bk_server_2
...
내가 내 브라우저의 JS 콘솔 B의 자바 스크립트에 의해 server_test_hack 쿠키를 삽입을 이 스크립트의 내용은 다음과 같습니다.
document.cookie="server_test_hack=server1";
이 솔루션을 테스트하고 매력처럼 작동했습니다. 감사합니다! :) – marcostvz
쿠키 값을 사용하여 균형을 맞출 수는 없지만 쿠키가 있는지 만 확인합니다. –
균형을 추가하기 위해 "백엔드"구성을 편집했습니다. 이것이 당신이 찾고있는 것이라면 나는 확실하지 않습니다. – Gooner
아니요, 여전히 ** 쿠키 값 **을 사용하여 균형을 조정하지 않습니다. –