
Tenho duas portas abertas em meus servidores back-end, uma para solicitações https e outra para solicitações de websocket. Os websockets usarão http, não https. Gostaria que minha instância haproxy enviasse um redirecionamento http 301 para uma solicitação de cliente que redirecionaria o cliente diretamente para um servidor back-end. Após o redirecionamento o cliente deverá se comunicar diretamente com o servidor backend, independentemente de ser uma conexão websocket ou https. Abaixo está minha configuração. Funciona no sentido de redirecionar o tráfego de forma adequada, mas apenas redireciona para o primeiro servidor, nunca para o segundo. Por que não está usando round robin para atingir os dois servidores?
defaults
mode http
timeout connect 5000ms
timeout client 3000ms
timeout server 3000ms
timeout tunnel 0
frontend server-frontend
bind LB_IP:443
http-request redirect code 301 prefix https
default_backend server-backend
backend server-backend
balance roundrobin
server s1 SERVER1_IP:8443
server s2 SERVER2_IP:8443
frontend websocket-frontend
bind LB_IP:80
http-request redirect code 301 prefix http
default_backend websocket-backend
backend websocket-backend
balance roundrobin
server ws1 SERVER1_IP:8080
server ws2 SERVER2_IP:8080