Intercambio de tiempo de espera de puerta de enlace HAProxy 504 2016

Intercambio de tiempo de espera de puerta de enlace HAProxy 504 2016

He estado intentando utilizar HAProxy como proxy y equilibrador de carga para mis dos servidores de correo Exchange 2016. Cada vez que llego a la IP del servidor HAProxy aparece el error "504 Gateway Time-out". Intenté cambiar la configuración pero no funcionó. Aquí está la configuración que estoy usando ahora mismo:

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

#---------------------------------------------------------------------
# Stripped down config
#---------------------------------------------------------------------

frontend exchange
    bind *:80
    default_backend exchange_servers

backend exchange_servers
    balance roundrobin
    server EXCHANGE1 192.168.80.140:443 check
    server EXCHANGE2 192.168.80.141:443 check 

Aquí está la página de estadísticas de Haproxy: Página de estadísticas de Haproxy:

Respuesta1

El error fue que era necesario configurarlo en "modo tcp" para configurarlo en un proxy L4 en lugar de un proxy L7. Aquí está la configuración de trabajo actualizada:

 global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
    option  forwardfor
    option  redispatch
#   option  contstats
    retries  3
        timeout connect 5000
        timeout client  15m
        timeout server  15m
    timeout http-request 10s
    timeout queue 1m
    timeout http-keep-alive 10s
    timeout check 10s
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

listen stats 
    bind :1936
    mode http
    stats enable
    stats hide-version
    stats realm Haproxy\ Statistics
    stats uri /haproxy_stats
    stats auth Username:Password

#---------------------------------------------------------------------
# Stripped down config
#---------------------------------------------------------------------

frontend exchange
    bind *:80
    bind *:443
    mode tcp
    default_backend exchange_servers

backend exchange_servers
    mode tcp
    balance roundrobin
    server EXCHANGE1 192.168.80.140:443 check
    server EXCHANGE2 192.168.80.141:443 check

información relacionada