AWS运维部署实践--网络环境规划
# 前言
我们最近对一个完整的业务进行了 AWS 化部署,经借这个机会,我得以对 AWS 运维有了些许了解。
对于用惯了国内阿里云,腾讯云的我来说,猛地一下子要使用 AWS,会有一种世界倒退了几十年的感觉。
但大多数时候,用哪个云都并非我们的选择。
所以一开始就要学着降低心理预期,很多东西不能按照以往的思路平迁,不要怀着排斥或是睥睨的心态,那样只会让自己陷入思绪的沼泽,耽误了正事儿。
接下来,将会用几篇不同维度的专题文章,对一些容易踩坑的地方,以及主要的内容进行记录分享,如有类似场景需求的同学,阅读或有助益。
# 规划
AWS 的网络与腾讯云的使用思路不同,常用腾讯云的同学应该清楚,在腾讯云中网络规划大概呈现如下样态:
- 首先规划好 VPC 大网段,然后根据实际情况划分不同的子网。
- 在子网中购买的服务器,有两种方式访问外网及被外网访问。
- 第一种:直接给服务器绑定弹性公网 IP,即可直接通过公网 IP 登陆该服务器,并且暴漏的服务端口也可直接被互联网访问。
- 第二种:可以选择给 VPC 创建一个公共 NAT 出口,再给 NAT 出口绑定一个或多个弹性公网 IP,然后在子网关联的路由表中,增加
0.0.0.0/0
的流量走 NAT 出口的规则。此时服务器也可通过 NAT 访问互联网,同时如果想要被互联网访问,腾讯云也提供了直接在 NAT 配置端口映射到内网服务器的功能。(补充:如果在你的子网中的服务器,部分主机想要走独立的公网出口,也可以选择下一跳优先走云服务器的公网 IP)。
而在 AWS 中子网划分了三类:
- 公有子网:公有子网可通过在路由表中
0.0.0.0/0
关联 IGW 实现与互联网的双向访问,这种子网下的实例即可实现服务器访问公网,也可让公网访问进来。 - 私有子网:私有子网可通过在路由表中
0.0.0.0/0
关联 NAT 公网 IP 实现子网内的云产品访问公网,但不可被互联网访问。 - 内部子网:纯云内互通,不可访问公网,也不能被公网访问。路由表中没有
0.0.0.0/0
这一条规则。
用一张图来说明此情况就是:
在这些规划的基础之上,就可以针对按照不同环境,或针对不同场景来划分 VPC 以及子网了。
这里提供一下我创建时的一些规划思路。
此处规划大概有如下几个考量点:
- 首先注意,网段不要与自己内部其他子网冲突。此截图中网段,并非我实际生产使用,而是脱敏后网段,请你根据自己的实际情况进行规划。
- VPC 和子网以及路由表命名,可根据你自己的规范来进行。
- 因各环境将要拉起 eks 集群,因此对应单独规划 eks 的子网,且为大网段。
- 生产环境专门给数据库划分到了内部子网,请注意使用时进行区分。
- 如果你的使用场景更为复杂,且业务更庞大,则可以考虑每个环境独立一个 VPC,只不过 VPC 区隔开之后,随后要做的 VPC 打通会稍微麻烦一点点。
# 创建VPC
首先创建 VPC,然后创建子网,然后创建路由表,有多VPC或多账号的情况下,可能还会涉及到网络的打通。
创建VPC 创建 VPC 比较简单,注意
命名
,以及网段
写对即可。创建子网 创建子网时稍稍注意:每个 VPC 内的子网可
批量创建
,但是务必主要写对名字
及网段
,然后注意指对区域
,否则后期会出现网络不通的情况。创建路由表 创建路由表也比较简单,注意创建 VPC 之后系统会自动给我们创建一条
默认路由表
,这条可标记一下,不删,但不用,路由表我们在之后根据实际需求自行创建。- 创建完路由表有两件事儿要做
- 对应的路由要关联对应的子网,比如前边规划的,公有子网,私有子网,内部子网,分别对应三条路由,三条路由要各自关联三种不通的子网。
- 配置路由表。事项 1 可以先做,此事项要在其他配套内容创建之后才可以做。
- 创建完路由表有两件事儿要做
创建互联网网关(
IGW
) 创建就比较简单,直接创建即可,创建完毕之后,需要首先把 igw 关联到对应的 VPC,然后才能被路由表关联(如果少了这一步,关联时会遇到报错:route table rtb-xxxxxxxxxxx and network gateway igw-xxxxxxxxxxxx belong to different networks
)。 然后再编辑子网的public
的路由表,增加出口规则,关联IGW:创建 NAT 网关
- 创建时需注意
- NAT 网关要在
IGW
创建完毕并且配置到路由表之后创建,否则会遇到报错:Network vpc-00000001 has no Internet gateway attached
。 - 创建NAT网关时所要选择的子网应为
public
的子网,从而使得该NAT对应的IP能够访问公网。 - 注意创建时不要下拉选择弹性IP,而应该点击
自动分配
,每个NAT都应该绑定独立的IP,创建完毕之后,记得再去给IP改下名字。
- NAT 网关要在
然后再给每个名字带
private
的路由表,增加关联对应nat
的规则。- 创建时需注意
# 打通VPC
有多种方案可以将VPC进行打通,不同的场景,可选择不同的方案,比如对等连接(PCX),或者中转网关(TGW)都可以。
两者特点如下:
- 对等连接:需要每个VPC之间两两互相创建对等连接进行打通,适合VPC数量不多的场景。数量多了之后,维护难度陡增。但优点是对等连接相对便宜一些。
- 中转网关:集中式打通,可创建一个中转网关,然后共享给多个账号,每个账号下的VPC都可以挂载到一个中转网关实例上。适合AWS账号多,且VPC规划也比较多的场景,维护相对简易。但缺点是要比对等连接贵。
你可以结合自己实际使用情况来选择不同的方案。两者都只是将VPC打通,打通之后,你还需要在两个VPC所关联的路由表中,配置去往对应的子网,下一跳走哪里。
这里我就介绍一下中转网关在跨账号VPC打通上的配置流程。
假设A账号中有三个VPC,B账号中也有三个VPC,现在已经在A账号创建了一个中转网关 (opens new window)。
先在A账号把中转网关实例共享给账号B,共享服务在aws中叫Resource Access Manager (opens new window)
点击创建共享,在资源中搜索中转网关,然后选择对应的实例
第二步保持默认,不需要改动。
第三步填入B账号的ID,
下一步创建出来就可以了。
然后来到B账号的控制台,同样点击Resource Access Manager (opens new window)服务,大概要等一会儿,可以看到一条关联请求,然后点击同意,那么再过一会儿,就能在B账号的中转网关服务内,看到A账号的中转网关实例了。
接着下一步就是在B账号,把当前账号里的VPC挂载到中转网关上。
再接着下一步,就可以在B账号的路由表里,增加路由规则了,去往A账号的VPC,走中转网关即可,此规则需要在两个账号的VPC互相添加。
这样子就实现了跨账号的VPC打通。
# 最后
网络是所有环境搭建的基础,前期做好规划,选择合理的方案,对于后期的工作影响非常大,因此务必全面了解,慎重选型,最后再下手配置。