私は、redisでfayeを実行するためにthinを使用しています。確実に設定する
Faye::WebSocket.load_adapter('thin')
すべてのトラフィックは haproxy を通過します (最初のトラフィックは、すべてのトラフィックを https にリダイレクトするため、proxied という名前が付けられます)
frontend proxied
bind 127.0.0.1:81 accept-proxy
timeout client 86400000
default_backend nginx_backend
acl is_websocket hdr(Upgrade) -i WebSocket
acl is_websocket hdr_beg(Host) -i ws
use_backend socket_backend if is_websocket
backend nginx_backend
balance roundrobin
option forwardfor #except 127.0.0.1 # This sets X-Forwarded-For
timeout server 30000
timeout connect 4000
server nginx1 localhost:8081 weight 1 maxconn 20000 check
backend socket_backend
balance roundrobin
option forwardfor except 127.0.0.1 # This sets X-Forwarded-For
timeout queue 5000
timeout server 86400000
timeout connect 86400000
server socket1 localhost:3100 weight 1 maxconn 20000 check
server socket2 localhost:3101 weight 1 maxconn 20000 check
server socket3 localhost:3102 weight 1 maxconn 20000 check
server socket4 localhost:3103 weight 1 maxconn 20000 check
...
http トラフィックの場合、/faye パスが含まれている場合は、同じセットのシン インスタンスに転送する nginx 経由でルーティングします。
私はhaproxyの専門家ではありませんが、これはwebsocketと長いポーリング接続で機能しています。