亚马逊AWS官方博客
通过 AWS Lambda 和 AutoScaling 实现高可用的企业全球一张网(一)
本文为通过 AWS Lambda 和 AutoScaling 实现高可用的企业全球一张网系列文章:
- 通过 AWS Lambda 和 AutoScaling 实现高可用的企业全球一张网(一)
- 通过 AWS Lambda 和 AutoScaling 实现高可用的企业全球一张网(二)
- 通过 AWS Lambda 和 AutoScaling 实现高可用的企业全球一张网(三)
本文为系列文章的第一篇。
1. 概述
随着企业全球拓展或企业并购,企业需要连通云上云下多个区域实现全球组网,同时由于早期缺乏规划或并购可能出现IP地址冲突,本文针对这种场景提供了一种组网方案,利用动态路由、VPN及NAT解决全网互联互通需求。本文分三部分,第一部分介绍了云上多个区域VPC环境的搭建和创建TGW作为汇聚节点;第二部分介绍了其他区域中如何通过Vyos与TGW建立VPN通道,实现动态路由并解决IP地址重叠的问题;第三部分描述了如何通过AutoScaling+CloudWatch+Lambda实现VPN网络的高可用及自愈。本方案涉及如下服务或技术:
- EC2
- VPC
- TGW
- CloudWatch
- Lambda
- AutoScaling
- 7
- IPSEC VPN
- BGP
- IP NAT
2. 网络拓扑和规划
2.1. 实验网络拓扑图
2.2. IP地址和路由规划
2.2.1. IP地址规划
VPC 主CIDR | VPC预留CIDR | AZ1 subnet1 | AZ2 subnet2 | AZ3 subnet3 | |
Singapore | 172.88.0.0/19 | 172.88.32.0/19 | 172.88.0.0/24 | 172.88.1.0/24 | 172.88.2.0/24 |
Oregon | 172.88.64.0/19 | 172.88.96.0/19 | 172.88.64.0/24 | 172.88.65.0/24 | 172.88.66.0/24 |
Virginia | 172.88.128.0/19 | 172.88.160.0/19 | 172.88.128.0/24 | 172.88.129.0/24 | 172.88.130.0/24 |
Frankfurt | 172.88.192.0/19 | 172.88.224.0/19 | 172.88.192.0/24 | 172.88.193.0/24 | 172.88.194.0/24 |
注:上表中所有子网均为public subnent,Vyos instance作为VPN instance需要具有public IP。如企业实际架构中需要私有子网,用户可自行增加私有子网,并增加Vyos中的路由配置即可。
为了模拟企业中由于早期缺乏规划或企业并购的情况,新加坡与佛吉尼亚的VPC均具有172.88.88.0/24网络地址,且需要相互通信。因此我们规划新加坡172.88.88.0/24子网 转换为10.0.1.0/24并在全网进行BGP宣告,同时规划佛吉尼亚172.88.88.0/24子网转换为192.168.1.0/24并在全网进行BGP宣告
2.2.2. BPG ASN、 EIP及路由表规划
Hostname | Public IP | EIP allocated ID | VPC Route table id | ASN # |
Ore-TGW | 64550 | |||
Sin-VYOS(CGW) | x.x.x.x | eipalloc-xxxx | rtb-xxxx | 65400 |
Fra-VYOS(CGW) | x.x.x.x | eipalloc-xxxx | rtb-xxxx | 65300 |
Vir-VYOS(CGW) | x.x.x.x | eipalloc-xxxx | rtb-xxxx | 65200 |
3. VPC基础环境创建
有关VPC、Subnet、IGW、Route Table等内容可参考
https://docs.thinkwithwp.com/zh_cn/batch/latest/userguide/create-public-private-vpc.html
https://www.youtube.com/watch?v=LuPdrgnYyU4
如您熟悉VPC基础环境创建,请跳过本节内容,直接阅读下一节。
3.1. 创建VPC
登录console,选择Region,选择VPC服务
在右侧窗口点击Create VPC
输入Name tag,根据规划输入IPv CIDR block,点击Create。
重复以上过程在每个region创建VPC。
3.2. 创建subnet
输入Name tag,VPC选择刚刚创建的VPC,Availability Zone可以手动选择,也可以保留为默认No preference,由AWS进行分配(注:不同用户在同一个Region 内看到的相同名称的AZ,实际上不一定是在同一个AZ)。输入IPv4 CIDR block,点击create。
勾选创建的子网,点击顶部Action按钮,选择Modify auto-asign IP settings,
重复以上步骤在每个region的VPC内创建3个subnet,为了提供高可用及冗余,建议一个VPC内的3个subnet处于不同的AZ。
3.3. 创建IGW
VPC内要能够与公网进行通信,必须创建IGW并与VPC进行关联。
选择创建的IGW,点击上部的Actions,选择Attach to VPC。
选择创建的VPC
重复上述过程,为每个Region的VPC创建IGW。
3.4. 创建路由表并添加默认路由
在VPC左侧功能栏选择Route Table,在右侧窗口点击Create route table
输入Name tag,选择创建的VPC,点击Create。
选择刚刚创建的路由表,在底部窗格选择Subnet Associations标签,点击Edit Subnet Associations。
勾选创建的三个public subnent,点击save。
选中创建的路由表,底部窗格选择Routes,点击Edit Routes
点击add route,Destination输入0.0.0.0/0,target选择创建的IGW,点击save。
4. 创建TGW及配置VPN
在本方案中采用在Oregon区域的TGW作为中间汇聚节点,在实际项目中您可根据环境选择使用VGW或使用vyos做为汇聚节点。使用托管的TGW和VGW,AWS会为你提供高可用,选择使用vyos需要您考虑vyos的高可用问题。
有关TGW的介绍,可参考如下链接:
https://docs.thinkwithwp.com/zh_cn/vpc/latest/tgw/tgw-getting-started.html
有关VGW的介绍,可参考如下链接:
https://docs.thinkwithwp.com/zh_cn/vpn/latest/s2svpn/SetUpVPNConnections.html
4.1. 创建CGW
登录Console,选择Oregon Region,选择Service—>VPC
在左侧功能栏找到Customer Gateway,点击Customer Gateway,在右侧窗口点击Create Customer Gateway。
输入Name 此处输入Sin-VYOS,Routing选择Dynamic并输入ASN号(此处输入65400),输入公网IP(在Singapore Region获取的EIP),点击Create Customer Gateway。重复此过程,为法兰克福、佛吉尼亚各创建一个Customer Gateway,注意每个Customer Gateway的ASN和IP的区别。
新加坡Customer Gateway:
4.2. 创建TGW
在VPC左侧功能栏点击Transit Gateway,在右侧的服务窗口点击Create Transit Gateway
输入Name,Description,Amazon side ASN(输入前边规划的ASN号),其他选项默认或根据需要进行修改,点击Create Transit Gateway。
4.3. 创建VPN链接
点击VPC左侧功能栏Transit Gateway Attachment,在右侧窗口点击Create Transit Gateway Attachment。
Transit Gateway ID 选择刚刚创建的TGW,Attachment type 选择VPN,Customer Gateway选择Existing,Customer Gateway ID 选择创建的新加坡CGW,Routing Option选择Dynamic,其他保留默认值即可,点击create attachment。重复此过程,创建到法兰克福和佛吉尼亚的VPN Attachment。
4.4. 下载VPN配置
在VPC 左侧功能栏点击Site-to-Site VPN Connection,在右侧窗口选中刚刚创建的到新加坡的VPN connection,点击顶部的Download Configuration,在弹出的窗口中,vendor下拉框中选择Vyatta,点击Download。重复此过程,分别下载法兰克福和佛吉尼亚的VPN configuration。注意保存文件时区分文件名,以便后续使用。