我可以从 EC2实例连接到VPC中的 Elasticache redis实例,但我想知道是否有办法连接到Elasticache Redis节点位于Amazon EC2实例之外,例如来自我的本地开发人员设置或其他供应商提供的VPS实例。
目前从我的本地设置尝试时:
redis-cli -h my-node-endpoint -p 6379
一段时间后我才会暂停。
答案 0 :(得分:75)
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节点的安全组连接到您的redis实例进入缓存安全组。
此外,AWS现在支持访问群集更多信息here
答案 1 :(得分:58)
不,你不能不诉诸“隧道”之类的“技巧”,这可能对测试没有用,但会消除使用超快速缓存带来额外延迟/开销的任何真正好处。
...在VPC内部或外部的 Amazon ElastiCache群集永远不会 允许从互联网访问。
从这里开始:http://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
编辑2018:上面的答案在编写时是准确的,但是现在可以通过一些配置从外面使用方向从本页大约1/2的方向访问redis缓存:{{3 }}
答案 2 :(得分:19)
这些答案已过期。
您可以按照以下步骤访问AWS外部的弹性缓存:
有关更详细的说明,请参阅aws指南:
答案 3 :(得分:5)
不是那么老的问题,我自己跑到同一个问题并解决了它:
有时,出于开发原因,您需要从外部访问(以避免多部署只是为了进行简单的错误修复?)
亚马逊发布了一份新指南,该指南使用EC2作为外部世界的代理:
http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html
祝你好运!答案 4 :(得分:4)
我们正在使用HAProxy作为保留代理服务器。
您在AWS以外的系统---&gt;互联网 - &gt;具有公共IP的HAProxy - &gt; Amazon Redis(Elasticache)
请注意,还有另一个很好的理由(当时)
由于我们使用不支持Amazon DNS故障转移的node.js客户端,因此客户端驱动程序不支持dns再次查找。 如果redis失败,客户端驱动程序将保持连接到旧主服务器,这是故障转移后的从服务器。
通过使用HAProxy,它解决了这个问题。
现在使用最新的ioredis驱动程序,它支持amazon dns故障转移。
答案 5 :(得分:4)
C:\用户\管理员&GT; netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com
C:\用户\管理员&GT; netsh interface portproxy show all
收听ipv4:连接到ipv4:
地址端口地址端口
10.xxx.128.xxx 6379 xxx.xxxxx.ng.0001.use1.cache.amazonaws.com 6379
C:\用户\管理员&GT; netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx
答案 6 :(得分:3)
这是一个可靠的节点脚本,可以为您完成所有脏工作。经测试并验证其有效。
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
用法示例
答案 7 :(得分:1)
无法从VPC实例直接访问经典集群。解决方法是在经典实例上配置NAT。
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
答案 8 :(得分:0)
我解决了这个亚马逊文档,它说您必须在另一台ec2机器上安装stunnel。
https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/