haproxy.cfg 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. ##----------------------------------------------------------------
  2. ## global 2021/04/05
  3. ##----------------------------------------------------------------
  4. global
  5. log stdout format raw daemon debug
  6. # Replace 1024000 with deployment connections
  7. maxconn 1000
  8. nbproc 1
  9. nbthread 2
  10. cpu-map auto:1/1-2 0-1
  11. tune.ssl.default-dh-param 2048
  12. ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP
  13. # Enable the HAProxy Runtime API
  14. # e.g. echo "show table emqx_tcp_back" | sudo socat stdio tcp4-connect:172.100.239.4:9999
  15. stats socket :9999 level admin expose-fd listeners
  16. ##----------------------------------------------------------------
  17. ## defaults
  18. ##----------------------------------------------------------------
  19. defaults
  20. log global
  21. mode tcp
  22. option tcplog
  23. # Replace 1024000 with deployment connections
  24. maxconn 1000
  25. timeout connect 30000
  26. timeout client 600s
  27. timeout server 600s
  28. ##----------------------------------------------------------------
  29. ## API
  30. ##----------------------------------------------------------------
  31. frontend emqx_mgmt
  32. mode tcp
  33. option tcplog
  34. bind *:18083
  35. default_backend emqx_mgmt_back
  36. frontend emqx_dashboard
  37. mode tcp
  38. option tcplog
  39. bind *:18083
  40. default_backend emqx_dashboard_back
  41. backend emqx_mgmt_back
  42. mode http
  43. # balance static-rr
  44. server emqx-1 node1.emqx.io:18083
  45. server emqx-2 node2.emqx.io:18083
  46. backend emqx_dashboard_back
  47. mode http
  48. # balance static-rr
  49. server emqx-1 node1.emqx.io:18083
  50. server emqx-2 node2.emqx.io:18083
  51. ##----------------------------------------------------------------
  52. ## public
  53. ##----------------------------------------------------------------
  54. frontend emqx_tcp
  55. mode tcp
  56. option tcplog
  57. bind *:1883
  58. # Reject connections that have an invalid MQTT packet
  59. # tcp-request content reject unless { req.payload(0,0), mqtt_is_valid }
  60. default_backend emqx_tcp_back
  61. frontend emqx_ws
  62. mode tcp
  63. option tcplog
  64. bind *:8083
  65. default_backend emqx_ws_back
  66. backend emqx_tcp_back
  67. mode tcp
  68. # Create a stick table for session persistence
  69. stick-table type string len 32 size 100k expire 30m
  70. # Use ClientID / client_identifier as persistence key
  71. stick on req.payload(0,0),mqtt_field_value(connect,client_identifier)
  72. server emqx-1 node1.emqx.io:1883 check-send-proxy send-proxy-v2
  73. server emqx-2 node2.emqx.io:1883 check-send-proxy send-proxy-v2
  74. backend emqx_ws_back
  75. mode tcp
  76. balance static-rr
  77. server emqx-1 node1.emqx.io:8083 check-send-proxy send-proxy-v2
  78. server emqx-2 node2.emqx.io:8083 check-send-proxy send-proxy-v2
  79. ##----------------------------------------------------------------
  80. ## TLS
  81. ##----------------------------------------------------------------
  82. frontend emqx_ssl
  83. mode tcp
  84. option tcplog
  85. bind *:8883 ssl crt /tmp/emqx.pem ca-file /usr/local/etc/haproxy/certs/cacert.pem verify required no-sslv3
  86. default_backend emqx_ssl_back
  87. frontend emqx_wss
  88. mode tcp
  89. option tcplog
  90. bind *:8084 ssl crt /tmp/emqx.pem ca-file /usr/local/etc/haproxy/certs/cacert.pem verify required no-sslv3
  91. default_backend emqx_wss_back
  92. backend emqx_ssl_back
  93. mode tcp
  94. balance static-rr
  95. server emqx-1 node1.emqx.io:1883 check-send-proxy send-proxy-v2-ssl-cn
  96. server emqx-2 node2.emqx.io:1883 check-send-proxy send-proxy-v2-ssl-cn
  97. backend emqx_wss_back
  98. mode tcp
  99. balance static-rr
  100. server emqx-1 node1.emqx.io:8083 check-send-proxy send-proxy-v2-ssl-cn
  101. server emqx-2 node2.emqx.io:8083 check-send-proxy send-proxy-v2-ssl-cn