Sim, isso é possível. Você deseja a instrução balance first
na sua seção backend
ou listen
. Você também precisará atribuir um valor maxconn
para cada servidor backend.
Aqui está uma configuração de exemplo:
listen kumarServer
bind *:80
mode tcp
balance first
default-server maxconn 1000
server kumar1 10.0.1.21
server kumar2 10.0.1.22
server kumar3 10.0.1.23
E sim, as conexões TCP podem ter persistência. Mas você está limitado ao endereço IP de origem.
Com base no seu comentário, é necessário monitorar determinados parâmetros nos servidores para decidir qual servidor carregar os clientes, verifique a option httpchk
em combinação com http-check expect
ou http-check disable-on-404
. Você também pode usar option lb-agent-chk
.
Vamos ver option httpchk
e http-check disable-on-404
. Para que isso funcione, seu aplicativo deve expor uma página de status simples que retorne um status HTTP de 200, se o servidor estiver disponível para novas conexões, ou 404, se nenhuma nova conexão for aberta. stick on src
permitirá que os usuários que já têm conexões ativas mantenham sua conexão e reconectem se a conexão deles for perdida.
listen kumarServer
bind *:7000
mode tcp
balance first
stick on src
default-server maxconn 1000
option httpchk
http-check disable-on-404
server kumar1 10.0.1.21 check port 80
server kumar2 10.0.1.22 check port 80
server kumar3 10.0.1.23 check port 80