Haproxy
Redis 客戶端未通過 HAProxy 連接到 Redis 伺服器
我在使用 Jedis 作為 Redis 客戶端通過 HAProxy 連接到 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 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
有人能指出我錯過了什麼並指出正確的方向嗎?
您已經在後端設置了 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