Redis Client não está se conectando ao servidor Redis via HAProxy

1

Estou enfrentando um problema ao conectar-me ao servidor Redis via HAProxy usando o Jedis como cliente redis. Tudo funciona bem quando o servidor Redis está diretamente conectado, mas o mesmo não está funcionando via HAProxy. Os serviços HAProxy e Redis estão sendo executados em suas portas específicas, o HAProxy na porta 80 & Servidor Redis no 6379. Estamos executando essa configuração em instâncias do EC2 e todas as portas necessárias estão abertas.

Configuração do HAProxy é

frontend redis-in
bind *:80
default_backend redis-server

backend redis-server
    stats   enable
    server redis-server1 x.x.x.x:6379 check inter 1000 fall 3 rise 2
    server redis-server2 x.x.x.x:6379 check inter 1000 fall 3 rise 2

O código Jedis Clinet é:

 try {
    Jedis jedis = new Jedis(hostname, port);
    jedis.set("key", "Redis-Test-Value");
    System.out.println("value from redis node is: " + jedis.get("key"));
} catch (Exception e) {
    System.out.println("exception is " + e);
}

A mensagem de exceção que é lançada é - redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: H

Alguém pode apontar o que estou perdendo e apontar para a direção certa?

    
por Sandeep Singh 22.02.2018 / 08:32

1 resposta

0

Você definiu a opção stats no seu back-end, parece que, devido a isso, você recebe uma resposta HTTP (provavelmente um erro 502), da qual o primeiro caractere é visto na saída do jedis. Então, remova isso e crie uma diretiva de escuta separada para fornecer estatísticas, assim:

listen stats # Define a listen section called "stats"
  bind :9988 # Listen on localhost:9000
  mode http
  stats enable  # Enable stats page
  stats hide-version  # Hide HAProxy version
  stats uri /stats  # Stats URI
    
por 02.03.2018 / 18:37