首页 文章 精选 留言 我的

精选列表

搜索[AI功能],共10000篇文章
优秀的个人博客,低调大师

一键部署NAT功能的ECS集群

应用场景 专有网络环境下,云服务器ECS实例不能直接访问公网,需要通过挂载EIP来获得公网访问的能力。但是往往集群内部多台ECS都能对外提供服务,这时如果每一台都挂载EIP不仅耗费带宽资源,还破坏了整个网络结构。本文介绍一种SNAT网关访问公网的方式如下图所示 : 解读: 拿其中一台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 在云主机启动时加载并执行这些数据,从而完成对云主机的个性化定制。 更多的详情可参考Cloud-Init文档 阿里云ECS userdata详解请参考 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} ${worker_private_ip}>> /etc/sysctl.conf 'net.ipv4.ip_forward=1'>> /etc/sysctl.conf -p -t nat -I POSTROUTING -s $PostRouting -j SNAT --to-source $SourceRouting -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中提问。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册