AWS多可用区的VPC网络环境

2023年10月12日

本文介绍了AWS Region、Available zone、VPC及其Subnet、Internet Gateway和Route Table等概念,创建了一个多可用区的VPC,并介绍多可用区如何保证服务高可用性。

Region

AWS Region即AWS地区,是AWS提供的基础设施服务的物理部署地点。每个Region都是独立于其他Region,这样能够最大限度保证容错率和可用性。

Available zone

AWS Available zone即AWS可用区,每个Region都拥有多个Available zone,每个Available zone都是独立的物理数据中心,拥有独立的电力、网络、安全等设施。 全球现拥有25个亚马逊云科技地理区域和81个可用区,如下图所示:

VPC

AWS VPC即AWS虚拟私有网络,可以理解为在AWS云中创建了一块自己的专有网路环境。创建VPC时,需要指定VPC的CIDR。CIDR是一个IP地址段,CIDR的格式为:x.x.x.x/x,其中x.x.x.x为IP地址,/x为子网掩码,表示该IP地址段中有多少个IP地址。可以使用cidr.xyz网站来计算CIDR的IP地址段和可用IP数量。 在Asia Pacific (Singapore) ap-southeast-1区域中创建VPC,输入10.0.0.0/16表示IP地址段10.0.0.010.0.255.255,共有65,536个IP地址。如下图所示:

Subnet

子网是 VPC 内的 IP 地址范围。创建子网时,必须提供子网名称、CIDR和可用区(如果不指定,AWS会自动指定)。在添加子网后,您可以在 VPC 中部署 AWS 资源。子网可以公开或私有。公开子网内的资源可以有公共 IPv4 地址,可访问 Internet。私有子网内资源无法访问 Internet。 根据我们上面创建的VPC,我们设计了3个私有子网和3个公开子网,如下表所示:

子网名称 CIDR 可用IP范围 可用IP数量 BASE IP BROADCAST IP
subnet-public-a 10.0.0.0/20 10.0.0.1 - 10.0.15.254 4094 10.0.0.0 10.0.15.255
subnet-public-b 10.0.16.0/20 10.0.16.1 - 10.0.31.254 4094 10.0.16.0 10.0.31.255
subnet-public-c 10.0.32.0/20 10.0.32.1 - 10.0.47.254 4094 10.0.32.0 10.0.47.255
subnet-private-a 10.0.128.0/20 10.0.128.1 - 10.0.143.254 4094 10.0.128.0 10.0.143.255
subnet-private-b 10.0.144.0/20 10.0.144.1 - 10.0.159.254 4094 10.0.144.0 10.0.159.255
subnet-private-c 10.0.160.0/20 10.0.160.1 - 10.0.175.254 4094 10.0.160.0 10.0.175.255

在AWS console中创建3个公开子网和3个私有子网,下图是创建一个私有子网的示例:

Internet Gateway

Internet Gateway 是 VPC 组件,可使 VPC 实例与 Internet 通信。如下图创建一个Internet Gateway。

创建Internet Gateway后,需要将Internet Gateway与VPC进行关联,如下图所示:

Route Table

路由表是一组规则,用于确定网络流量的目的地。目前我们创建的公开子网,还不拥有访问Internet的能力,因为还没有配置路由规则。创建路由表并指定VPC

然后再将路由表和子网进行关联,如下图所示:

对于public路由表,需要添加一条路由规则,将目的地为0.0.0.0/0的流量指向Internet Gateway,如下图所示:

AWS Console快速创建VPC

AWS console中提供了快速的创建VPC网络环境的功能,如下图所示:

当配置好需要创建的资源后,点击Create VPC即可创建所有资源。

多可用区的VPC网络环境

经过上面的操作,我们已经创建了基于三个可用区的VPC网络环境。多可用区的VPC网络环境,是AWS服务高可用的基础。

当创建了多可用区的VPC网络环境后,我们可以在多个可用区中创建多个相同的资源。当某个可用区出现故障时,其他可用区的资源可以继续提供服务,从而保证了服务的高可用性。

需要注意的是如何配置应用在多个可用区之间的切换。以EC2实例为例,我们在多个可用区中创建相同的EC2实例,通过Application Load Balancer(ALB)分发流量。当某个可用区出现故障时,ALB会将流量切换到其他可用区中的EC2实例上,从而保证了服务的高可用性。