一文说通云计算系列-云上网络设计

云上网络设计
在这个章节当中我们会了解到什么是vpc,我们在业务发展中应该如何规划vpc,针对于一些需要互联的场景,云上vpc之间,云上与云下的数据中心之间可以通过什么样的方式去实现,最后会从五大支柱安全,成本,可靠,性能,运维的角度去审视云上网络架构。
首先我们来看一个客户需求
“我们原有的系统放在缺省 VPC 的一个子网里。简单是很简单,但如果需要不断演进,网络的设计到底应该是什么样子的?网络的安全控制怎么做?如果需要网络互联,应该用什么技术?”
我们在购买ECS的时候需要指定地域和vpc的,当我们没有创建vpc的时候会有一个系统默认的vpc,客户原来的系统就放在默认vpc的子网里,但是随着业务的发展,不同的业务都需要vpc,生产和测试环境也需要vpc,那原有的默认vpc肯定不能满足客户的需求了,所以客户也提出来了云上网络的设计到底应该怎么做,网络安全控制怎么做,网络互联,vpc之间,云上与云下的互联应该怎么实现,今天我们会把这几个诉求聊清楚
现在新芽智能的架构就演变成这样了,静态的资源CDN去找obs要,动态访问会到vpc,所以我们要设计外访的子网,前端子网,应用子网,数据子网
那网络还需要设计吗?
答案是肯定的,刚刚说过了,随着业务的发展一个默认vpc是不能够满足我们的需求的。那为啥还要有默认的vpc,这个默认vpc是给一些不同vpc的人也能够快速使用像ecs这样的资源,但我们生产上肯定是要规划好vpc的
既然谈到vpc,我们就说说vpc是什么以及他的特性
Vpc是虚拟专有网络,
虚拟是指他是软件定义的网络,他不像传统网络那样真的有路由器交换机,都是虚拟的
专有指的是他是逻辑上隔离的,内部互联的专有网络,vpc与vpc之间是互相隔离的,默认是不能互相访问的,所以每个vpc的设置都是自由的,不会影响到其他的vpc,vpc内部的子网之间是互联的
他虽然是虚拟的,但是他拥有传统网络该有的功能,ip,路由,子网,防火墙,他都有
当然,如果我们需要访问公网,也可以通过弹性ip去实现
刚刚一直提到默认vpc,我们看下默认vpc的特点
他是以vpc-default的方式命名
有默认的子网
默认的路由
可以变更配置,比如增加子网,修改路由
也可以删除
再次强调,我们在实际业务中应该避免使用默认的vpc,如果我们把所有的资源都放在默认vpc中,那随着资源变多之后管理会非常麻烦,vpc内部是互通的,当我们希望不同的业务之间要隔离,那一个默认vpc是不能满足我们的业务需求的
既然要自己创建vpc,那创建多少个vpc呢?
可能现在我只有一个业务那对我来说创建一个vpc就够了,管理起来还比较方便,那如果我有两个业务或者多个业务,我希望他们网络隔离那就需要创建多个vpc了,具体是按照什么样的原则,我们接着看
首先先看下一个vpc的场景
单一的应用,就是一个网站,也不涉及多团队多项目的情况,那应用放在一个vpc里面就可以了
一个vpc内的时延是很低的,即便是跨AZ的时延也只有1ms的延时,所以像高性能计算这样的业务,对于时延很敏感,时延一高,他的cpu使用率就会降下来,跑不满,他这种适合一个vpc内
一个vpc在单一业务,团队规模不大的适合管理起来也比较方便
但是面临多业务的场景中单一的vpc肯定是不能满足需求了
当我们希望多个业务在网络上隔离,不让他们互通那可以使用多个vpc进行网络隔离
但是vpc只做网络上的隔离,不做资源的隔离,用户在ECS控制台上依旧可以看到所有的ECS,可以通过多项目的方式,以项目划分资源,进行资源管理和成本管理
如果规模很庞大的公司多账号的方式就把资源彻底划分开
我们分别看看刚刚说的这三个场景
多个vpc的场景
生产环境A 和测试环境B 我们肯定不希望这两个vpc互通,万一把测试环境数据写到生产环境中去怎么办,所以我们可以使用多个vpc来做网络上的隔离,让这个两个vpc不通,vpc的使用原则就是没有互通的必要就让他们不通,如果有共同访问的部分,就把共同访问的部分抽离出来,单独放在一个vpc中,分别与他互通。虽然我用了两个vpc,但是我在控制在依然可以看到生产和测试环境的ecs和数据库,再比如搞生产和高测试的是两个团队,我希望他们都智能看到自己的资源,那可以使用多项目的方式进行资源上的隔离
典型的就是托管服务提供商,为多个客户进行服务的时候,肯定是每个客户下只有自己得资源,不能操作别人的资源,可以按照多项目的方式进行资源划分,每个项目下有一个或者多个VPC,这样方便我们进行资源管理和成本的核算
但是如果是一个大型的组织,内部会有超多的项目,那用多项目的方式管理也十分复杂,就可以使用多账号的方式将资源彻底划分,权限都是单独的,成本计算也很方便
那解决完几个vpc的问题了,下面是怎么部署vpc
Vpc是在地域下的,所以我们部署vpc的原则和地域选择的原则一致
地域的原则是合规的要求,中国的数据不会让你部署到美国的region下,用户的体验时延来说就近原则,不同的region资源价格不同,乌兰察布的ecs价格会比上海的便宜,一些新的功能会在先在一些region开放
像ecs是在vpc下,像对象存储obs是在region下的
要注意自己账号下的vpc配额,像培训的时候vpc配额不够用,实验做不下去需要提前根据实际情况申请配额
确定好了region 我们创建vpc的时候最重要的就是确定vpc的网段
我们需要指定一个ip网段,这是vpc的主网段不可以删除的
Ip的网段目前是支持这三种网段
192.168.0.0/24代表是24个网络位,8位的主机位,意味着有2的8次方256个ip地址可以使用,掩码是反过来255.255.255.0 前面24位是不能动的,只有后面8位是可以改动的。有一个问题就是掩码多大合适是/16 /24 /8
如果网段设置小了,就会造成ip地址不够用,后面业务发展了没ip用了,网段设置过大就会造成网段不够用,还有就是当云上和云下数据中心互联的时候网段冲突,那一般说来/16是可以满足ip地址的需求,又不会导致网段过大造成不够用或者冲突的情况,可以根据生产测试环境,生产用172 测试用192的,不同的产品线可以用1.0网段 产品线2用2.0网段这样去合理的划分,后期管理起来也比较方便
确定完vpc的网段,下面我们看内部的子网是如何划分的
像ecs这样的资源是落在子网里的,子网的划分就像是把vpc切蛋糕一样,这里/22的网段,一个有2的10次方1024个ip地址,那这里4个子网就平分掉这么多ip,注意一点子网里有5个ip是不可用的,0.0是网络的标识符,私有IP范围的开始是不做分配的
0.1是网关地址,0.253 是系统接口的地址用对对外同信,0.254是DHCP服务地址,0.255是广播地址
在我们划分子网的时候要充分考虑到业务发展的空间留好足够的ip不然同一个模块分散到不同子网里,管理起来也比较困难
子网与子网之间网段是不能重叠的,子网是落在vpc内的,不可能超出vpc的网段,子网可以跨AZ的
其实刚刚有提到,不同模块分散到不同子网里管理起来比较困难,子网设计的原则很重要的就是子网和业务逻辑一一对应
相同模块的服务器都落在一个子网里,前端服务器都落在前端的子网里,应用子网里都是应用服务器,在管理的时候就很方便也很清晰
子网说完了,再来说说路由表
每一个子网都必须关联一个路由表,一个路由表可以被多个子网关联,所以是一对多的关系,当我们创建子网的时候会默认帮我们关联一个默认路由表,所以这个默认路由表在缺省的情况下是被多个子网公用的,当我们需要自定义路由的时候尽量不要去修改这个默认路由表,因为他是被其他子网共用的,所以会影响到其他子网的路由,可以创建自定义路由表,这里还有一个默认路由规则,每张路由表都会有一条默认路由规则,这条规则意味着在vpc内部是路由可达的,这条规则不可删除。
我们刚刚聊了子网,路由表,最终还是ip还是要落到vpc内的网络设备上,比如ecs的ip是怎么来的
弹性网卡是给云服务器提供ip的,是网络的出入口
每台ecs都会有一个主网卡,这个主网卡是不能解绑的,但是可以扩展弹性网卡,我们说vpc是软件定义的网络,这个弹性网卡也是虚拟的,所以多个网卡并不会提升设备的网络性能,ECS的网络性能和实例的类型相关,ecs的安全组保护的是弹性网卡,不是ECS本身
那弹性网卡其实把ip和ECS进行解耦了,解耦之后当我们的ECS遭受网络攻击之后可以扩展弹性网卡,将主网卡ip隔离,用新的ip继续进行通信,进行故障转移,所以当ip和ecs解耦的时候业务代码固定ip也就没有必要了
其实虚拟IP也可以给ECS提供IP,他可以跟ECS进行绑定,一样可以进行故障转移,当这台ECS发生故障的时候可以解绑,跟这台备用的ECS进行绑定,这样ip不变后端的服务器变了继续提供服务,RDS的主备切换就是这样做的。弹性网卡其实也可以实现这样的故障转移,那如果我们只关注ip那可以用虚拟ip,如果你还在意安全组那就用弹性网卡。
那当我们的设备需要跟互联网通信的时候,那就用到弹性公网IP了
弹性公网ip就是公网暴露使用的。
弹性公网ip可以跟ecs绑定,让他访问公网,也可以跟NAT网关,SLB负载均衡绑定
有丰富的计费方式
按量的话EIP的配置费是0.02元一小时,0。8元一个G
可以用共享流量包给EIP使用节约流量费用1tb一年在750左右
弹性IP很方便,给ECS绑定就能访问公网了,如果10台ecs都要访问公网那么ecs都要挂EIP吗首先成本很高对吧10个弹性公网ip,其次,10个弹性公网ip那在公网的暴露面就扩大越容易遭到攻击
当我们有多台ECS要访问公网的时候我们会推荐SNAT
比如有多台服务器都要去从互联网上下载一些包用SNAT统一用一个公网ip去访问,只要将弹性公网ip和SNAT绑定即可,这样一来节省了成本,二来缩小了公网的暴露面积,真正的服务器ip不会在公网上暴露,安全性提高了,值得说的是SNAT本身是高可用的,一个挂了可以立马启用另一个,当然如果想要更高级别的高可用,可以在两个可用区都部署一个。那这是服务器访问公网的情况,如果公网访问服务器呢?NAT网关提供DNAT的功能
公网访问DNAT,DNAT通过端口映射的方式去对应后端的服务器,他也是需要跟弹性公网ip绑定实现公网访问服务器的功能,但是公网访问服务器,现在会有更合适的方式,负载均衡器,他也可以实现公网访问多台服务器,他比DNAT的功能更全面,他有健康检查机制,负载均衡调度,会话保持。刚刚也说过了如果想要更高的可用性可以双AZ部署。
刚刚提到安全,VPC的安全控制主要是分为两块
一个是安全组,作用于实例的弹性网卡上,允许或者拒绝哪些网段可以访问
一个是子网ACL,他是作用于子网之间的访问,子网内部他不管,强调一下他们的作用范围不一致。
我们刚刚了解了VPC的特性,子网,路由,以及网络访问的事儿,接下来第二个部分,接下来我们一起看看不同的网络打通互联的事儿
很多时候我们需要云上和云下数据中心之间打通
有VPN,专线
我们先来看看vpn,vpn是基于互联网的虚拟通道
用户首先要购买一个虚拟网关,这个VGW会把配置信息,协议之类的导出,给数据中心的出口设备进行配置,然后数据中心访问VGW两边握手成功,这个连接就成功了,这是点到点的,如果是点到多点的情况需要两次连接信息的配置,要注意的是这两个数据中心的网段是不能重叠的,不然会连接失败。Vpn本质是走的公网,如果你的业务合规性要求允许你走公网,那你可以使用vpn的方式,如果你的合规性要求不允许你走公网,那可以用专线
专线就是从运营商那拉一根光纤接入到华为云的骨干网网,光纤一般会比公网稳定,除非哪个地方施工把光纤挖断了,然后就是他是满足合规需求的
他的工作模型这里也是需要一个VGW的,客户数据中心拉一根光纤接到华为云指定的接入点,然后华为云的骨干网连接到VGW,实现互通。一般接入点的带宽在1G以上,有时候我自己用不到这么大的带宽,怎么办,现在可以租用别人的带宽,共享专线,从数据中心拉一根光纤,接到她的接入点,他帮我们连到华为云的骨干网上。
刚刚说的是混合云的场景,那如果vpc之间需要联通呢?
最简单的是弹性公网ip走公网,当出于合规要求不允许走公网的时候我们会有一个比较简单的方法将两个vpc打通
VPC peering
Vpc对等体连接只要是在同一个region下,就可以将两个vpc进行打通,他是可以跨账号,跨项目的,只要对端同意,要注意是这两个vpc的cidr是不能重叠的
具体看下vpc peering的过程
创建对等体的连接
添加对等体的路由
对等体连接的时候需要注意的一些事项
两端的cidr不能重叠,会导致路由配置失效
两端打通之后可以通过安全组限制ECS的访问出入流量,也可以通过子网acl控制子网间的访问,在ECS本地防火墙做好规则
第二点注意的是VPC内部的路由表优先级是高于VPC peering table的
所以当两个VPC内部的网段重叠,会优先访问本vpc内的网段
第三点注意的是当两个vpc的网段重叠,可以针对子网建立VPCpeering 这两个子网的网段没有重叠也可以打通
下面是一个星型的对等体连接,大家都和A建立对等体连接,那B和C可以互通吗?答案是不行的,VPC peering连接是不会传递的,当这边的网关发现是不是去往10.0网段的包会直接丢弃掉,但是真的没办法可以让他们互通了嘛,如果有公网的情况可以直接eip访问,或者是基于公网的vpn,或者是在A种开一个代理,B去访问代理,通过代理去访问C这么做也行
刚刚说了vpcpeering的路由是不会传递的,那如果我有多个vpc需要互联的话,显然用vpc peering配置起来非常复杂,所以华为云提供了云连接这样的服务将多个region下不同vpc进行互联
他本质上是一个大的BGP网络,只要连接到这个网络上的路由都会被传递学习。他实现互通的功能很强大,但是要注意的原则就是先要问问真的必须要全部互通嘛,最小暴露原则,把仅仅需要互通的vpc连接到云连接上。
在云连接上可以进行跨region 跨域的连接,前提是不能网段冲突,以及根据国家合规性要求,跨境连接是需要申请license的。
当然如果有数据中心的情况下,我们的数据中心可能是通过vpn或者是专线的形式连接到VPC加入到云连接网络中实现互联互通
说完vpc peering和云连接,下面我们看如何通过内网直接访问华为云服务,比如像OBS这样的服务,比如我的数据中心出于合规需求通过专线连接到云上的vpc,在调用obs这样类型的服务的时候也是不允许走公网的,华为云提供了终端节点服务
在vpc内部有一个终端节点,用户访问终端节点,通过终端节点调用终端节点服务,这里的终端节点服务可以是像obs这样的托管类服务,当然终端节点可以是用户自己的服务注册成终端节点服务
像图中开发团队可以把自己的saas软件配置好注册成终端节点服务给测试团队调用,对于一些isv厂商可以直接通过内网的方式提供用户自己的saas产品,对于用户来说不用担心网段冲突的事情,用户是访问的终端节点,不是直接访问得终端节点服务
对于vpc peering 和终端节点来说都是可以通过内网进行调用服务,
他们有一些差别这里需要提一下,第一个是网段冲突,vpcpeering是不能网段重叠的,第二点是vpc peering是需要进行路由配置的,而终端节点配置好了直接就能调用终端节点服务,不用配置路由,所以两端的网段即使重叠也不会影响。
到这里我们整个VPC的全景图就出来了
对于VPC来说要划分子网,弹性网卡和虚拟ip给网络设备提供ip,安全组和子网ACL负责访问控制,弹性公网ip提供公网访问的入口,SNAT可以让服务器访问外部,DNAT可以从外部访问服务器,负载均衡也是一样,对于混合云场景,我们可以通过VPN和专线,VPC之间的互联可以通过VPC peering 云连接 我们还可以通过终端节点从内网调用服务。
接下来我们从五大支柱的角度去审视云上网络架构
对于数据传递的安全,其实VPC是不负责的,是要靠内部资源自己去实现的,所以在传递数据的时候可以通过TSL,SSL,HTTPS加密传输,可以用IPSec VPN的方式加密通道
VPC的网络安全是多个层次的
对于VPC自身来说他是逻辑上与外界隔离的虚拟网络,可以通过vpc peering 配置路由信息实现跨VPC间的访问,内部可以通过子网ACL控制子网之间的访问,安全组控制ECS的访问其实是作用与ECS的弹性网卡上,ECS在操作系统的防火墙也可以进行访问规则的配置
EIP是统一公网的出入口
对于VPC的资源配置改动可以用CTS收集,对于VPC内部情况的日志用日志服务收集
第二块成本的考虑
VPC是软件定义的网络大部分的功能都是免费
对于NAT网关,VGW,以及终端节点是收费的
合理利用流量包来节省公网的流量,以及可以用EIP和SNAT绑定或者ELB绑定来节省EIP的费用
在流量和算力之间是需要权衡的,到底是算的多一点传输的少一点,还是算的少一点传输的多一点,
专线的起始带宽就是1GB,可以租用别人的专线共享带宽节省费用,
还有就是可以通过多项目或者多账号的方式进行成本管理
可靠性来看
对于VPC本身来说他不会成为单点故障
像NAT网关,如果想要更高的可靠性可以多AZ部署
对于VPN网关来说可能会存在单点故障,可以用两个VGW互作冗余的设计,一个坏了另一个可以工作
专线基本上是稳定的,有时候光纤也会损坏,比如施工会挖断,在合规允许公网的情况下,可以用VPN和专线双链路保证网络的可靠性
但是合规不允许的情况下就需要两根光纤,可以拉不同运营商的提高可靠性
对于性能来说
VPC本身不会成为性能的瓶颈
在讨论网络性能的时候要明白带宽和时延是两个不同的角度
带宽是每秒传递的数据量,时延是可以分为发送时延,传输延时,队列时延,发送时延是和带宽强相关的,传输时延则是和传输的介质有关,光纤肯定会比较快,队列时延则是和网络拥塞以及路由器的处理效率有关,所以在谈论这两者的时候不能混为一谈
在可维护性的角度来说
在设计VPC之初要合理的规划网段
网段过大会导致网段不够用,以及在互联的时候网段冲突,过小又会导致ip不足
根据自己业务的情况,团队规模合理的规划VPC的个数,而对于中大型的团队可以使用多项目的方式进行网络隔离资源隔离,大型的组织可以用多账号的方式将资源划分的更加彻底,便于管理
在VPC需要互通的情况下,记得最小暴露原则,能不通的就不要让他们通
其次VPC软件定义的网络,我们多利用自动化脚本来调度资源,比如需要远程登录ECS的时候,可以在脚本的第一行先打开22端口,最后在关闭22端口,简单的两行代码可以避免因为人工疏忽而导致的安全问题
最后要经常关注CTS的日志情况了解VPC的资源改动,日志服务查看vpc内部的事件,做好事前预警和事后的溯源。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值