1 问题
在阿里云上租了四台linux服务器,因为是4个账号白嫖的不在同一个局域网,但是有4个公网IP。在每一台服务器上安装redis,并搭建为一个四台主服务器,无从服务器的集群。
搭建好后redis-cli -c -h 某个node的IP:6379
在每一台服务器上连接到其他服务器都是能连通的。
但是之后在使用Spring Boot出现了问题,在yaml配置文件中配置:
spring:
data:
redis:
cluster:
nodes: IP1:6379,IP2:6379,IP3:6379,IP4:6379
开启之后,会报出这样的错误:
Unable to connect to [172.20.24.62/<unresolved>:6379]: connection timed out:...
配置的外网IP会报出一个内网IP连接失败。
2 解决
不要在yaml中配置,在Spring容器中创建一个Redis集群配置Bean:
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisClusterConfiguration config = new RedisClusterConfiguration();
config.addClusterNode(new RedisNode("IP1", 6379));
config.addClusterNode(new RedisNode("IP2", 6379));
config.addClusterNode(new RedisNode("IP3", 6379));
config.addClusterNode(new RedisNode("IP4", 6379));
return new JedisConnectionFactory(config);
}
这样就可以正常连接了。