从外部通过telnet连接到AWS ElastiCache
据说AWS ElastiCache只能从同一VPC内的EC2进行访问。
步骤4:允许访问 – 引用自Amazon ElastiCache
所有的ElastiCache集群都是设计用来从Amazon EC2实例进行访问的。集群和相关的EC2实例需要位于同一个Amazon Virtual Private Cloud(Amazon VPC)中。如果需要从VPC内的EC2实例以外的地方访问ElastiCache集群,则可以设置一个或多个在缓存的VPC内作为外部代理的EC2主机作为解决方案。
所以,我会按照指示使用EC2作为代理,尝试从外部网络进行连接。
步骤 (Bù
将IP地址设定如下所示。
-
- AWS ElastiCache エンドポイントIP: xxx.xxx.xxx.xxx
-
- AWS EC2 プロキシサーバ パブリックIP: yyy.yyy.yyy.yyy ※ElasticIP推奨
- 外部のソースIP: zzz.zzz.zzz.zzz
构建ElastiCache
我会在安全组中允许“安全组自身访问11211端口”,然后构建。剩下的可以随意。我选择了t2.micro并安装了memcache1.4.24。
建立 EC2
在安全组中允许来自”zzz.zzz.zzz.zzz”的SSH(22)端口和11211端口,并进行设置。
其他的随便。我选择了t2.nano实例类型,并使用了AmazonLinux镜像。
使用SSH登入EC2实例,启用通过iptables进行IP转发设置。
$ ssh -i ~/.ssh/(生成した鍵) ec2-user@yyy.yyy.yyy.yyy
$ sudo su -
# yum install telnet iptables
# sysctl -w net.ipv4.ip_forward = 1
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to xxx.xxx.xxx.xxx:11211
如果您打算长期使用sysctl和iptables设置,建议将其记录在/etc目录下以实现持久化。
确认连接
使用古老而強大的TELNET協議進行連接驗證。
首先从内部EC2开始。
[ec2-user@ip-yyy-yyy-yyy-yyy ~]$ telnet xxx.xxx.xxx.xxx 11211
Trying xxx.xxx.xxx.xxx...
Connected to XXXXX.XXXXXX.XXXX.XXXXX.cache.amazonaws.com.
Escape character is '^]'.
^]
外部から。
[argus@01110110111 ~]$ telnet xxx.xxx.xxx.xxx 11211
Trying xxx.xxx.xxx.xxx...
Connected to XXXXX.XXXXXX.XXXX.XXXXX.cache.amazonaws.com.
Escape character is '^]'.
^]
我成功了。
参考资料
-
- AWS 外部からの ElastiCache リソースへのアクセス – Amazon ElastiCache
- アルゴス – ニンジャスレイヤー Wiki