2017-10-17 222 views
0

我在尝试配置Redisson时不断收到此错误。Redisson w/AWS Elasticache

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

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

回答

0

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

  1. 在与您的缓存集群相同的VPC中创建NAT实例,但是在公有子网中。弹性IP地址(EIP)必须与NAT实例关联。 iptables的端口转发功能用于将NAT实例上的端口转发到Amazon VPC内的缓存节点端口。

    • NAT实例安全组 - - 从应用程序的IP访问群集端口
    • 的NAT实例和ElastiCache集群创建以下安全组规则 - 入境(例如,6379在Redis的情况下)。

    • NAT实例安全组 - 入站 - 通过指定目的地Elasticache访问ElastiCache簇端口从可信IP SSH访问(端口22)
    • NAT实例安全组 - - 出站(例如,6379中的Redis的情况下)。安全组
    • E lasticache安全组 - 入站 - (例如,6379中的Redis的情况下)从NAT实例安全组访问群集端口上,通过指定源作为NAT实例安全组
  2. 添加iptables规则到NAT实例。必须添加iptables规则才能将缓存端口从NAT实例转发到群集节点。群集中的每个节点都应该有一条规则。对Redis的一个例子可能看起来如下:

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

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

一种替代方法是部署包含上的EC2实例(优选在相同的VPC为ElastiCache)的Redisson客户端应用程序。然后您可以从该应用程序连接到ElastiCache。

+0

虽然这可能在理论上回答这个问题,但[这将是更可取的](// meta.stackoverflow.com/q/8259)在这里包含答案的基本部分,并提供供参考的链接。请参阅[这里](https://meta.stackexchange.com/a/94027/285661),了解如何编写*更好*“基于链接”的答案。谢谢! – GhostCat