我在使用 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