远程连接到 ElastiCache - Redis

远程连接到 ElastiCache - Redis

我们的站点使用的是 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 rest4. 如果是,则无法在 SSL 上工作,您需要进行设置。encryption in transit
redis-clistunnel

按照 AWS 的以下指南设置 stunnel 并连接到您的 Redis 实例。

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption.html#connect-tls

相关内容