首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redis-cli重定向到127.0.0.1

redis-cli重定向到127.0.0.1
EN

Stack Overflow用户
提问于 2016-05-20 16:25:07
回答 4查看 5K关注 0票数 8

我在PC1上启动了Redis集群,然后在PC2上连接了它。当需要重定向到另一个群集节点时,它会显示Redirected to slot [7785] located at 127.0.0.1,但应该显示Redirected to slot [7785] located at [IP of PC1, like 192.168.1.20],然后会显示错误。这是怎么回事?我能做什么?

输出:

代码语言:javascript
复制
[admin@localhost ~]$ redis-cli -c -h 192.168.1.20 -p 30001
192.168.1.20:30001> get foo
-> Redirected to slot [12182] located at 127.0.0.1:30003
Could not connect to Redis at 127.0.0.1:30003: Connection refused
Could not connect to Redis at 127.0.0.1:30003: Connection refused
not connected>

redis-cli -h 192.168.1.20 -p 30001 cluster nodes的输出

代码语言:javascript
复制
5f6d6f1319318233917aba92b6ab0e244b3260d7 127.0.0.1:30004 slave 4c7b046ecaeb2dc689cbad21ee3466fb43b48fb9 0 14639
84410573 4 connected
e04d5b461cb6a2b48cb2a607e2140b7c1d32af25 127.0.0.1:30006 slave 3fc25c3851f7a9afd09b60739434118c25cd9243 0 14639
84410473 6 connected
3fc25c3851f7a9afd09b60739434118c25cd9243 127.0.0.1:30003 master - 0 1463984410573 3 connected 10923-16383
4c7b046ecaeb2dc689cbad21ee3466fb43b48fb9 127.0.0.1:30001 myself,master - 0 0 1 connected 0-5460
7383830ac84f199db346da3112b5aaf9e124d3cf 127.0.0.1:30005 slave 1eeeb51522aed364fcf9623d6045fa3df2748579 0 14639
84410573 5 connected
1eeeb51522aed364fcf9623d6045fa3df2748579 127.0.0.1:30002 master - 0 1463984410473 2 connected 5461-10922
EN

回答 4

Stack Overflow用户

发布于 2018-06-01 14:18:10

嘿,你能试着把你的redis集群实例绑定到服务器的IP上吗

更新您的redis.conf以添加

bind 172.31.28.76

PS-根据需要更新IP

票数 3
EN

Stack Overflow用户

发布于 2016-05-23 15:26:47

这是因为你所有的Redis IP地址都更新到了127.0.0.1,他们认为其他Redis也位于127.0.0.1。如果集群中的节点只是相互通信,这不是错误的,但当来自其他主机的连接想要了解集群时,这绝对是不正确的。

在这种情况下,你的客户向Redis索要密钥,它不负责,Redis告诉客户端重定向到127.0.0.1:30003。客户端误解了它,并尝试连接其本地主机中的端口30003,但肯定什么也找不到。

要解决此问题,请尝试向集群中的每个Redis发送具有正确IP的cluster meet。我做了一个这样的实验

代码语言:javascript
复制
# initial, Redis doesn't know its IP before a meet
127.0.0.1:7000> cluster nodes
8af9e47cb96f3bd8fff3800c38da11601157605d :7000 myself,master - 0 0 0 connected

# meet from 127.0.0.1, and their IP addresses updated to 127.0.0.1
127.0.0.1:7000> cluster meet 127.0.0.1 7001
OK
127.0.0.1:7000> cluster nodes
8af9e47cb96f3bd8fff3800c38da11601157605d 127.0.0.1:7000 myself,master - 0 0 0 connected
2c3d9b6c29f21ecd846f42bcfb238099d88b57df 127.0.0.1:7001 master - 0 1463987186714 1 connected

# send another meet, use the eth0 IP other than lo
127.0.0.1:7000> cluster meet 172.31.28.76 7001
OK
127.0.0.1:7000> cluster nodes
8af9e47cb96f3bd8fff3800c38da11601157605d 127.0.0.1:7000 myself,master - 0 0 0 connected
2c3d9b6c29f21ecd846f42bcfb238099d88b57df 172.31.28.76:7001 master - 0 1463987192672 1 connected

# connect to :7001, its cluster nodes are what we expect
127.0.0.1:7001> cluster nodes
2c3d9b6c29f21ecd846f42bcfb238099d88b57df 172.31.28.76:7001 myself,master - 0 0 1 connected
8af9e47cb96f3bd8fff3800c38da11601157605d 172.31.28.76:7000 master - 0 1463987203631 0 connected
# send another meet to fix
127.0.0.1:7001> cluster meet 172.31.28.76 7000
OK

# back to :7000, its address updated
127.0.0.1:7000> cluster nodes
8af9e47cb96f3bd8fff3800c38da11601157605d 172.31.28.76:7000 myself,master - 0 0 0 connected
2c3d9b6c29f21ecd846f42bcfb238099d88b57df 172.31.28.76:7001 master - 0 1463987210539 1 connected

在您的情况下,您可以向每个Redis发送多个cluster meet命令,以确保其IP在所有对等点上都已更新。

票数 2
EN

Stack Overflow用户

发布于 2020-02-09 21:18:35

你说过,你正在PC1上运行redis服务器。然后在redis节点配置文件中提到绑定选项时提到PC1IP地址(在您的例子中是192.168.1.20)。

群集的节点配置文件示例-

代码语言:javascript
复制
bind 192.168.1.20  
port 6000  
cluster-enabled yes  
cluster-config-file "nodes.conf"  
cluster-node-timeout 5000
appendonly yes
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37341646

复制
相关文章

相似问题

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