• 通过NAT实例实现外部访问AWS的ElastiCache资源


    ElastiCache作为AWS的内存缓存组建可以说做的一点也不友好了,

    你可以通过ElastiCache创建redis,memcache的实例,却不能被外部访问。

    背景

    人傻钱多的客户总有人傻钱多的需求,他们本地做开发测试,需要用到redis,

    于是他们决定在aws上创建一个redis的实例,用作本地开发测试。虽然我看不到价目表,但我想一台redis实例应该也得不少钱。

    于是,我在public子网下创建了一个redis实例,原本以为可以通过终端节点的名称加端口号来访问到实例,结果我想多了。

    官方给出的解释是:

    好吧,我不是有意吐槽,至少它还是给出了解决方法。

    没错就是通过NAT实例

    创建NAT实例

    我们先来说说要求:

    • 首先你必须在相同vpc,相同子网下创建你的NAT实例以及你的缓存实例
    • 且所在子网必须是公有子网,啥叫公有子网就是在路由表中该子网必须绑定了internet网关(igw)
    • 然后你的NAT实例必须绑定一个弹性IP(EIP)

    (可能你看到这就已经觉得很麻烦了。。。)

    环境准备:

    接下来假设你在一个叫“TEST-VPC”下的“public-subnet”子网下创建了一个Redis的实例,你可以通过ping它的主机名以获取它的内网IP地址后面会用到。

    比如你的redis的内网ip是:192.168.1.110   端口: 6379

    然后我们到EC2的界面选择——》实例——》启动实例

    在选择AMI的时候搜索带有NAT标签的镜像(这里我就默认选择的第一个),资源怎么划分大家根据需求随意搭配

    注意:

    • 选择和之前redis实例相同的VPC,以及相同的子网
    • 在创建安全组的时候开放TCP 6379的端口  以及ssh 22远程连接的端口

    ……省略创建EC2实例的过程

    比如你已经创建好一个NAT实例了,IP地址为:192.168.1.120

    接下来进入EC2界面——》弹性IP——》分配新地址,为你的实例关联一个弹性IP

    到这里你已经成功了一大半了。

    添加iptables规则

    登录到NAT实例,为 NAT 实例启用 IP 转发。以下命令可用于确认这一点:

    cat /proc/sys/net/ipv4/ip_forward
    

    启用伪装:

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    将 iptables 规则添加到 NAT 实例。

    必须为群集中的每个节点将 iptables 规则添加到 NAT 表,以便将缓存端口从 NAT 实例转发到群集节点。

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 192.168.1.110:6379

    你可以通过telnet测试是否成功:

    telnet 203.0.113.73 6379

    保存 iptables 配置。

    在您测试和验证规则之后保存规则。如果您使用基于 Redhat 的 Linux 分发(例如 Amazon Linux),请运行以下命令:

    service iptables save
    

    到这里所有的配置就结束了

    总结

    接下来就是真正的吐槽时间了!

    首先客户的提出的需求就已经是一个另类的需求了,想必大家并不多见。

    如果是本地开发测试,并不介意将你的redis创建在公有云上并通过公网访问。

    其次,我们来算一下你这次创建所需的花费:

    • redis实例
    • EC2实例
    • 弹性IP

    您的测试环境成本真的大,/不是礼貌的微笑

  • 相关阅读:
    linux redis 安装和链接,,,
    ppt转化pdf
    跨服务器 同步数据
    字典表相关
    代码重构,空间换时间,dictionary 不要用object ,需明确指定类型
    stringbuilder for test performance 性能 update 性能
    nvarchar 和varchar 在len下一致,datalength下nvarchar翻倍
    android GradLayout实现计算器
    屏幕录制GIF动画工具
    android SharedPreferences 简单的数据存储
  • 原文地址:https://www.cnblogs.com/Bourbon-tian/p/9004242.html
Copyright © 2020-2023  润新知