您可以连接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:
- 在与您的caching集群相同的VPC中创buildNAT实例,但是在公有子网中。
- 为caching集群和NAT实例创build安全组规则。
- validation规则。
- 将一个iptables规则添加到NAT实例。
- 确认可信客户端能够连接到群集。
- 保存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