《云网络》系列,共包含以下文章:
- 云网络是未来的网络基础设施
- 云网络产品体系概述
- 云数据中心网络(一):vpc
- 云数据中心网络(二):弹性公网 ip
- 云数据中心网络(三):nat 网关
- 云数据中心网络(四):ipv6 网关
- 云数据中心网络(五):对等连接
- 云数据中心网络(六):私网连接
- 云数据中心网络(七):负载均衡
云数据中心网络(一):vpc
1.什么是 vpc
vpc 是用户在云上可自己掌控的 私有网络环境,例如 选择 ip 地址范围、配置路由表和网关、构建混合云 等。用户还可以在自己定义的 vpc 中使用如 云服务器、云数据库 和 负载均衡 等产品。
vpc 初期主要解决两个核心问题:一是 多租户网络隔离问题,二是随之带来的 用户从 vpc 内访问众多云服务的问题。随着越来越多的企业用户上云,企业级网络的需求越来越多,vpc 要解决的问题也包括 帮助企业更平滑地上云,让企业在线下 idc(internet data center,互联网数据中心)里的网络架构、运维管理体系能平滑地迁移到云上。
vpc 的核心是 为每个租户都提供一个类似于线下 idc 那样的完全隔离的、可自定义的网络环境。在 vpc 中,有和线下 idc 对应的 虚拟路由器、虚拟交换机 和 虚拟防火墙。这些虚拟路由器、虚拟交换机、虚拟防火墙对于大多数场景是免费的,用户还可以自定义各种配置,如下图所示。
2.vpc 的组成
云网络颠覆了传统数据中心的组网方式。vpc 让用户感知不到线下数据中心各种复杂的物理网络设备和物理连线。用户在 vpc 中看到的是 虚拟交换机 和 虚拟路由器。
2.1 虚拟交换机
在一个 vpc 内部一般有多个不同的子网。一个虚拟交换机(vswitch)对应一个子网。每个子网都可以对应不同的功能、业务,或业务部门,如下图所示。
网络是为上层应用和业务服务的,对应于不同的应用和业务架构有不同的子网。对于中大型企业,每个业务部门都有不同的业务和应用,子网划分会变得更加复杂,原则如下。
- 不同功能区划分不同子网。最直观的例子就是把网络划分为公有子网和私有子网。公有子网对应线下 idc 的 dmz 区,和互联网直接交互。私有子网对应线下 idc 的应用服务器区,不直接和互联网交互,而是和 dmz 的前置机交互。
- 不同应用划分不同子网。如果企业内部有多个不同的部门,或者有多个相对独立的不同应用,那么可以把不同部门或不同应用划分到对应的子网,对不同子网内的资源进行相对独立的管理,还可以在子网边界上通过网络 acl 设置相应的安全策略和访问控制。
2.2 虚拟路由器
虚拟路由器(vrouter)是 vpc 的枢纽。作为 vpc 中重要的功能组件,它可以连接 vpc 内的各个交换机,同时是连接 vpc 和其他网络的网关设备。每个 vpc 创建成功后,系统都会自动创建一个路由器,每个路由器都关联一张路由表。在云网络中,大部分路由都是默认添加好了的,如果用户没有特殊需求,不需要额外配置,但用户在自定义网关和代理、混合云、多 vpc 互联等场景下需要在虚拟路由器上自定义路由的配置。
- 主路由表:每个 vpc 都只有一个主路由表。主路由表里有 vpc 网段的本地路由,还有云服务的系统路由。用户在主路由表里可以配置自定义路由,自定义路由的下一跳为 ecs 实例、弹性网卡、vpc peering、虚拟边界路由器等。
- 子网路由表:主路由表是 vpc 粒度 的,子网路由是 子网 / 交换机粒度 的。如果交换机关联了子网路由,那么会优先查子网路由表里的路由。通过子网路由,用户的网络将具备一些高级的功能,如在 vpc 中部署集中式防火墙,或者后端应用子网只关联私网路由表,前端 dmz 子网关联公网路由表。
3.vpc 网络规划
对一个网络来讲,网络规划是最基础的,也是第一步。对于云上网络规划,我们要考虑的常见问题包括:
- 需要使用多少个 vpc;
- 需要使用多少个交换机;
- 选择什么地址段;
- 每个地址段规划多大;
- 未来业务会如何发展;
- 云上 vpc 和云下 idc 构建混合云,怎么规划地址空间;
- 如何避免地址冲突。
在创建 vpc 和交换机前,需要结合业务的具体情况来规划 vpc 和交换机的数量及网段等。
3.1 vpc 数量规划
如果用户没有多地域部署系统的要求,各系统之间也不需要通过 vpc 隔离,那么可以考虑使用一个 vpc。反之,如果用户有在多地域部署系统的需求,或者在一个地域的不同业务系统间需要隔离,则需要使用多个 vpc。例如,生产环境和测试环境的隔离,如下图所示。
另外,集团企业不同于子公司的业务系统往往也要求进行业务隔离,此时,可以考虑为每个子公司配置一个 vpc,但对有通信需求的子公司 vpc,可以加入云企业网,通过路由等策略进行进一步的通信控制。
3.2 交换机数量规划
即使只使用一个 vpc,也尽量使用至少两个交换机,并且将两个交换机布置在不同可用区,这样可以实现跨可用区容灾。
同一地域不同可用区之间的网络通信时延很小,但也需要经过业务系统的适配和验证。系统调用复杂、应用层处理时间长、跨可用区多次调用等原因,可能产生期望之外的网络时延,需要进行系统优化和适配,在高可用和低时延之间找到平衡。
使用多少个交换机还和系统规模、系统规划有关。如果前端系统可以被公网访问并且有主动访问公网的需求,考虑到容灾的需要,可以将不同的前端系统部署在不同的交换机下,将后端系统部署在另外的交换机下。
3.3 地址空间规划
对于 vpc 网段的选择,用户可以使用 192.168.0.0/16
、172.16.0.0/12
、10.0.0.0/8
这三个私网网段及其子网作为 vpc 的私网地址范围。在规划 vpc 网段时,请注意:
- 如果云上只有一个 vpc 并且不需要和云下数据中心互通,那么可以选择上述私网网段中的任何一个网段或其子网。
- 如果有多个 vpc,或者有 vpc 和云下数据中心构建混合云的需求,那么建议使用上面这些标准网段的子网作为 vpc 的网段,掩码建议不超过 16 位。
对于交换机网段的选择,首先,交换机的网段必须是其所属 vpc 网段的子集。例如,vpc 的网段是 192.168.0.0/16
,那么该 vpc 下的交换机的网段可以是 192.168.0.0/17
,一直到 192.168.0.0/29
。其次,在规划交换机网段时,请注意:
- 交换机的网段大小在 16 16 16 位网络掩码与 29 29 29 位网络掩码之间,可提供 8 − 65536 8 - 65536 8−65536 个地址。 16 16 16 位掩码能支持 65532 65532 65532 个 ecs 实例,对于绝大多数用户来说都是够用的。而对于小于 29 29 29 位掩码的,容纳的实例数量太少,没有意义。
- 每个交换机的第一个和最后三个 ip 地址为系统保留地址。以
192.168.1.0/24
为例,192.168.1.0
、192.168.1.253
、192.168.1.254
和192.168.1.255
是系统保留地址。
对于多 vpc 互通或者构建混合云的场景,确保 vpc 的网段和要互通的网络的网段都不冲突,建议遵循以下网段规划原则:
- 尽可能做到不同 vpc 的网段不同,不同 vpc 可以使用标准网段的子网来增加 vpc 可用的网段数。
- 如果不能做到不同 vpc 的网段不同,则尽量保证不同 vpc 的交换机网段不同。
- 如果也不能做到交换机网段不同,则保证要通信的交换机网段不同。
有的云服务商提供了私网 nat 产品来解决地址冲突又需要通信的问题,我们建议在规划时就避免这个问题。
地址空间规划中一个需要重点考虑的问题是 vpc 或者交换机能容纳的实例数量,也就是业务规模。对于大部分用户来说,这可能不是问题,但对于部分企业级大用户,尤其是采用云原生技术架构的用户来说,单 vpc 可能需要容纳几万,甚至更多的实例。
3.4 不同规模企业地址空间规划实践
拥有 50 台左右服务器的中小企业,没有多地域部署和混合云需求,在大部分情况下,一个 vpc 就够用了,选择系统默认的 10.0.0.0/8
、172.16.0.0/12
、192.168.0.0/16
三个网络地址段之一即可。它们都是 rfc1918 定义的私网地址段,网络地址掩码不同,每个网段容纳的主机数量也不同。但不管哪个地址段,对于中小企业来说都是够用的。所以,根据历史习惯,选择对应的网段即可。
对于交换机,默认建议至少使用两台交换机,并且这两台交换机分布在不同可用区。当然,分布在不同可用区,时延可能会稍微增加,用户可以根据自己的业务系统对时延的要求做出选择。
中大型企业,出于高可用和提升用户体验的目的,往往在不同地域部署业务系统,这些业务系统有内网通信需求。为了做到跨可用区容灾,每个地域还需要把业务系统部署在多个可用区。此外,还涉及和线下 idc 互通、生产和测试系统严格隔离等需求。此时,vpc 的地址空间规划就会稍微复杂一些。整体原则是保持可扩展性,避免地址冲突。
多地域部署业务系统,必然需要使用多个 vpc,而默认的 vpc 地址段有三个,为了避免地址冲突,除上述提到的用不同网段的地址空间外,还可以把一个类型的网段的网络掩码变长一些。比如 10.0.0.0/8
的地址空间可以被拆成 10.1.0.0/16
、10.2.0.0/16
…… 10.255.0.0/16
,共 256 个子地址空间。我们可以把 vpc 的地址空间规划成 /16
掩码的,这样每个 vpc 的地址空间都是独立和互不冲突的。同时,需要保证线下 idc 的地址空间不发生冲突。对于生产环境和测试环境的严格隔离,只需要把生产系统和测试系统分别部署到不同 vpc 即可,但考虑到未来可能的通信需求,也建议在规划时考虑地址冲突问题。因为需要跨可用区容灾,所以在每个 vpc 内至少要使用两台交换机。
为了满足多地域和混合云内网通信需求,必然要使用 云企业网。和 vpc 是地域级别的网络不同,云企业网是一个 全球网络,绝大多数用户使用一个云企业网即可。云企业网提供了强大的路由控制能力以实现云企业网内不同的实例之间精细的访问控制。
4.vpc 网络高可靠设计
网络设计中十分关键的一环就是高可靠设计。网络可靠性涉及网络部署、网络链路等层面。从 vpc 角度看,主要是业务部署的可靠性。多可用区、多地域 的网络部署可以让网络的可靠性级别呈数量级的提升。业务部署主要从 单地域单可用区、单地域多可用区、多地域多可用区 这三层次来考虑可靠性。
4.1 单地域单可用区部署
单地域单可用区部署指只在某一个地域的某一个可用区部署业务系统,这样的业务部署可以获得最低的网络时延,但如果业务部署所在的可用区出现故障(概率低),或者某个可用区的业务系统本身出现故障,那么整个业务系统将不可用。从可靠性角度来说,这是不推荐的业务部署方式。
4.2 单地域多可用区部署
单地域多可用区部署指在某一个地域的多个可用区部署业务系统。即使用一个 vpc,且 vpc 内至少使用两台分布在不同可用区的交换机,如下图所示。在业务系统支持的情况下,单地域多可用区部署业务系统可以避免单个可用区故障导致的系统不可用。单地域部署不能避免的是整个地域不可用导致的系统不可用,当然发生这种情况的概率极低。将子网分布在不同可用区,在不同可用区同时部署业务,可以支持 同城双活 和 同城多可用区 高可靠解决方案的构建,云网络是天然支持这种部署方式的。
需要注意的是,阿里云的子网只能归属到一个可用区。构建同城双活、同城多可用区高可靠方案,需创建多个对应的子网。
4.3 多地域多可用区部署
多地域多可用区部署指在多个地域,且在每个地域的多个可用区部署业务系统。这是最可靠的业务部署方式。对于一些大企业用户,单地域多可用区的高可靠方案,仍然无法满足其高可靠需求,此时需要使用多地域多可用区的高可靠方案,如银行的 两地三中心 方案。这种多地域业务部署的网络互联方案可以通过云网络产品构建。云企业网可以把多个地域的不同 vpc 连接起来,让用户方便地部署多地域多可用区的网络架构,如下图所示。
5.vpc 网络安全设计
网络安全是关键一环,涉及面非常广,包括租户安全隔离、通信安全、安全防护等。这里仅从 vpc 角度出发介绍相关的网络安全设计,包括网络层面的访问控制、网络流量的加解密,以及为了实现更高级别的应用层安全所需要的流量镜像等。
5.1 网络 acl
网络 acl(network access control list
)是 vpc 中的网络访问控制功能。用户可以自定义设置网络 acl 规则,并将网络 acl 与交换机绑定,实现对交换机中云服务器 ecs 实例的流量访问控制。
子网间网络访问控制策略:网络安全设计中很重要的一点是划分网络安全边界。在把不同业务或不同部门划分到 vpc 的不同子网后,可以通过网络 acl,在不同的子网边界部署安全访问控制策略,以实现网络的安全访问控制。
vpc 边界的网络访问控制策略:vpc 存在和外部网络互联的边界,将网络 acl 应用到对应的子网 / 交换机可以实现对互联网流量的网络访问控制,如下图所示。
比较典型的应用场景包括:
- 黑白名单:明确拒绝或接受一些公网 ip 地址的流量。
- 主动安全防护:仅放行一些特定协议和端口的流量到后端。
5.2 安全组
网络 acl 是对应 子网粒度 的访问控制策略,而对应 主机粒度 的访问控制策略,是 安全组。
安全组是一种虚拟防火墙,具备状态检测和数据包过滤的功能,用于在云端划分安全域。通过配置安全组规则,可以控制安全组内 ecs 实例的入流量和出流量。
安全组是有状态的。例如,在会话期内,如果连接的数据包在入方向是被允许的,则在出方向也是被允许的。
5.3 流量加密
vpn 产品访问云上的数据通过 ipsec 和 ssl vpn 方式进行加密,负载均衡产品访问云上的数据通过 https 方式进行加密。一些对安全性要求较高的行业,对于 vpc 内私网数据也有加密的需求。
5.4 流量镜像
在一些场景下,用户需要对流量做深层次的分析,例如详细的流量内容审计或者深入的安全趋势分析就用到了流量镜像。
流量镜像将用户想要分析的流量镜像发送到一个目的地址,此时发送的流量包含报文头和流量负载内容,如下图所示。
6.vpc 的运维管理
企业级云网络对运维和管理的要求较高,包括分权分域维护、流日志管理等。
6.1 共享 vpc
中大型企业用户的 it 架构一般比较复杂,对网络的运维能力要求也比较高,很多大企业的网络运维团队和业务运维团队是分开的,对资源的分权分域要求也比较高,因此,阿里云推出了共享 vpc(shared vpc)功能,如下图所示。
共享 vpc 的核心是支持网络架构由网络管理员统一构建、设计和管理,可以做到业务运维团队感知不到底层的网络架构,专注于服务器、数据库等应用资源的管理和维护。网络管理员在部署完成整个云网络架构后,可以通过共享 vpc 把不同的子网 / 交换机共享(分配)给不同的业务团队使用,业务团队只需要在子网中部署应用系统,无须关注 vpc 间的互联方案、防火墙、安全、公网等较复杂的网络配置。
6.2 流日志
vpc 提供流日志(flowlog
)功能, 可以记录 vpc 中弹性网卡(elastic network interface
,eni
)传入和传出的流量信息,帮助用户检查访问控制规则、监控网络流量和排查网络故障。
用户可以捕获指定弹性网卡、指定 vpc 或交换机的流量。如果选择为 vpc 或交换机创建流日志,则会捕获 vpc 和交换机中所有弹性网卡的流量,包括在开启流日志功能后新建的弹性网卡。
流日志功能的流量信息会以流日志记录的方式写入日志服务中。每条流日志记录会捕获特定捕获窗口中的特定五元组网络流。捕获窗口大约为 10 分钟,流日志服务在这段时间内会先聚合数据,再发布流日志记录。
发表评论