Created
December 7, 2018 07:04
-
-
Save davalapar/1fc8ed0c065a2f2dd506633cfe5f2c97 to your computer and use it in GitHub Desktop.
HAProxy Websocket 40K Connections
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#--------------------------------------------------------------------- | |
# Example configuration for a possible web application. See the | |
# full configuration options online. | |
# | |
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt | |
# | |
#--------------------------------------------------------------------- | |
#--------------------------------------------------------------------- | |
# Global settings | |
#--------------------------------------------------------------------- | |
global | |
# to have these messages end up in /var/log/haproxy.log you will | |
# need to: | |
# | |
# 1) configure syslog to accept network log events. This is done | |
# by adding the '-r' option to the SYSLOGD_OPTIONS in | |
# /etc/sysconfig/syslog | |
# | |
# 2) configure local2 events to go to the /var/log/haproxy.log | |
# file. A line like the following can be added to | |
# /etc/sysconfig/syslog | |
# | |
# local2.* /var/log/haproxy.log | |
# | |
log 127.0.0.1 local2 | |
nbproc 4 | |
ulimit-n 1000000 | |
chroot /var/lib/haproxy | |
pidfile /var/run/haproxy.pid | |
maxconn 400000 | |
user root | |
group root | |
daemon | |
# turn on stats unix socket | |
stats socket /var/lib/haproxy/stats | |
#--------------------------------------------------------------------- | |
# common defaults that all the 'listen' and 'backend' sections will | |
# use if not designated in their block | |
#--------------------------------------------------------------------- | |
defaults | |
mode http | |
log global | |
option httplog | |
option dontlognull | |
option http-server-close | |
option forwardfor except 127.0.0.0/8 | |
option redispatch | |
retries 3 | |
timeout http-request 10s | |
timeout queue 1m | |
timeout connect 10s | |
timeout client 7m | |
timeout server 8m | |
timeout http-keep-alive 10s | |
timeout check 10s | |
maxconn 400000 | |
#--------------------------------------------------------------------- | |
# main frontend which proxys to the backends | |
#--------------------------------------------------------------------- | |
frontend main *:5000 | |
acl url_static path_beg -i /static /images /javascript /stylesheets | |
acl url_static path_end -i .jpg .gif .png .css .js | |
use_backend static if url_static | |
default_backend app | |
frontend http | |
bind *:80 | |
## routing based on websocket protocol header | |
maxconn 400000 | |
acl hdr_connection_upgrade hdr(Connection) -i upgrade | |
acl hdr_upgrade_websocket hdr(Upgrade) -i websocket | |
use_backend bk_ws if hdr_connection_upgrade hdr_upgrade_websocket | |
#--------------------------------------------------------------------- | |
# static backend for serving up images, stylesheets and such | |
#--------------------------------------------------------------------- | |
backend static | |
balance roundrobin | |
server static 127.0.0.1:4331 check | |
#--------------------------------------------------------------------- | |
# round robin balancing between the various backends | |
#--------------------------------------------------------------------- | |
backend app | |
balance roundrobin | |
server app1 127.0.0.1:5001 check | |
server app2 127.0.0.1:5002 check | |
server app3 127.0.0.1:5003 check | |
server app4 127.0.0.1:5004 check | |
backend bk_ws | |
mode http | |
balance roundrobin | |
maxconn 400000 | |
server ws1 192.168.3.37:20000 source 192.168.3.101 | |
server ws2 192.168.3.37:20000 source 192.168.3.102 | |
server ws3 192.168.3.37:20000 source 192.168.3.103 | |
server ws4 192.168.3.37:20000 source 192.168.3.104 | |
server ws5 192.168.3.37:20000 source 192.168.3.105 | |
server ws6 192.168.3.37:20000 source 192.168.3.106 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment