Клиент Redis не подключается к серверу Redis через HAProxy

Клиент Redis не подключается к серверу Redis через HAProxy

Я столкнулся с проблемой при подключении к серверу Redis через HAProxy, используя Jedis в качестве клиента Redis. Все работает нормально, когда сервер Redis подключен напрямую, но то же самое не работает через HAProxy. Службы HAProxy и Redis работают на своих определенных портах, HAProxy на порту 80, а сервер Redis на порту 6379. Мы запускаем эту настройку на экземплярах EC2, и все необходимые порты открыты.

Конфигурация 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

Код клиента Jedis:

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

Выдается сообщение об исключении:redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: H

Может ли кто-нибудь указать мне, что я упускаю, и указать правильное направление?

решение1

Вы установили опцию статистики в своем бэкенде, похоже, из-за этого вы получаете HTTP-ответ (вероятно, ошибку 502), первый символ которого виден в выводе jedis. Так что удалите это и создайте отдельную директиву listen для обслуживания статистики, например:

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

Связанный контент