您可以连接Amazon以外的Amazon Elasticache Redis吗?

我可以从EC2实例连接到VPC中的Elasticache Redis实例,但我想知道是否有方法可以连接到Amazon EC2实例之外的Elasticache Redis节点,例如从本地开发者设置或其他供应商提供的VPS实例。

目前,当从我的本地设置尝试:redis-cli -h my-node-endpoint -p 6379

过了一段时间,我才得到暂停。

谢谢,

不,如果不使用诸如隧道之类的“技巧”,那么这种技巧也许不失为一种好的testing方法,但是,如果使用超快速高速caching,则会带来额外的延迟/开销。

在VPC内部或外部Amazon ElastiCache群集决不允许从Internet访问

从这里: http : //aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS

SSH端口转发应该做的伎俩。 尝试从你的客户端运行。

ssh -f -N -L6379:<your redis node endpoint>:6379 <your EC2 node that you use to connect to redis> 

然后从你的客户端

 redis-cli -h 127.0.0.1 -p 6379 

这个对我有用。

请注意,redis的默认端口是6379而不是6739 。 还要确保允许您正在使用的EC2节点的安全组连接到您的caching安全组的Redis实例。

这些答案已经过时了。

您可以按照以下步骤访问AWS外部的elasticcache:

  1. 在与您的caching集群相同的VPC中创buildNAT实例,但是在公有子网中。
  2. 为caching集群和NAT实例创build安全组规则。
  3. validation规则。
  4. 将一个iptables规则添加到NAT实例。
  5. 确认可信客户端能够连接到群集。
  6. 保存iptablesconfiguration。

有关更详细的说明,请参阅aws指南:

http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

我们使用HAProxy作为保留的代理服务器。

AWS以外的系统—> Internet – >带有公共IP的HAProxy – > Amazon Redis(Elasticache)

请注意,还有一个很好的理由(当时)

由于我们使用不支持Amazon DNS的node.js客户端故障转移,客户端驱动程序不支持dns再次查找。 如果redis失败,则客户端驱动程序将保持连接到故障转移后的从属主设备。

通过使用HAProxy,它解决了这个问题。

现在使用最新的ioredis驱动程序,它支持亚马逊DNS故障转移。

不是那么古老的问题,我自己跑到同一个问题,并解决它:

有时,由于发展的原因,你需要从外部访问(以避免多部署只是一个简单的错误修复,也许?)

亚马逊已经出版了一个新的指南,使用EC2作为外部世界的代理人:

http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

祝你好运!

顺便说一句,如果有人想要一个Windows EC2解决scheme,请在DOS提示符(在所述的Windows EC2机器上)试试这些:

添加端口转发

C:\ Users \ Administrator> netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com

列出端口转发的端口

C:\ Users \ Administrator> netsh interface portproxy show all

听ipv4:连接到ipv4:

地址端口地址端口


10.xxx.128.xxx 6379 xxx.xxxxx.ng.0001.use1.cache.amazonaws.com 6379

删除端口转发

C:\ Users \ Administrator> netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx

这是一个坚实的节点脚本,将为您做所有的肮脏的工作。 testing和validation它的工作。

https://www.npmjs.com/package/uzys-elasticache-tunnel

如何使用用法:uzys-elasticache-tunnel [options] [command]

命令:

 start [filename] start tunneling with configuration file (default: config.json) stop stop tunneling status show tunneling status 

选项:

 -h, --help output usage information -V, --version output the version number 

用法示例

  • 开始 – uzys-elasticache-tunnel启动./config.json
  • 停止 – uzys-elasticache-tunnel停止
  • 状态 – uzys-elasticache-tunnel状态

无法直接从VPC实例访问经典集群。 解决方法是在经典实例上configurationNAT。

NAT需要一个简单的tcp代理

 YourIP=1.2.3.4 YourPort=80 TargetIP=2.3.4.5 TargetPort=22 iptables -t nat -A PREROUTING --dst $YourIP -p tcp --dport $YourPort -j DNAT \ --to-destination $TargetIP:$TargetPort iptables -t nat -A POSTROUTING -p tcp --dst $TargetIP --dport $TargetPort -j SNAT \ --to-source $YourIP iptables -t nat -A OUTPUT --dst $YourIP -p tcp --dport $YourPort -j DNAT \ --to-destination $TargetIP:$TargetPort