我们的站点使用的是 ElastiCache - Redis,我们需要刷新 Redis 缓存,当我尝试从任何 PC 上通过此命令远程连接到我的 ElastiCache - Redis 时
redis-cli -h example-redis-1.example.0001.euw1.cache.amazonaws.com -p 6379
它总是说:
无法连接到 Redis (example-redis-1.example.0001.euw1.cache.amazonaws.com:6379):连接被拒绝,未连接>
我已确保入站规则允许来自任何 IP 的 6379,并尝试编辑 /etc/redis.conf 以添加绑定 example-redis-1.example.0001.euw1.cache.amazonaws.com,但错误仍然相同。
答案1
ElastiCache 集群只能从其所在的 VPC 内直接访问。这是因为 ElastiCache 不是一项安全服务。
为了远程连接到您的 ElastiCache,您需要通过堡垒服务器或 NAT。AWS 在此处创建了说明:
http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html
要使用堡垒,您需要通过 SSH 连接到位于 VPC 中的堡垒 EC2 实例。连接后,您可以从 PC 隧道连接 ElastiCache,也可以从堡垒的命令提示符连接到缓存。
答案2
步骤1:
ssh -f -N -L6379:<your redis node endpoint>:6379 <your EC2 node that you use to connect to redis>
例子 :ssh -f -N -L6379:redis.aps1.cache.amazonaws.com:6379 [email protected]
第2步:
redis-cli -h 127.0.0.1 -p 6379
答案3
您无法连接到 Elasticache 节点的原因是 DNS 名称或端点仅解析为属于 VPC CIDR 的 IP(而非公共 IP 或弹性 IP)。由于这些 IP 不可公开路由,因此无法通过互联网建立连接。
您需要一种方法来建立一条通往互联网的路由,以便能够访问该节点。这可以通过 VPN 或使用 NAT 设置来实现,正如@“Matt Houser”所说的那样
我没有尝试 ssh 隧道,但它应该也能工作。不过,我不确定在这种情况下 Encryption-In-Transit 的行为,所以需要尝试一下。
答案4
跟踪问题并修复它的最简单方法。1
. 您是否能够远程登录到redis instance
端口 6379。2
. 如果不能,请检查安全组入站。3
. 如果是,请检查您是否已在 Redis 设置期间进行检查encryption at rest
4. 如果是,则无法在 SSL 上工作,您需要进行设置。encryption in transit
redis-cli
stunnel
按照 AWS 的以下指南设置 stunnel 并连接到您的 Redis 实例。
https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption.html#connect-tls