Como configurar o HAProxy para rotear por porta sem usar vários frontend ou listeners

3

Estou tentando configurar o Haproxy v1.5 para conexões Jabber que são executadas em várias portas no mesmo IP. Para manter a configuração o mais simples possível, gostaria de usar um único frontend e um ou mais backends. Existe uma maneira de eu passar a porta de origem para o back-end ou usar uma ACL para rotear para um back-end diferente com base na porta?

frontend Jabber_IN
    bind 10.60.0.12:5222 name port5222
    bind 10.60.0.12:5223 name port5223
    bind 10.60.0.12:9090 name port9090
    bind 10.60.0.12:9091 name port9091
    bind 10.60.0.12:7070 name port7070
    bind 10.60.0.12:7443 name port7443
    bind 10.60.0.12:5229 name port5229 

    mode tcp
    option tcplog
    option tcpka

    timeout client 60m
    timeout server 60m
    timeout http-keep-alive 1m

    default_backend Jabber

backend Jabber
     tcp-check connect
     tcp-check send PING\r\n
     tcp-check expect string +PONG
    server Server1ZoneD 10.60.30.209:80  check
    server Server1ZoneE 10.60.47.4:80    check
    server Server2ZoneD 10.60.17.8:80    check
    server Server2ZoneE 10.60.45.219:80  check
    
por Developr 20.02.2014 / 17:14

1 resposta

9

Usar um único frontend e multiplexação para os backends é realmente possível. Você será solicitado a adicionar uma seção de back-end por servidor de back-end, por exemplo,

backend JabberD1
    tcp-check connect
    tcp-check send PING\r\n
    tcp-check expect string +PONG
    server Server1ZoneD 10.60.30.209:80  check

backend JabberE1
    tcp-check connect
    tcp-check send PING\r\n
    tcp-check expect string +PONG
    server Server1ZoneE 10.60.47.4:80    check

etc.

Na sua interface, divida o tráfego como este

    acl d1 dst_port 5222
    use_backend JabberD1 if d1

etc.

    
por 15.04.2014 / 15:18