1. 程式人生 > >阿里雲redis叢集用JedisCluster無法連線

阿里雲redis叢集用JedisCluster無法連線

今天用阿里雲的伺服器搭了一個redis的偽叢集,埠7001-7006,中間遇到幾個問題

首先在

./redis-trib.rbcreate --replicas 1 主機ip:7001主機ip:7002主機ip:7003主機ip:7004主機ip:7005主機ip:7006

這裡的主機ip必須是公網ip,否則遠端無法連線

另外

注意安裝叢集的時候,防火牆中不僅要放開redis的埠,還要放開,而且需要開通叢集匯流排埠

叢集匯流排埠為redis客戶端連線的埠 +10000

如redis埠為6379

則叢集匯流排埠為16379

所以當前的機器上要放開17001-17006埠,否則安裝叢集的時候會一直Waiting for the cluster to join

接著使用jedis連線叢集,發現每個節點單獨連都可以連線,但是JedisCluster無法連線,報錯

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

我同樣的安裝方法在自己的虛擬機器上沒問題,但是阿里雲上就連不上

本地使用redis-cli命令客戶端也能連線阿里雲的叢集,開始懷疑是java的問題

我的jedis用的jar包版本是2.9.0,換成了2.7.2,程式碼一點沒改,竟然成功了!!!

總結:

java連線阿里雲的redis叢集,先在本地用redis-cli測試叢集是否可用,如果可用,就檢查java程式碼

java的jedis包不能用最新的。redis是3.2.11版本。本地虛擬機器測試沒問題。但是阿里雲連線的時候就不能用jedis2.9.0的jar,需要降低版本,2.7.2可用。坑