0

当我尝试配置 Redisson 时,我不断收到此错误。

org.redisson.client.RedisConnectionException: Can't connect to servers!
Caused by: io.netty.channel.ConnectTimeoutException: connection timed out:

不能在我的本地机器上使用带有 Redisson 的 Elasticache 吗?我还有什么其他选择?Azure 允许这样做吗?

4

1 回答 1

0

如果您尝试从 AWS 外部的本地计算机连接到 ElastiCache,您需要在与 ElastiCache 集群相同的 VPC 中创建一个网络地址转换 (NAT) 实例,并从您的应用程序连接到 NAT 实例。NAT 实例充当您的应用程序和 Elasticache 集群之间的代理。这些是步骤 -

  1. 在与缓存集群相同的 VPC 中创建一个 NAT 实例,但在公有子网中。弹性 IP 地址 (EIP) 必须与 NAT 实例关联。iptables 的端口转发功能用于将 NAT 实例上的端口转发到 Amazon VPC 内的缓存节点端口。
  2. 为 NAT 实例和 ElastiCache 集群创建以下安全组规则 -

    • NAT 实例安全组 - 入站 - 从您的应用程序 IP 访问集群端口(例如,在 Redis 的情况下为 6379)
    • NAT 实例安全组 - 入站 - 来自可信 IP(端口 22)的 SSH 访问
    • NAT 实例安全组 - 出站 - 通过将目标指定为 Elasticache 安全组来访问 ElastiCache 集群端口(例如,在 Redis 的情况下为 6379)
    • Elasticache 安全组 - 入站 - 通过将源指定为 NAT 实例安全组从集群端口上的 NAT 实例安全组访问(例如,在 Redis 的情况下为 6379)
  3. 将 iptables 规则添加到 NAT 实例。必须添加 iptables 规则才能将缓存端口从 NAT 实例转发到集群节点。集群中的每个节点都应该有一个规则。Redis 的示例可能如下所示:

    • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to <cluster-node-ip>:6379
  4. 位于 AWS 外部的应用程序现在可以使用 NAT 实例的 EIP 和集群端口连接到 EastiCache 集群。

可以在此处找到更多信息 - http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

另一种方法是将包含 Redisson 客户端的应用程序部署在 EC2 实例上(最好在与 ElastiCache 相同的 VPC 中)。然后,您可以从该应用程序连接到 ElastiCache。

于 2017-11-23T13:14:10.987 回答