Os backends do HAProxy estão acima ou abaixo (ou a caminho de serem up / down).
Existem várias maneiras de verificar a integridade de um back-end, mas não conheço nenhuma que forneça rastreamento baseado em solicitação. Quando uma solicitação falha, esse backend seria marcado como inativo ou estaria falhando (a caminho de ser considerado inativo).
Essa é uma lógica muito diferente da configuração do Nginx que estava roteando solicitações por solicitação.
Eu vejo algumas opções aqui:
- Nginx como proxy de cache
- Use servidores de aplicativos para conteúdo estático
- Use um CDN
Caching Proxy
No HAProxy, você usaria as ACLs para rotear solicitações de conteúdo estático para um back-end específico. Esses nós de back-end executariam o nginx com um proxy de armazenamento em cache. Se o nginx tivesse o arquivo armazenado em cache, ele apenas o serviria. Se não, ele chamaria seu back-end.
Use servidores de aplicativos para conteúdo estático
Se seus servidores de aplicativos forem eficientes na exibição de conteúdo estático, talvez você não precise dividir a solicitação em haproxy. Basta enviar todos os pedidos para os back-ends da sua aplicação. Crie lógica neles para fornecer conteúdo estático, se disponível, e se não enviar a solicitação ao back-end.
Opção CDN
Se você puder usar um domínio dedicado para o conteúdo estático, poderá usar um CDN. No CDN, você apenas aponta para o URL de origem para seus nós de aplicativo. Você pode então controlar o armazenamento em cache no nível CDN. Isso é semelhante ao armazenamento em cache do Nginx acima, exceto pelo fato de o provedor de CDN estar lidando com isso para você.