首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到远程群集的redisson

连接到远程群集的redisson
EN

Stack Overflow用户
提问于 2018-01-22 23:12:16
回答 1查看 1.8K关注 0票数 1

我已经创建了一个redis集群,它本身正在工作,但我无法将我的客户端连接到它。

我使用redisson连接到它,代码如下

代码语言:javascript
复制
Config config = new Config();
config.setUseLinuxNativeEpoll(false);
config.useClusterServers().addNodeAddress(redisURL.split(","));
RedissonClient redisson = Redisson.create(config);

其中,csv是格式:redis://<external-ip>:7000,redis://<external-ip>:7001上的csv,但包含集群中的所有6个节点。

有趣的是,集群使用它们的本地地址(它们在同一子网中)连接到自己,但它们无法使用各自的外部ip找到彼此。

当redisson尝试获取集群配置时,这反过来会产生问题。

代码语言:javascript
复制
15:53:51,035 INFO  [org.redisson.cluster.ClusterConnectionManager] (ServerService Thread Pool -- 31) Redis cluster nodes configuration got from /<external-ip>:7001:
6df5ebaf45cbbd36213f482a26e99e14e3e86fa5 <internal-ip>:7000@17000 master - 0 1516632829096 2 connected 5461-10922
7724d373393edf7f38ae6253ce248f75f398a1c6 <internal-ip>:7001@17001 slave e5dc7e472410e575a0dc672ead79b54828897ce3 0 1516632830099 6 connected
649582188b2c22b472388c27550467fe97522e3f <internal-ip>:7001@17001 myself,master - 0 1516632828000 1 connected 0-5460
792d30f7c2eedd80d99af5cc49d7797d6b29bdf3 <internal-ip>:7002@17002 slave 6df5ebaf45cbbd36213f482a26e99e14e3e86fa5 0 1516632828093 4 connected
349d846c493fcc709d31c657321a48e01ae0b34e <internal-ip>:7001@17001 slave 649582188b2c22b472388c27550467fe97522e3f 0 1516632827000 5 connected
e5dc7e472410e575a0dc672ead79b54828897ce3 <internal-ip>:7000@17000 master - 0 1516632828000 3 connected 10923-16383

15:54:01,113 ERROR [org.redisson.cluster.ClusterConnectionManager] (redisson-netty-1-5) Can't connect to master: redis://<internal-ip>:7000 with slot ranges: [[10923-16383]]
15:54:01,121 ERROR [org.redisson.cluster.ClusterConnectionManager] (redisson-netty-1-6) Can't connect to master: redis://<internal-ip>:7001 with slot ranges: [[0-5460]]
15:54:01,127 ERROR [org.redisson.cluster.ClusterConnectionManager] (redisson-netty-1-1) Can't connect to master: redis://<internal-ip>:7000 with slot ranges: [[5461-10922]]

那么,有没有办法告诉redisson将内部IP映射到预先配置的外部IP?或者其他可以解决这个问题的东西?优选地,不改变网络配置。

EN

回答 1

Stack Overflow用户

发布于 2019-01-11 13:55:15

我在构建redis集群时遇到了同样的问题。我使用redisson连接redis集群,redis客户端程序(redis桌面管理器)连接到我的redis集群,都可以正常连接,但是当redisson程序初始化时,提示连接超时: 172.18.202.111/172.18.202.111:7000。

查阅文档后,我发现我的redis集群通信需要其他端口17000 17001 17002,(+10000)

您可能需要打开相关的端口访问限制。如果使用集群节点命令返回的node Ip包含内网Ip,则需要修改redis集群自动生成的nodes.conf文件,将内网Ip改为外网IP。

例如: 053420032000043aa9983d5b30e09c83258b3186内网IP地址: 6379本人,master - 001接入0- 5460 053420032000043aa9983d5b30e09258b3186您的公网IP地址: 6379本人,master - 001接入0- 5460

因为redis配置文件已经说明集群是一个自动配置文件,一般不需要自己修改。但有时,例如,我只有一张Intranet卡,而公网的IP地址估计会被NAT转换为私有地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48384695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档