0

HAProxy を使用して socket.io リクエストの負荷分散を試みています。以下は私の構成です:

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000

frontend all 0.0.0.0:8888
    mode http
    timeout client 120s

    option forwardfor
    # Fake connection:close, required in this setup.
    option http-server-close
    option http-pretend-keepalive

    acl is_socketio path_beg /socket.io

    use_backend socket-servers if is_socketio
    default_backend http-servers


backend http-servers
    balance roundrobin
    option httpclose
    option forwardfor

    # Roundrobin switching
    server node-1 172.14.2.25:8887 check
    server node-2 172.14.2.28:8887 check


backend socket-servers
    mode http
    timeout server  120s
    balance roundrobin
    # based on cookie set in header
    # haproxy will add the cookies for us
    option forwardfor
    cookie SERVERID insert indirect nocache
    server node1 172.14.2.25:8887 cookie node1 weight 1 maxconn 1024 check
    server node2 172.14.2.28:8887 cookie node2 weight 1 maxconn 1024 check

この構成では、ソケット接続を作成しようとするとタイムアウトが発生します。

ただし、最後の 2 行 [ server node1 172.14.2.25:8887 cookie node1 weight 1 maxconn 1024 checkまたはserver node2 172.14.2.28:8887 cookie node2 weight 1 maxconn 1024 check ] のいずれかを削除すると、ソケットは正しく接続されます。

構成の何が問題なのかわかりません。どんな助けでも大歓迎です。

ティア:)

4

1 に答える 1

1

バックエンド socket-serverの構成で、balance roundrobin をbalance sourceに変更する必要がありました。それはうまくいきました!:)

于 2016-06-02T07:49:11.230 に答える