今天用阿里云的服务器搭了一个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可用。坑