2013-03-26 3 views
3

나는 WebSocket 용으로 토네이도가있는 Haproxy를 사용하고 있습니다. 토네이도에 직접 연결하면 잘 작동하지만 50 초 후에 연결이 끊어지면 HAproxy를 사용합니다. 내 Haproxy 설정 파일은 다음과 같습니다.HAproxy에서 50 초 후에 websocket 연결이 닫힙니다. 그것을 바꾸는 방법?

global 
     daemon 
     maxconn 4032 
     pidfile /var/run/haproxy.pid 

    defaults 
     mode http 
     timeout connect 5000ms 
     timeout client 50000ms 
     timeout server 50000ms 
     option http-server-close 
     maxconn 4032 

    frontend http-in 
     bind *:80 
     acl is_websocket hdr_end(host) -i WebSocket 
     use_backend servers if is_websocket 
     default_backend servers 
     option redispatch 
     option http-server-close 
     maxconn 2000 
     contimeout 500000 
     clitimeout 500000 
     srvtimeout 500000 
     contimeout 500000   
     timeout contimeout 500000 
     timeout connect 500000 

    backend servers 
     server server1 127.0.0.1:8886 maxconn 4032 

위의 설정을 사용하면 내 웹 소켓 연결이 자동으로 50 초 후에 손실됩니다. 영구 연결을 원합니다. HAproxy에서 연결을 영구적으로 만들 수있는 방법이 있습니까?

내가 대답을 발견

답변

1

, 나는 내가 0 값을 주면 다음은 무한 연결 시간 초과 값되기 때문에 다음 내 연결이 영구 연결이 defaults 섹션에서 timeout connect 0ms, timeout client 0ms, timeout server 0ms을 변경했습니다. 이 시간 제한을 해제하는 나쁜 생각 https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy/

참고 : 내 최종 작업 설정은 다음과 같습니다

, HAProxy는 웹 소켓 작동 방법에 대한 더 나은 이해를 위해

global 
     daemon 
     maxconn 4032 
     pidfile /var/run/haproxy.pid 

    defaults 
     mode http 
     timeout connect 0ms 
     timeout client 0ms 
     timeout server 0ms 
     option http-server-close 
     maxconn 4032 

    frontend http-in 
     bind *:80 
     acl is_websocket hdr_end(host) -i WebSocket 
     use_backend servers if is_websocket 
     default_backend servers 
     option redispatch 
     option http-server-close 
     maxconn 2000 
     contimeout 500000 
     clitimeout 500000 
     srvtimeout 500000 
     contimeout 500000   
     timeout contimeout 500000 
     timeout connect 500000 
     timeout client 500000 

    backend servers 
     server server1 127.0.0.1:8886 maxconn 4032 
5

, 당신은이 기사를 읽어야한다 ...

티스트

3

시간 제한을 0ms, 제한 시간 클라이언트 0ms, 시간 초과 서버 0ms를 기본값 섹션에 연결하면 연결이 영구적으로 연결됩니다. 값을 0으로 지정하면 무한 연결 제한 시간 값이 설정됩니다.

이러한 옵션은 일반 HTTP 트래픽에도 적용되므로이 방법을 사용하지 마십시오. 연결/클라이언트/서버 시간 제한을 적절한 값으로 설정하고 웹 소켓에 timeout tunnel을 사용하십시오. 양방향 연결을 클라이언트와 서버 사이에 확립되면

터널 제한이 적용되고, 연결은 모두 방향 비활성 상태. 이 시간 초과는 연결이 터널이되는 경우 클라이언트 및 서버 시간 초과를 모두 대체합니다.

(참조 : http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#timeout%20tunnel)