Haproxy ACL para saldo no pedido de URL

1

Estou usando o Ubuntu com a versão haproxy 1.4.13.

Sua carga balanceando dois subdomínios:

  • app1.domain.com
  • app2.domain.com

Agora, desejo usar a ACL para enviar com base na solicitação de URL para os back-ends certos Por exemplo:

http://app1.domain.com/path/games/index.php  sould be send to backend1
http://app1.domain.com/path/photos/index.php should be send to backend2

http://app2.domain.com/path/mail/index.php  sould be send to backend3
http://app2.domain.com/path/wazap/index.php should be send to backend4

eu usei o código do seguinte acl

frontend http-farm
        bind 0.0.0.0:80
        acl app1web     hdr_beg(host) -i app1  # for http://app1.domain.com
        acl app2web     hdr_beg(host) -i app2  # for http://app2.domain.com

acl msg-url-1 url_reg ^\/path/games/.*
acl msg-url-2 url_reg ^\/path/photos/.*
acl msg-url-3 url_reg ^\/path/mail/.*
acl msg-url-4 url_reg ^\/path/wazap/.*

use_backend games  if  msg-url-1 app1web
use_backend photos if  msg-url-2 app2web
use_backend mail if .....



backend games
        option httpchk GET /alive.php HTTP/1.1\r\nHost:\ app1.domain.com
        option  forwardfor
        balance roundrobin
        server  appsrv-1  192.168.1.10:80  check inter 2000 fall 3
        server  appsrv-2  192.168.1.11:80  check inter 2000 fall 3

backend photos
        option httpchk GET /alive.php HTTP/1.1\r\nHost:\ app2.domain.com
        option  forwardfor
        balance roundrobin
        server  appsrv-1  192.168.1.13:80  check inter 2000 fall 3
        server  appsrv-2  192.168.1.14:80  check inter 2000 fall 3

....

Como o caminho mail, fotos ... etc serão pools de aplicativos no iis, quero monitorá-los se estiverem ativos, se o pool não responder, ele deverá parar de atendê-lo.

meu problema é com certeza na expressão regular na ACL acl msg-url-4 url_reg ^ / caminho / wazap /.*

O que devo mudar na ACL para que funcione?

obrigado por qualquer dica

    
por Elgreco08 30.03.2011 / 22:36

1 resposta

5

Eu não sei se é um problema real, mas você não precisa escapar de barras nos regexes do HAProxy. Além disso, no seu caso declarado, você nem precisa de expressões regulares, mas pode usar adaptadores de string simples. Eles são magnitudes mais rápidas que os regexes. Então, suas ACLs podem ter esta aparência:

acl msg-url-3 url_beg /path/mail/
acl msg-url-4 url_beg /path/wazap/

Se nenhum servidor estiver disponível em um backend despachado, o HAProxy retornará uma resposta HTTP 503 . Você pode usar errorloc ou errorfile para personalizar a resposta.

Mas pode ser que eu tenha entendido mal o seu problema. Não está muito claro o que exatamente não está funcionando como esperado.

    
por 30.03.2011 / 23:49