El cliente Redis no se conecta al servidor Redis a través de HAProxy

El cliente Redis no se conecta al servidor Redis a través de HAProxy

Tengo un problema al conectarme al servidor Redis a través de HAProxy usando Jedis como cliente Redis. Todo funciona bien cuando el servidor Redis está conectado directamente, pero no funciona a través de HAProxy. Tanto los servicios HAProxy como Redis se ejecutan en sus puertos específicos, HAProxy en el puerto 80 y el servidor Redis en 6379. Estamos ejecutando esta configuración en instancias EC2 y todos los puertos necesarios están abiertos.

La configuración de HAProxy es

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

El código Jedis Clinet es:

 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);
}

El mensaje de excepción que se lanza es:redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: H

¿Alguien puede señalar lo que me falta y señalar la dirección correcta?

Respuesta1

Ha configurado la opción de estadísticas en su backend, parece que debido a eso obtiene una respuesta HTTP (probablemente un error 502), cuyo primer carácter se ve en la salida de jedis. Así que elimine eso y cree una directiva de escucha separada para mostrar estadísticas, así:

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

información relacionada