Amazon ec2 Redis群集创建副本绑定公共IP

Amazon ec2 Redis群集创建副本绑定公共IP,amazon-ec2,redis,redis-cluster,Amazon Ec2,Redis,Redis Cluster,我们有6台redis服务器在端口(8001、8002、8003、8004、8005、8006)中运行。 在每个redis服务器的redis.conf上,我们以不同的方式绑定ip,如: 绑定0.0.0.0 约束私人和公众 约束公众 如果我们喜欢它的工作方式: redis-cli -h PUBLIC_IP -p 8001 但当我们想要创建我们运行的集群时: ./src/redis-cli --cluster create PUBLIC_IP:8001 PUBLIC_IP:8002 PUBLIC

我们有6台redis服务器在端口(8001、8002、8003、8004、8005、8006)中运行。 在每个redis服务器的redis.conf上,我们以不同的方式绑定ip,如:

  • 绑定0.0.0.0
  • 约束私人和公众
  • 约束公众
如果我们喜欢它的工作方式:

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,重定向将显示“重定向到私有ip”,这将无法按预期工作

我们是否缺少让群集通过公共IP加入的内容?

来自:

Redis设计为可由可信环境中的可信客户端访问

另见:

当服务器绑定到它的公共ip上时,它可以从每个人那里获得请求,所以除非你在它周围建立了某种安全机制,否则任何人都可以访问和操作你的数据

在redis集群中,规则是相同的,在公共IP上绑定的副本是公开的

redis集群的默认使用情形是一台机器(或多台机器)从其专用网络中访问它,除非您知道自己在安全方面做什么,否则您不应该转移注意力


如果对您的用例有意义,您应该将访问redis群集的机器作为群集专用网络的一部分。

如果我在您的位置,我会做的是:

  • 使用专用ip和环回ip绑定所有服务器,即
    Bind{{{private_ip}}127.0.0.1
  • 在每台服务器上启用ufw(或其他任何防火墙工具),并执行(对于ufw)
    允许从{{private_ip}}到任何端口{redis_port}
    或类似操作
  • 我的内部DNS将为所有具有各自专用ip的服务器提供条目
  • 瞧!安全地创建和访问redis群集,无任何安全漏洞
注意:如果您仍然希望通过公共网络访问它们,那么您可以使用

警告:将redis服务器绑定到
0.0.0.0
或公共ip可能会导致严重的漏洞问题,如:

附言:你也可以学习本教程