我们有6个Redis服务器在端口(8001、8002、8003、8004、8005、8006)中运行。 在每个Redis服务器的redis.conf中,我们以不同的方式绑定ip,例如:
如果我们访问正常,就可以了:
redis-cli -h PUBLIC_IP -p 8001
但是当我们想要创建集群时,我们运行:
./src/redis-cli --cluster create PUBLIC_IP:8001 PUBLIC_IP:8002 PUBLIC_IP:8003 PUBLIC_IP:8004 PUBLIC_IP:8005 PUBLIC_IP:8006 --cluster-replicas 1
控制台始终显示并保持永远等待集群:
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica PUBLIC_IP:8005 to PUBLIC_IP:8001
Adding replica PUBLIC_IP:8006 to PUBLIC_IP:8002
Adding replica PUBLIC_IP:8004 to PUBLIC_IP:8003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 7ab009459f7f5cf6cef5f46b691748dc236e4c26 PUBLIC_IP:8001
slots:[0-5460] (5461 slots) master
M: 0048ca2cd65c1315b8f0a7c952b69bfb494d5ace PUBLIC_IP:8002
slots:[5461-10922] (5462 slots) master
M: c6ee023719f200b0d175f428fa15e5ab767d0e04 PUBLIC_IP:8003
slots:[10923-16383] (5461 slots) master
S: cf636a1a46b1e947daec3e797cac524c613f08ca PUBLIC_IP:8004
replicates 7ab009459f7f5cf6cef5f46b691748dc236e4c26
S: 5d4bd1041457114353b0b30dbefd86ab8e4ae020 PUBLIC_IP:8005
replicates 0048ca2cd65c1315b8f0a7c952b69bfb494d5ace
S: 62f01289dc3f72cac4a1745fc77b7bd91ec5d107 PUBLIC_IP:8006
replicates c6ee023719f200b0d175f428fa15e5ab767d0e04
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
很多人说我们需要绑定私有ip,但是我们想在公共情况下这样做,因为当我们与外部计算机连接时,如果将私有ip绑定到集群,则群集重定向到包含密钥的主服务器。 redirect将显示“ redirect to PRIVATE_IP”,并且将无法正常工作。
我们是否缺少让群集通过公共IP加入的内容?
答案 0 :(得分:0)
Redis旨在供受信任环境中的受信任客户端访问。
另请参阅:How to connect to redis from remote guide
服务器绑定到其公共IP时,它可以从每个人那里获得请求,因此,除非您围绕它建立了某种安全性,否则任何人都可以访问和操纵您的数据。
在Redis集群中,规则相同,并且公开了绑定在公共ip上的副本。
redis群集的默认用例是一台机器(或多台机器)从其专用网络中访问它,除非您知道自己在做安全上的事情,否则您不应从中挪用它。
如果对您的用例有意义,则应将访问redis群集的计算机作为群集专用网络的一部分。
答案 1 :(得分:0)
如果我在你家,我会做的是:
bind {{ private_ip }} 127.0.0.1
allow from {{ private_ip }} to any port {{ redis_port }}
或类似操作。注意:如果您仍然想通过公用网络访问它们,则可以使用SNAT
进行一些解决。警告:将Redis服务器绑定到0.0.0.0
或公共IP可能会导致严重的漏洞问题,例如:
PS:您也可以按照本medium教程进行操作。