0

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
4

1 に答える 1