基于云平台的网络规划 [干货!原创文章禁止转载!]

  • 本文基于AWS作为云厂商进行介绍,其他云平台或自建云可以参考相关替换产品。
  • 这个解决思路弹性较好,比较适用于很多应用场景中,在具体场景中进行裁剪或者修改来满足需求。

基础服务

  • VPC(私有网络,隔离的网络环境)
  • 子网(有些称为交换机,可以通过不同的网络访问的需求类型来进行划分,来满足较复杂的场景)
  • 路由表
  • Internet网关
  • NAT网关 (类似路由器)
  • 弹性IP(不推荐使用自动分配的公网IP,需要绑定弹性的公网IP,一般应用场景中不会使用过多的公网IP)
  • 安全组(实现防火墙)
  • 对等网络 (aws跨区域的连接)
  • VPN (用于企业网和云上环境的连接,以及跨云厂商的连接)

需求

  • 环境需求:测试环境(非生产环境)(开发环境,测试环境,UAT环境等),生产环境(预发布,灰度,生产环境等),云下IDC(企业网,本地开发环境,本地联调环境等,这个案例中生产环境都是在云上环境中
  • 云上环境需求:多可用区,跨地区场景
  • 满足弹性的设计需求

实践

整体设计逻辑基本是一个弹性的设置方式,既可以满足初期的快速设置的需求,又可以满足中后期的复杂场景。

在项目初期一定要做网络规划

VPC的实践

VPC主要的特点是带来了一个隔离的网络环境,所以主要的划分思路也根据他的特性来划分。

在一般的开发过程中会区分好多环境,例如测试环境,UAT环境,开发环境,灰度环境,生产环境,预发环境等等,其实总的来看就可以分成生产环境和非生产环境,两个区域把这个问题进行简化,这里可以看主要的区分依据可以是数据的隔离性,按照这个思路,这两个环境基本不会进行相互的连通,所以这两个环境就需要使用两个VPC,这里需要注意的是类似测试环境中的开发联调的环境,UAT的环境等等,可以都归属于测试环境,测试环境和生产环境的区别可以理解成生产环境,和非生产环境,这里会引发问题是不知道一些服务或者机器资源等要归属到哪个环境中,这里判断的条件是数据的环境归属,因为数据可以很简单的进行生产环境和非生产环境的区分,对于服务的区分就可以通过当前服务操作的数据进行环境的区分,按照这个思路基本就可以解决服务归属问题了。这样生产环境也就会处以一个较为封闭私有有环境中,也可能减少一些误操作导致的问题。

这里在日常的使用中,还会出现些问题,比如有些数据分析类的服务,是测试版本的代码,但是可能需要读取生产的数据进行开发。如果出现这样的场景,这里提供两个比较简单的办法,如果可以果确认这个服务是只读的,并且后续没有什么修改操作(例如需要保存数据结果),以及没有更多的测试服务依赖这个数据的场景下,那么当前服务可以直接接入到生产的数据进行开发和测试。但是有些服务会把生产上的数据进行读取分析后将结果写入到一些地方然后进行后续的操作,这样的场景在后续文章中会讨论,和本文关系不大。

这里有些使用场景,比如运维管理平台,例如gitlab,maven私服等放到非生产环境中。但是有些是独立服务于生产环境,就可以放到生产的VPC中即可。

现在把所有的环境分成了,生产环境和非生产环境两部分,也基本可以确定两个区域基本是不会进行互通的,因为数据不可能既存在于测试环境中,又存在于非生产的环境中。如果有网络连通的需求也可以通过公网环境进行连通 。

所以在一个区域中规划两个VPC,生产环境VPC,专注用于做生产环境相关服务,一个隔离严格控制的隔离环境。非生产环境VPC,用于做其他服务,例如,测试环境,运维环境等。多区域的扩展性,可以通过相同的方式进行复制,当然有可能不需要在每个区域都建立两个VPC,因为可能非生产的测试环境有几个就进行测试,生产环境可能需要在多个地区进行部署(现在多数云厂商还不支持跨区域的VPC)。

网段的设置:VPC网段必须使用私有网段,A类:10.0.0.0/8(可用 16,777,212),B类:172.16.0.0/12(可用 1,048,572),C类:192.168.0.0/16(可用 65,532)。

原则是:避免网段冲突,这里优先使用B类和C类的网段。A类网段作为备用网段,例如阿里云经典网络中使用的是10.0.0.0/8。

生产VPC使用172.16.0.0/12 私有网段,每个VPC使用172.16~31.0.0/16网段(172.16.0.0/16,172.17.0.0/16,172.18.0.0/16 等),每个地区只会有一个生产VPC,所以在B类网段中生产一共可以有15个VPC,其他网络环境使用:192.168.0.0/16,包含办公网。

这里如果可见的在一个VPC内不会包含很多的机器可以将一个172.16.0.0/16分成多个来使用,比如172.16.0.0/17,172.16.128.0/17,两个来方便VPC多区域的扩展。当然还有A类:10.0.0.0/8的备用网段,足够满足需求。

子网、路由表、可用区的实践

子网在阿里云中也称为交换机。

基本所有的服务资源都需要在子网内启动,子网比较关注的特性是网络的连通性,因为路由表是附到子网上的,所以子网的连通需要由路由表和一些网关来进行控制。路由表中包含一系列被称为路由的规则,可用于判断网络流量的导向目的地。在 VPC 中的每个子网必须与一个路由表关联;路由表控制子网的路由。一个子网一次只能与一个路由表关联,但可以将多个子网与同一路由表关联。

总体思路是,路由表和网络进出相关,主要目的是区分有公网IP的公网进出类,和NAT的只出不入两类。子网和路由表关联,所以子网具体路由表的特性,每个可用区中都会建立这三类的子网。

所以这个方案中把子网分成三类。

  1. Internet类,使用Internet网关的,特点:需要有公用IP进行公网的进和出,用途:需要具有公网入能力的服务,例如:负载匀衡服务,一些网关应用。
  2. NAT类,使用为NAT网关,特点:不需要公网IP可以进行公网出方向访问,但是不能公网进入,用途:需要具有公网出的服务,例如:业务服务,绝大多数服务都可以放到这个区域。
  3. 私有类,不会有公网进出,用途:不需要公网的进出已经对安全性要求比较高的服务,例如:数据库服务(这里如果是自建的RDS,这里有联网升级的需求的不要放到这个区域内),KMS服务等

网段的设置:子网建立在VPC中,例如当前VPC的网段为172.16.0.0/16。

  1. 每个子网都是 掩码位 为 24,即每个子网内可以放置最多254个机器,可以扩展相同类型的子网,这样在二类私有网(172.16.0.0/16)中最多可以建立256个子网
  2. 不同服务可以部署到相同的子网中,网络和业务不耦合(但是有的云平台不支持例如RDS,进行安全组的设置,只能支持对网段的控制,这个需要子网和系统耦合,需要单独给RDS建立单独的子网,子网网段可以适当进行调整)

安全组的实践

Aws 中提供了ACL这个服务,也可以用于做访问控制,当前方案中没有使用。

有一些云服务的云厂商,无法对自己的服务比如数据库进行安全组的设置,这样的场景,需要通过建立独立子网,然后对子网IP段进行单独控制

安全组是一种虚拟防火墙,可以通过配置安全组规则,允许或禁止安全组内访问策略。在这个方案中,上述的VPC,子网,路由表等都是在给网络分类,都没有和具体业务服务相关的,业务和网络的关联性通过安全组的方式来实现

可以通过安全组来进行业务系统的划分。比如运维管理区等等,这里还需要注意的是不宜将安全组划分的过细,比如一类系统就有一个安全组,因为接口上也会有安全限制,所以安全组一般会用于公网访问相关,SSH,RDP等访问,敏感系统的访问等。但是比如后台系统中有内容管理系统,用户中心系统等,这类系统不需要分别单独使用安全组中。

案例:

  1. 安全组:WebPub 规则 公网允许入:80,443。(公网的子网类型)
  2. 安全组:Backend 规则 允许WebPub组所有入。Backend允许Backend 大于 1023端口 的访问。(NAT的子网类型)

一个典型的应用场景。有NGINX(Aws LB)等做负载均衡,然后转发到内部的系统中。这样我们把NGINX安装在带有Internet网关的子网中,然后比如用户中心部署到NAT的子网类型中。WebPub会形成DMZ区。这样如果Backend中也可能会有使用了80端口的应用,如果这样的话就可以防止了访问控制策略的失效。Backend组需要允许自身的访问,但是自身的访问需要限制在业务端口(这个实际场景来确定,公认端口 0-1023 注册端口,也可以设置比如5000以上端口)

  1. 按照业务系统的特性来语义话的来创建安全组,比如:WebPub只公网的web访问,Backend是指后端的服务组。

  2. 内部服务允许规则需要尽可能的使用安全组,不要使用指定IP,或者IP段。

IP规划参考

  • 生产VPC:172.16.0.0/12

    • AWS-东京区域:172.16.0.0/16
  • AWS-弗吉尼亚北部区域:172.17.0.0/16

    • AWS-伦敦区域:172.18.0.0/16
  • AWS-北京区域:172.19.0.0/16

  • 非生产网络:192.168.0.0/16

    • 云上环境(测试环境等):192.168.0.0/17
      • AWS-东京区域:192.168.0.0/20
      • AWS-弗吉尼亚北部区域:192.168.16.0/20
      • AWS-北京区域:192.168.32.0/20
    • 企业网(办公环境等):192.168.128.0/17
  • 备用:10.0.0.0/8,扩展策略:保持相同的规则进行扩展,可扩展到多倍。

如有问题欢迎留言或者私信

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342