Balanceamento de carga de braço único HAproxy

Balanceamento de carga de braço único HAproxy

Estou tentando configurar um laboratório de balanceamento de carga para HAproxy no modo de braço único (quando o IP front-end real e os servidores back-end residem na mesma sub-rede, enquanto os clientes reais são sempre remotos). Outra solicitação é tornar os IPs de origem do cliente visíveis para os nós de back-end. À medida que balanceamos a carga do aplicativo baseado em TCP personalizado, parece que a opção 'source 0.0.0.0 usersrc clientip' é a escolha certa aqui. Além disso, configurei back-ends para ter gateways padrão apontando para o endereço IP do HAproxy.

Embora coisas estranhas aconteçam quando eu habilito esta opção de back-end: vejo que a conexão com o VIP do front-end foi feita corretamente e o handshake de 3 vias foi formado. Mas quando o servidor HAproxy está tentando construir uma segunda sessão para alcançar servidores back-end com IP falsificado de um cliente, vejo exatamente isso acontecendo:

  1. O proxy está enviando SYN com o endereço IP do cliente falsificado para um dos backends;
  2. O backend normalmente responde com o pacote SYN-ACK;
  3. O proxy NÃO está enviando o último ACK, apenas envia pacotes SYN cegamente após o tempo limite com o mesmo resultado;
  4. Em um proxy, vejo que esta conexão está marcada como SYN_SENT na saída do netstat, então parece que o servidor proxy não aceita o pacote SYN-ACK por algum motivo.

Qualquer elogio seria apreciado.

informação relacionada