我能够从EC2实例连接到VPC中的ElastiCache Redis实例。但是我想知道是否有一种方法可以连接到Amazon EC2实例外部的ElastiCache Redis节点,例如从我的本地开发设置或其他供应商提供的VPS实例。
目前,从我的本地设置尝试时:
redis-cli -h my-node-endpoint -p 6379
过了一段时间我才超时。
我能够从EC2实例连接到VPC中的ElastiCache Redis实例。但是我想知道是否有一种方法可以连接到Amazon EC2实例外部的ElastiCache Redis节点,例如从我的本地开发设置或其他供应商提供的VPS实例。
目前,从我的本地设置尝试时:
redis-cli -h my-node-endpoint -p 6379
过了一段时间我才超时。
Answers:
不,您不能不借助诸如隧道之类的“技巧”,虽然可以通过测试来解决问题,但是将杀死使用超快速缓存并增加延迟/开销的任何真正好处。
...绝对不允许从Internet访问VPC内部或外部的Amazon ElastiCache集群。
从这里:http : //aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
EDIT 2018:上面的答案在写时是准确的,但是现在可以通过一些配置来使用此页面下约1/2的方式从外部访问redis缓存:https ://docs.aws.amazon.com/AmazonElastiCache /latest/red-ug/accessing-elasticache.html#access-from-outside-aws
SSH端口转发应该可以解决问题。尝试从您的客户端运行它。
ssh -f -N -L 6379:<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
。还请确保您将用于连接到Redis实例的EC2节点的安全组允许到Cache安全组中。
此外,AWS现在支持在此处访问群集的更多信息
kill -9 <pid>
这些答案已过期。
您可以按照以下步骤在AWS外部访问弹性缓存:
有关更详细的描述,请参见aws指南:
不是一个老问题,我自己遇到了一个问题并解决了:
有时,出于开发原因,您需要从外部进行访问(为避免仅由于简单的错误修复而进行的多次部署?)
亚马逊已经发布了一个新指南,该指南使用EC2作为外界的代理:
祝好运!
我们正在使用HAProxy作为保留的代理服务器。
AWS之外的系统-> Internet->具有公共IP的HAProxy-> Amazon Redis(Elasticache)
请注意(当时)还有另一个很好的理由
由于我们使用不支持Amazon DNS故障转移的node.js客户端,因此客户端驱动程序不支持dns再次查找。如果redis失败,则客户端驱动程序将继续连接到旧的主服务器,该主服务器在故障转移后为从服务器。
通过使用HAProxy,它解决了该问题。
现在使用最新的ioredis驱动程序,它支持Amazon dns故障转移。
顺便说一句,如果有人想要Windows EC2解决方案,请在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
这是一个可靠的节点脚本,它将为您完成所有肮脏的工作。经过测试并验证了它的有效性。
https://www.npmjs.com/package/uzys-elasticache-tunnel
使用方法:uzys-elasticache-tunnel [选项] [命令]
命令:
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
使用范例
无法从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
我解决了这个亚马逊文档,它说您必须在另一台ec2机器上安装stunnel。
https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/