如何打通AWS VPC跨区域Region VPC Peering
一、前言
AWS公有云各区域间都是完全隔离的,互通默认是通过Internet访问。如果业务部署在多个不同Region且当有大量复制数据的需求,一般可以通过S3、RDS底层的跨区域复制实现,这种方式是通过AWS的全球骨干网传输,数据不暴露在Internet上。
如果要方便操作,有一批EC2分别位于两个Region,EC2虚拟机之间要互通,那么在通过Internet就麻烦了。最佳实践就是跨Region的VPC Peering。
通过 Amazon Virtual Private Cloud(Amazon VPC),您可以将 Amazon 资源启动到您定义的虚拟网络中。VPC peering 是两个 VPC 之间的网络连接,通过此连接,您可以使用私有 IPv4 地址或 IPv6 地址在两个 VPC 之间路由流量。这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样。您可以在自己的 VPC 之间创建 VPC peering,或者在自己的 VPC 与其他Amazon账户中的 VPC 之间创建连接。VPC 可位于不同区域内(也称为区域间 VPC peering)。Transit Gateway 通过中央枢纽连接 VPC 和本地网络。这简化了您的网络,并且结束了复杂的对等关系。它用作云路由器 – 每个新连接都只进行一次。Transit Gateway 根据网络流量的规模灵活地进行扩展。Transit Gateway 支持多路由表,您可以将这些路由表配置为传播所连接的 VPC、VPN 连接和 Direct Connect 网关的路由表中的路由。通过本实验,您将能了解到如何配置 VPC peering 和 Transit Gateway,以及 Transit Gateway 的路由隔离功能。在实际环境部署中,两者可以相结合使用。
网络架构图:
技术实践:
1. VPC Spoke-1 内的 EC2 可以和 VPC Spoke-3 内的 EC2 通信
2. VPC Spoke-1 内的 EC2 不可以和 VPC Spoke-2 内的 EC2 通信
3. VPC Spoke-1 和 VPC Spoke-2 内的 EC2 可以和 VPC Hub 内的 EC2 通信
要创建的 VPC、子网、CIDR、EC2 如上表所示。
1. 创建基础环境
1.1 创建 4 个实验 VPC
以 VPC Spoke-2 为例,登录到 AWS Console,打开 VPC 服务,
点击 Your VPCs,点击 Create VPC 按钮
在 Name tag 输入 VPC Spoke-2,在 IPv4 CIDR block 输入 10.2.0.0/16,点击 Create VPC 按钮
选中创建好的 VPC Spoke-2,从 Actions 选择下拉列表中的 Edit DNS hostnames
勾上 Enable,点击 Save changes 按钮。
1.2创建 IGW
1. 点击 Internet Gateways,点击 Create internet gateway
2. 在 Name tag 里面输入 spoke2,点击 Create internet gateway
3. 选择 Actions 下拉列表里面的 Attach to VPC
4. 从 Select a VPC 里面选择 前面创建好的 vpc-spoke2 点击 Attach internet gateway 按钮。
1.3 创建 route table
1. 点击 Route Tables,点击 Create route table 按钮。
2. 在 Name tag 输入 spoke2,在 VPC 下拉列表中选择建好的 VPC Spoke-2,点击 Create
3. 点击 Route Table ID 后的链接
4. 选择 Routes,点击 Edit routes 按钮
5. 点击 Add route
6. 在 Destination 列输入0.0.0.0/0,在 target 里面选择 Internet Gateway,接着选择前面创建的 IGW,点击 Save routes 按钮
1.4 创建 subnet
1. 点击 Subnets,点击 Create subnet 按钮
2. 在 Name tag 输入 VPC Spoke-2-sub-1a,VPC 选择前面创建的 Spoke-2,Availability Zone 选择 1a 结尾的,IPv4 CIDR block 里面输入 10.2.0.0/24,点击 Create 按钮。
3. 重复 1.4 的步骤,创建 VPC Spoke-2-sub-1b,在 Name tag 输入 VPC Spoke-2-sub-1b,VPC 选择前面创建的 Spoke-2,Availability Zone 选择 1b 结尾的,IPv4 CIDR block 里面输入 10.2.1.0/24,点击 Create 按钮。
4. 为 VPC Spoke-2-1a 关联前面创建的 Route table:选择 VPC Spoke-2-1a,点击 Edit route table association 按钮
5. 选择之前创建的 route table:Spoke2,点击 save 按钮
1.5 创建 keypair
1. 打开 EC2 服务
2. 点击 Key Pairs,点击 Create key pair 按钮
3. 在 Name 输入 lab3,File format 根据您当前的使用的 ssh 软件选择:pem or ppk;点击 Create key pair 按钮后会下载一个 pem 或 ppk 到您的本地机器上。
1.6 创建 EC2 实例
1. 打开 EC2 服务
2. 点击 Instances,点击 Launch instances 按钮
3. 点击 Amazon Linux 2 AMI (HVM), SSD Volume Type 后面的 Select 按钮
4. 选择 t3.small,点击 Next:Configure Instance Details 按钮
5. 在 Network 选择前面创建的 VPC Spoke-2,subnet 选择 VPC Spoke-2-sub-1a,Auto-assign Public IP 选择 Enable,点击 Next:Add Storage 按钮
6. 点击 Next:Add Tags 按钮,Key 填入 Name,Value 填入 lab3,点击 Next:Configure Security Group
7. Security group name 输入 lab3,修改 Description,点击 Add Rule 按钮,从 Type 列表里面选择 ICMP,点击 Review and Launch 按钮。
8. 点击 Launch 按钮
9. 选择 1.5 创建的 keypair,勾选 I acknowledge,点击 Launch Instances 按钮。
修改实例名字为 spoke2-sub-1a
1.7 重复上述步骤,如下表分别创建以下 4 个 VPC 和 4 个 EC2 实例(hub-sub-1a、spoke1-sub-1a、spoke2-sub-1a、spoke3-sub-1a)
(备注:一个账户最多仅允许创建 5 个VPC,如出现 VPC 数量到达上限时请删除默认 VPC或前面 Lab 创建的 VPC)
2. 创建 VPC Peering
2.1 创建 VPC Peering Connection
1. 在 VPC console 中选择 Peering Connnections 按钮,点击 Create Peering Connection
2. 输入 Peering connection name tag、VPC (Requester)为 Spoke-3、VPC (Accepter)为 Spoke-1
3. 点击 Creating Peering Connection
4. 观察现在的 Peering Connection 为 Pending Acceptance 状态
5. 点击 Actions,选择 Accept Request
6. 选择 Yes,Accept
7. 观察现在的 Peering Connection 为 Active 状态
2.2 更新 Spoke-1 和 Spoke-3 的路由表
1. 点击 Route Tables,选中 Spoke1,点击 Edit routes:
2. 添加一条路由,Destination为10.3.0.0/16,Target 选择 Peering Connection
3. 选择 2.1 创建好的 Peering Connection ID,选择 Save Routes
4. 同样,更新 Spoke3 路由表,点击 Route Tables,选中 Spoke3,点击 Edit routes:
5. 添加一条路由,Destination为 10.1.0.0/16,Target 选择 Peering Connection
6. 选择 2.1 创建好的 Peering Connection ID,选择 Save Routes
2.3 验证测试 VPC Peering
远程登录 EC2 实例 spoke1-sub-1a,Ping EC2 实例 spoke3-sub-1a
通过 SSH 进入VPC Spoke-1 中的 EC2 实例
cd < lab3.pem 文件所在目录>
chmod 400 lab3.pem
ssh -i lab3.pem ec2-user@<PUBLIC IP>
Ping EC2 实例 spoke3-sub-1a
3. 使用 TGW 创建 Hub-Spoke 互联环境
3.1 创建 Transit Gateway
1. 点击 VPC 窗口的 Transit Gateway 按钮,点击 Create Transit Gateway
2. 输入 Name tag 和 Description
3. 点击创建 TGW
3.2 创建 Transit Gateway 附件
1. 点击 VPC 窗口的 Transit Gateway Attachments 按钮,点击 Create Transit Gateway Attachments 按钮
2. 在 Transit Gateway ID 那栏选中 3.1 创建的 TGW, Attachment type 选择 VPC;在 VPC Attachment 部分,输入 Attachment name tag,VPC ID 选择 1.6 创建的 VPC Spoke-1,在 Subnet IDs 部分勾选全部 2 个 Subnets
3. 再点击创建,可以看到 console 上已经显示一个名为 VPC Spoke-1 的 VPC attachment
4. 重复上述步骤,继续创建 Attachment VPC Spoke-2 和 VPC Hub:点击 Create Transit Gateway Attachments 按钮
5. 在 Transit Gateway ID 那栏选中 3.1 创建的 TGW, Attachment type 选择 VPC;在 VPC Attachment 部分,输入 Attachment name tag,VPC ID 选择 1.6 创建的 VPC Spoke-2,在 Subnet IDs 部分勾选全部 2 个 Subnets
6. 再点击创建,可以看到 console 上已经显示一个名为的 VPC Spoke-2 的 VPC attachment
7. 点击 Create Transit Gateway Attachments 按钮
8. 在 Transit Gateway ID 那栏选中 3.1 创建的 TGW, Attachment type 选择 VPC;在 VPC Attachment 部分,输入 Attachment name tag,VPC ID 选择 1.6 创建的 VPC Hub,在 Subnet IDs 部分勾选全部 2 个 Subnets
9. 再点击创建,可以看到 console 上已经显示一个名为的 VPC Hub 的 VPC attachment
3.3 创建和配置Transit Gateway 路由表
1. 点击 Console 里的 Transit Gateway Route Tables,选中默认 Route Table,选择 Associations,依次选中不同的 Attachment,点击 Delete association 删除所有附件
2. 然后点击 Create Transit Gateway Route Table 按钮创建一个新的路由表
3. 输入 Name tag 为 Spokes,选择 Transit Gateway ID 为 3.1 创建的 TGW
4. 点击创建好的新路由表
5. 选中建立好的 Spokes 路由表,选择 Create association 按钮
6. 在 Create association console 中,choose attachment to associate 栏选择 VPC Spoke-1
7. 点击 Create association 创建 association
8. 重复上述步骤,将 VPC Spoke-2 也 associate 到 Spokes 路由表中,选中建立好的 Spokes 路由表,选择 Create association 按钮
9. 在 Create association console 中,choose attachment to associate 栏选择 VPC Spoke-2
10. 点击 Create association 创建 association
11. 创建 Hub 路由表,点击 Create Transit Gateway Route Table 按钮创建一个新的路由表
12. 输入 Name tag 为 Hub,选择 Transit Gateway ID 为 3.1 创建的 TGW
13. 点击创建好的新路由表
14. 将 VPC Hub associate 到 Hub 路由表中,选中建立好的 Hub 路由表,选择 Create association 按钮
15. 在 Create association console 中,choose attachment to associate 栏选择 VPC Hub
16. 点击 Create association 创建 association
3.4 配置路由传播
1. 点击 Transit Gateway Route Tables console,选中 Spokes 路由表,选择 Propagations,点击Create Propagations
2. 在 Choose attachment to prpagate 栏中选择 VPC Hub
3. 点击创建
4. 再次点击 Transit Gateway Route Tables console,选中 Hub 路由表,选择 Propagations,点击 Create Propagations
5. 在 Choose attachment to prpagate 栏中选择 VPC Spoke-1
6. 点击创建
7. 重复上述步骤,将 Spoke-2 的路由也 propagate到 Hub 路由表中
再次点击 Transit Gateway Route Tables console,选中 Hub 路由表,选择 Propagations,点击 Create Propagations
8. 在 Choose attachment to prpagate 栏中选择 VPC Spoke-2
9. 点击创建
3.5 配置各子网路由表
1. 在 VPC console中 选择 Route Tables,选中 1.3 创建的路由表 Spoke1,选择 Routes,选择 Edit routes
2. 点击 Add route,添加一条路由,Destination 栏填写 10.0.0.0/8,Target 栏选择 Transit Gateway
3. 选中 3.1 所创建的 TGW
4. 点击 Save routes
在 VPC console 中选择 Route Tables,选中 1.3 创建的路由表 Spoke2,选择 Routes,选择 Edit routes
5. 点击 Add route,添加一条路由,Destination 栏填写 10.0.0.0/8,Target 栏选择 Transit Gateway
6. 选中 3.1 所创建的 TGW
7. 点击 Save routes
在 VPC console 中选择 Route Tables,选中 1.3 创建的路由表 Hub,选择 Routes,选择 Edit routes
8. 点击 Add route,添加一条路由,Destination 栏填写 10.0.0.0/8,Target 栏选择 Transit Gateway
9. 选中 3.1 所创建的 TGW
10. 点击 Save routes
3.6 验证测试
远程登录 EC2 实例 spoke1-sub-1a,Ping EC2 实例 spoke2-sub-1a
通过 SSH 进入 VPC Spoke-1 中的 EC2 实例
ssh -i lab3.pem ec2-user@<PUBLIC IP>
Ping EC2 实例 spoke2-sub-1a
Ping 不通,证明两个 Spoke VPC 内的 EC2 实例不能互访
保持登录 EC2 实例 spoke1-sub-1a,Ping EC2 实例 hub-sub-1a
可以 Ping 通,证明 Spoke1 VPC 内的 EC2 实例可以和 Hub VPC 的 EC2 实例互访
远程登录 EC2 实例 spoke2-sub-1a,Ping EC2 实例 hub-sub-1a
通过 SSH 进入 VPC Spoke-2 中的 EC2 实例
ssh -i lab3.pem ec2-user@<PUBLIC IP>
Ping EC2 实例 hub-sub-1a
可以 Ping 通,证明 Spoke2 VPC 内的 EC2 实例可以和 Hub VPC 的 EC2 实例互访。