一键部署NAT功能的ECS集群

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
公网NAT网关,每月750个小时 15CU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 本文介绍一键部署具有NAT网关的ECS集群

应用场景

专有网络环境下,云服务器ECS实例不能直接访问公网,需要通过挂载EIP来获得公网访问的能力。但是往往集群内部多台ECS都能对外提供服务,这时如果每一台都挂载EIP不仅耗费带宽资源,还破坏了整个网络结构。本文介绍一种SNAT网关访问公网的方式如下图所示 :

NAT struct

解读:

  • 拿其中一台ECS做为VPC网络的NAT网关,然后在路由表中添加其他实例的转发规则。
  • 首先这台ECS实例要在指定的VPC网络中,
  • 然后给它绑定EIP,然后在这台ECS实例上的iptables配置SNAT和DNAT,
  • 最后在VPC的路由表中添加下一跳是这台ECS的路由项。

传统步骤

在控制台:

  • 创建VPC实例
  • 创建一个VSwitch(记录下网段)
  • 创建EIP实例
  • 创建ECS实例(记录下IP)
  • ECS绑定EIP
  • 登录ECS配置iptables(需要用Vswtich网段和ECS IP)
  • 添加路由

每一步操作都需要切换到不同的地址、不同的页面,不仅操作繁琐还得不停的切换时间片。详细操作步骤请参考教程。 下面介绍一种自动的方式,可以一键部署完成。

自动化部署

上述每一个步骤都是资源部署和配置的过程,以配置文件的方式来描述基础设施,然后让编排工具帮助我们去部署资源,这是基础设施即代码(Infrastructure as Code)的核心。本文讲解利用开源社区活跃度最高的资源编排工具Terraorm,在阿里云完成SNAT结构的部署。

UserData

User-Data 是实现云主机个性化定制的基础,用户通过 User-Data 设置一些定制化数据,如启动某项服务,下载一些包并设置这些包的安装脚本等,Cloud-Init 在云主机启动时加载并执行这些数据,从而完成对云主机的个性化定制。

Terraform编排模板

Terraform 是来自HashiCorp家族的开源工具,支持阿里云、AWS、Azure、GoogleCloud、DigitalOcean诸多云厂商的支持。有关terraform详细介绍请移步前一篇文章。本例涉及到的Terraform资源如下:

  • alicloud_vpc: vpc实例配置
    • cidr_block: 指定网段
  • alicloud_vswitch: 配置vswitch
    • cidr_block: 网段
    • availability_zone: 可用区
  • alicloud_route_entry: 配置路由条目
    • router_id: 指定VPC网络中的路由器ID
    • route_table_id: 指定VPC网络中路由表ID
    • destination_cidrblock: 目标网段
    • nexthop_type: 下一跳类型,这里填Instance
    • nexthop_id: ECS实例ID
  • template_file: 模板文件,支持把template的值传给shell脚本,片段如下

    data "template_file" "shell" {
    template = "${file("userdata.sh")}"
    
    vars {
        worker_private_ip = "${alicloud_instance.worker.private_ip}"
        vswitch_cidr = "${var.vswitch_cidr}"
    }
    }
    
    • 在ecs和vswtich创建完之后,拿到ip地址传给shell脚本
  • alicloud_instance: ECS实例配置

    • image_id: 镜像ID
    • instance_type: 实例类型
    • vswitch_id: 交换机ID
    • io_optimized: 是否IO优化
    • system_disk_category: 系统盘类型
    • user_data: 用户脚本,详见
    • 这里用到了userData, 把配置iptables的脚本传给ECS,在实例启动的时候自动配置iptables
    PostRouting=${vswitch_cidr}
    SourceRouting=`ifconfig eth0|grep inet|awk '{print $2}'|tr -d 'addr:'`
    echo ${worker_private_ip}>> /etc/sysctl.conf
    echo 'net.ipv4.ip_forward=1'>> /etc/sysctl.conf
    sysctl -p
    iptables -t nat -I POSTROUTING -s $PostRouting -j SNAT --to-source $SourceRouting
    iptables -t nat -I PREROUTING -d $SourceRouting -p tcp --dport 80 -j DNAT --to ${worker_private_ip}
    

完整模板 下载

一键部署

安装 Terraform, 然后下载我们的模板,执行 terraform apply 等待几分钟,整个基础架构部署完成

验证

SSH到ECS上执行命令 iptables -t nat -nvL 结果如下:

target port in source destination
DNAT tcp * 0.0.0.0/0 10.1.1.57 tcp dpt:80 to:10.1.1.56
SNAT all * 10.1.1.0/24 0.0.0.0/0 to:10.1.1.57

反馈

本文介绍了一种自动化选配ECS 做为NAT的方法,减轻了繁琐的配置工作,可以跟您的自动化工具协同使用。大家对自动构建工具Terraform感兴趣,或者有问题也可以在github https://github.com/alibaba/terraform-provider 的Issue中提问。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
NoSQL 关系型数据库 MySQL
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!
业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;结合以上原因,对导出操作进行排队; 刚开始拿到这个需求,第一时间想到就是需要维护一个FIFO先进先出的队列,给定队列一个固定size,在队列里面的人进行排队进行数据导出,导出完成后立马出队列,下一个排队的人进行操作;还考虑到异步,可能还需要建个文件导出表,主要记录文件的导出情况,文件的存放地址,用户根据文件列表情况下载导出文件。
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!
|
弹性计算 负载均衡 NoSQL
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)(四)
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
123 0
|
弹性计算 负载均衡 NoSQL
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)(二)
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
109 0
|
弹性计算 负载均衡 NoSQL
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)(一)
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
|
弹性计算 关系型数据库 MySQL
通过会话管理端口转发功能访问ECS内部服务
本场景带您体验如何通过ali-instance-cli使用会话管理连接ECS实例,和通过ali-instance-cli对ECS内部服务进行端口转发。
|
2天前
|
弹性计算 运维 监控
云产品评测:云服务诊断 — ECS实例健康状态与诊断功能体验
作为一名运维工程师,我日常管理和维护云资源,确保服务稳定运行。阿里云的云服务诊断功能提供了便捷的方式实时了解和优化ECS实例的健康状态。通过健康状态功能,我能够查看CPU、内存等指标,及时发现并解决性能瓶颈,提升了约30%的工作效率。诊断功能则帮助我快速定位复杂问题,减少了40%的诊断时间,并提供详细的优化建议。尽管功能已很强大,但仍建议进一步细化诊断结果和增加自定义告警选项,以提升使用体验。我非常推荐此工具给其他运维人员。
36 22
|
11天前
|
弹性计算 运维 开发者
关于ECS 健康状态 诊断功能评测
这是一位开发兼运维工程师的观点,认为云资源的健康状态和诊断功能作用有限,因为大多数问题根源在于代码质量,而这些工具无法改善低下的代码质量导致的资源异常。
|
5月前
|
存储 弹性计算 大数据
阿里云服务器怎么样?云服务器ECS功能、租用费用全解析
阿里云ECS是弹性计算服务,提供安全可靠的云服务器,包括多种实例规格如经济型、通用型、计算型等,适合不同场景。ECS支持VPC专有网络、快照与镜像、多种付费模式。用户可按需选择计算架构、存储类型,享受灵活的网络控制、自动化数据备份和低成本计算资源。适用于Web应用、在线游戏、大数据分析和深度学习等场景。阿里云提供免费试用和优惠价格,服务众多知名企业,如新浪微博。
204 5
|
5月前
|
存储 弹性计算 大数据
阿里云服务器怎么样?全访问解析云服务器ECS功能、租用、优缺点及使用说明
阿里云ECS是弹性计算服务,提供安全可靠的云服务器,包括多种实例规格如经济型、通用型、计算型等,适合不同场景。ECS支持VPC专有网络、快照与镜像、多种付费模式。用户可根据业务需求选择实例、存储类型和网络配置。阿里云服务器适用于Web应用、游戏、大数据和深度学习等场景,提供免费试用和不同优惠套餐。众多知名企业如新浪微博等信赖阿里云服务。更多信息可访问阿里云官方网站。
280 5
|
1月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码服务器环境配置及app功能
一对一直播源码阿里云服务器环境配置及要求