O proxy HA não está se recuperando de "nenhuma rota para o host"

1

Estamos usando o proxy HA em uma instância do Amazon EC2 para rotear determinadas solicitações para dois balanceadores de carga internos diferentes, que são ELBs EC2 (Elastic Load Balancers).

Aqui está a configuração do proxy HA:

defaults
    mode                    http
    log                     global
    no option               redispatch
    retries                 25
    timeout connect 10000 # default 10 second time out if a backend is not found
    timeout client 30000
    timeout server 30000
    maxconn     20000
    stats uri /haproxy?stats
    option http-server-close
    timeout http-request    100s
    timeout http-keep-alive 124s

backend main-service-backend
    option httpchk GET /ping
    server main-service internal-main-service:80 check inter 5s fall 10

backend micro-service-backend
    option httpchk GET /ping
    server micro-service internal-micro-service:80 check inter 5s fall 10

frontend shared-frontend *:80
    acl is-micro-service-url path_reg ^/(/rest/user/.*/?)
    use_backend micro-service-backend if is-micro-service-url
    default_backend main-service-backend

Normalmente, se eu desligar um servidor por um tempo, o proxy HA será recuperado. No entanto, parece haver algum erro de rede / roteamento acontecendo e o proxy HA não se recupera.

Aqui estão os registros do proxy HA:

Server micro-service-backend/micro-service is DOWN, reason: Layer4 connection problem, info: "No route to host", check duration: 998ms. 0 active and 0 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
 backend micro-service-backend has no server available!

O proxy HA pára de verificar o servidor e continua marcando-o como DOWN. No entanto, posso fazer com sucesso a verificação de integridade de http na caixa do proxy de alta disponibilidade para o balanceador de carga interno:

curl -i http://internal-micro-service:80/ping 
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Date: Fri, 12 Jun 2015 23:08:29 GMT
Server: Apache-Coyote/1.1
Content-Length: 2
Connection: keep-alive

UP

Alguma ideia do que pode estar errado? O que mais eu deveria investigar?

    
por Fab 13.06.2015 / 01:10

1 resposta

1

Após alguns googling, descobri que o proxy HA apenas resolve o DNS no arranque. Os ELBs do EC2 podem alterar aleatoriamente os endereços IP, o que faz com que as verificações de integridade falhem, pois o proxy HA não faz a resolução de DNS antes de fazer a verificação de integridade.

Balanceadores de carga elásticos Alterar endereços IP

O HA Proxy faz a resolução de DNS na inicialização

Mais detalhes sobre a resolução de DNS de proxy HA

    
por 13.06.2015 / 02:20

Tags