阿里雲redis叢集用JedisCluster無法連線
阿新 • • 發佈:2018-12-25
今天用阿里雲的伺服器搭了一個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可用。坑