Redis 用戶端未透過 HAProxy 連接到 Redis 伺服器

Redis 用戶端未透過 HAProxy 連接到 Redis 伺服器

我在使用 Jedis 作為 Redis 用戶端透過 HAProxy 連接到 Redis 伺服器時遇到問題。當 Redis 伺服器直接連接時,一切正常,但透過 HAProxy 則無法正常運作。 HAProxy 和 Redis 服務都在其特定連接埠上運行,HAProxy 在連接埠 80 上運行,Redis 伺服器在 6379 上運行。

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

拋出的異常訊息是 -redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: H

有人可以指出我缺少什麼並指出正確的方向嗎?

答案1

您已在後端設定了 stats 選項,似乎由於您收到了 HTTP 回應(可能是 502 錯誤),其中第一個字元在 jedis 輸出中可見。因此,刪除它並創建一個單獨的監聽指令來提供統計信息,如下所示:

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

相關內容