Acho que o seu problema é que você espera que o haproxy faça solicitações HTTPS supondo que a porta 443 seja exibida, enquanto option httpchk
faz apenas solicitações HTTP simples.
Sirva seu aplicativo em HTTP simples em uma porta diferente, além de HTTPS, disponibilize-o para o nó haproxy e use o HTTP para as verificações.
Veja o exemplo na opção haproxy httpchk docs:
# Relay HTTPS traffic to Apache instance and check service availability
# using HTTP request "OPTIONS * HTTP/1.1" on port 80.
backend https_relay
mode tcp
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
server apache1 192.168.1.1:443 check port 80
No seu caso, seria algo assim:
backend app-api_backend
mode tcp
option httpchk GET /app_service HTTP/1.1
http-check expect status 405
server a a-app.com:443 resolvers dns verify none inter 1000 check port 80
server b b-app.com:443 resolvers dns verify none inter 1000 check port 80