Redisson w / AWS Elasticache

时间:2017-10-17 03:50:25

标签: java amazon-elasticache redisson

当我尝试配置Redisson时,我一直收到此错误。

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

是不是可以在我的本地机器上使用Elasticache w / Redisson?我还有其他什么选择? Azure是否允许这样做?

1 个答案:

答案 0 :(得分: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群集。
  5. 更多信息可以在这里找到 - http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

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