URL パラメーターに基づいて接続をスティッキーにすることが可能であることはわかっています :
URLパスのIDに基づいてそれを行うことも可能ですか?
私のURLが次の場合: /objects/:objectId
どうにかして :objectId を使用して接続を固定することはできますか?
編集
以下の構成を使用して、URL パスでリクエストをスティッキーにする負荷分散を行うことができました。
global
#daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend servers
backend servers
balance roundrobin
stick-table type string size 200k expire 30m
stick on path
server server1 127.0.0.1:8000
server server2 127.0.0.1:8001
listen stats
bind 127.0.0.1:9000
mode http
log global
maxconn 10
stats enable
stats hide-version
stats refresh 5s
stats show-node
stats auth admin:password
stats uri /haproxy?stats
現在の問題は、サーバーの 1 つがダウンした場合、スティック テーブルが更新されないことです。サーバーの 1 つに到達できない場合、そのサーバーを指すスティック テーブル内のエントリが削除されるようにするにはどうすればよいですか?
最終回答
わかりました、私はそれを理解することができました。以下の構成では、リクエストが URL パスに固定され、HAProxy は 250 ミリ秒ごとに /health への HTTP GET を作成し、200 を返さない場合はサーバーがダウンしていると見なし、スティックからすべてのエントリを削除します。テーブル。
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend servers
backend servers
balance roundrobin
stick-table type string size 200k expire 30m
option httpchk GET /health
http-check expect status 200
stick on path,word(2,/) if { path_beg /objects/ }
server server1 127.0.0.1:8000 check inter 250
server server2 127.0.0.1:8001 check inter 250
listen stats
bind 127.0.0.1:9000
mode http
log global
maxconn 10
stats enable
stats hide-version
stats refresh 5s
stats show-node
stats auth admin:password
stats uri /haproxy?stats