您可以连接到亚马逊以外的亚马逊ElastiСache Redis吗?

jtw3ybtb  于 2023-01-20  发布在  Redis
关注(0)|答案(9)|浏览(306)

我可以从EC2示例连接到VPC中的ElastiCache Redis示例,但我想知道是否有方法连接到Amazon EC2示例之外的ElastiCache Redis节点,例如从我的 local dev设置或其他供应商提供的VPS示例。
当前从本地设置尝试时:

redis-cli -h my-node-endpoint -p 6379

我只有在一段时间后才能得到暂停。

4jb9z9bj

4jb9z9bj1#

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节点的安全组进入缓存安全组。
此外,AWS现在支持访问您的群集更多信息here

c0vxltue

c0vxltue2#

2018年更新

之前的答案在编写时是准确的,但是现在可以通过一些配置从外部访问redis缓存,使用从AWS外部访问ElastiCache资源中的说明

旧答案

不,你不能不诉诸'技巧',如隧道,这可能是好的测试,但将扼杀任何真实的的好处,使用超快缓存与增加的延迟/开销。

在VPC内部使用Amazon ElastiCache与在外部使用有何不同?

Amazon ElastiCache集群,无论是在VPC内部还是外部,都 * 永远不允许从Internet访问 *
但是,此语言已在当前常见问题解答中删除

elcex8rz

elcex8rz3#

这些答案已过期。

您可以通过以下步骤访问AWS外部的弹性缓存:
1.在与缓存集群相同的VPC中创建一个NAT示例,但该示例位于公共子网中。
1.为该高速缓存群集和NAT示例创建安全组规则。
1.验证规则。
1.将iptables规则添加到NAT示例。
1.确认受信任的客户机能够连接到群集。
1.保存iptables配置。
有关更详细的描述,请参阅aws指南:
https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws

1bqhqjot

1bqhqjot4#

不是那么老的问题,我跑到同样的问题自己,并解决了它:
有时,出于开发的原因,您需要从外部访问(为了避免多个部署,只是为了一个简单的错误修复?)
Amazon发布了一份新指南,将EC2用作外部世界的代理:
https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws
祝你好运!

x9ybnkn6

x9ybnkn65#

顺便说一句,如果任何人想要一个windows EC2的解决方案,尝试这些在DOS提示符(在所说的windows EC2机器):

添加端口转发

C:\用户\管理员〉netsh interface portproxy add v4tov4 listenport=6379 listenaddress=10.xxx.64.xxx connectport=6379 connectaddress=xxx.xxxxxx.ng.0001.use1.cache.amazonaws.com

列出端口转发端口

C:\用户\管理员〉netsh interface portproxy show all
在ipv4上收听:连接到ipv4:
地址端口地址端口
10.xxx.128.xxx 6379xxx.xxxxx.ng.0001.use1.cache.amazonaws.com:

删除端口转发

C:\用户\管理员〉netsh interface portproxy delete v4tov4 listenport=6379 listenaddress=10.xxx.128.xxx

ymdaylpp

ymdaylpp6#

我们使用HAProxy作为保留代理服务器。
您在AWS之外的系统---〉互联网--〉带有公共IP的HAProxy--〉亚马逊Redis(Elasticache)
请注意,(在那个时候)这样做还有另一个很好的理由
由于我们使用的是node.js客户端,它不支持Amazon DNS故障转移,客户端驱动程序也不支持DNS再次查找。如果redis失败,客户端驱动程序将保持连接到旧的主服务器,即故障转移后的从服务器。
通过使用HAProxy,它解决了这个问题。
现在使用最新的ioredis驱动程序,它支持amazon dns故障转移。

cx6n0qe3

cx6n0qe37#

这是一个坚实的节点脚本,将为您做所有肮脏的工作。测试和验证它的工作。
https://www.npmjs.com/package/uzys-elasticache-tunnel
如何使用用法:uzys-elasticache-隧道[选项][命令]
命令:

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-弹性缓存-隧道启动。/config.json
  • 停止-uzys-弹性疼痛-隧道停止
  • 状态-uzys-弹性缓存-隧道状态
pvabu6sv

pvabu6sv8#

从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
cedebl8k

cedebl8k9#

我解决了使用这个亚马逊文档,它说你必须安装stunnel在您的另一个ec2机器。
https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-connect-redis-node/

相关问题