configura o HA Proxy para permitir algumas solicitações de certos servidores de aplicativos

1

Eu tenho uma configuração com o HaProxy, onde cada servidor haproxy direciona o tráfego para vários servidores de aplicativos. O roteamento para o tráfego http normal é baseado em um hash do URL de solicitação.

Agora, desejo criar algumas regras para permitir que determinadas solicitações administrativas sejam roteadas para servidores de aplicativos específicos. Ou seja, eu tenho servidores de aplicativos "node06 - node15". Eu gostaria de poder solicitar node06.mydomain.com/my-admin-request e ter que ser roteado para o servidor de aplicativos correto.

Eu não posso fazer isso via dns. Todas as solicitações chegam por meio de um único endereço IP exposto no cluster.

Então eu fiz uma configuração haproxy que faz o que eu quero:

frontend www-http
       bind :80
       reqadd X-Forwarded-Proto:\ http

       acl node06 hdr_beg(host) -i node06.
       use_backend node06-status if node06

       acl node07 hdr_beg(host) -i node07.
       use_backend node07-status if node07

       # ... and many more such nodes ...

       default_backend application-backend


       # This is the application back end. 
       # Route request based on hash of url
backend application-backend
       balance url_param url check_post

       server node06 192.168.1.70:80 check
       server node07 192.168.1.71:80 check

       # ... and many more such nodes ...

       # these are the status back ends. This is so we can make requests
       # direct to each node for the status console.
backend node06-status
       server node06 192.168.1.70:80

backend node07-status
       server node07 192.168.1.71:80

       # ... and many more such back ends ...

Isso vai funcionar (eu acho), mas é realmente prolixo. Eu tenho que criar blocos idênticos de configurações três vezes para cada servidor de aplicativos no cluster. Isso se tornará incontrolável se eu estender isso além de 10 nós.

Existe uma maneira de configurar isso para que eu não precise separar as linhas de configuração por servidor de aplicativos?

    
por Rafael Baptista 03.01.2017 / 06:11

1 resposta

3

Você pode colocar a ACL e o servidor de uso (em vez de usar o backend) na definição de back-end. Além disso, acho que você pode usar ACLs in-line e não necessariamente defini-las antes de usar.

    
por 03.01.2017 / 14:07