在AWS上搭建VPC三层架构的私有网络


概述

这里使用的是awsvpc, 因为使用aws的该功能,需要账户绑定授权usd的信用卡,没有的话,就操作不了。用aws的好处是,很多功能是有限时间内是免费的,可以很好的拿来做练习。

什么是vpc?
VPC(Virtual Private Cloud), 也就是虚拟是有云,允许您在云上构建出一个逻辑隔离分区,让您在自己定义的虚拟网络中创建并运行新网的资源。您可以完全掌控您的虚拟网络环境,包括选择自己的IP地址范围,创建子网和配置路由表等。

拓扑图设计

vpc拓扑图

拓扑图中的ALB应该是ELB

说明

  • 在区域俄亥俄州创建一个VPC
  • VPC有六个子网,两个可用区
  • 通过互联网网关(IGW),互联网可以访问该VPC
  • vpc内的设备通过NAT网关可以访问互联网
  • 有四台服务器(有用的就四台), 堡垒机, 两台web服务, 一台数据库服务器
  • 通过ELB(负载均衡)可以访问web服务器
  • 通过堡垒机可以远程web服务器数据库服务器
  • 数据库服务器web服务器才能访问
  • replica 不做,因为我不想做

1、创建VPC

说明

  • 在区域俄亥俄州搭建一个vpc
  • vpc网段是192.168.0.0/16

操作
1、进入vpc控制台(通过搜索可快速进入)
2、选择区域为俄亥俄州(在导航栏的右上角)
3、点击右上角的创建vpc即可进入创建页面
4、填写名称标签; ipv4 添加192.168.0.0/16,其他的默认
5、点击有下家的创建vpc即可完成创建

vpc详情

2、创建子网

标题 名称 网段 区域
public_subnet_1 公有子网1 192.168.0.0/24 az-1
public_subnet_2 公有子网2 192.168.1.0/24 az-2
private_subnet_1 私有子网1 192.168.2.0/24 az-1
public_subnet_2 私有子网2 192.168.3.0/24 az-2
db_subnet_1 数据子网1 192.168.0.0/24 az-1
db_subnet_2 数据子网2 192.168.0.0/24 az-2

操作
1、在vpc控制台,点击左边的子网->创建子网
2、vpc选择步骤1中创建的vpc可用区ip网段按上表填写
3、依次添加6个子网

创建好的子网

3、创建互联网网关(igw)和NAT网关

互联网能访问这个vpc里的设备,就需要互联网网关(igw), 同样vpc里的设备页面访问互联网,就需要到NAT网关

创建互联网网关

操作
1、在vpc控制台,点击左边的互联网网关->创建互联网网关
2、在新的页面中,填写标签名称, 然后点创建互联网网关
3、回到互联网网关页面后,点击右上角的操作->附加到vpc, vpc选自己创建的

互联网网关

创建NAT网关

操作
1、在vpc控制台,点击左边的NAT网关->创建NAT网关
2、在创建页面中,填写名称,子网选public_subnet_2
3、点击分配弹性IP, 最后点击创建NAT网关,完成创建

NAT网关

4、创建路由表

说明

  • 需要创建两个路由表,公网路由私网路由
  • 公网路由指向互联网网关(igw), 关联两个公有子网(public_subnet)
  • 私网路由指向NAT网关, 关联两个私有子网(private_subnet)

操作
1、在vpc控制台,点击路由表->创建路由表创建路由
2、填写标签vpc选自己创建的, 完成创建
3、回到路由表页面,勾中一个路由,下面就会出现详情
4、在详情路由中, 点击编辑路由
5、在编辑页面添加一条0.0.0.0/0互联网网关的路由(私网路由则是添加0.0.0.0/0nat网关
6、保存路由后,回头路由页面,在详情中,点击子网关联->编辑子网关联
7、在编辑子网关联页面中,勾选中两个公有子网(私网路由则是勾选两个私有子网
8、保存,完成路由创建

路由表

5、创建安全组

安全组是各个服务器间和互联网间互相访问的一个规则,公网能访问公有网段里的服务器,却不能访问私有网络的服务器,私有网络中的服务器,只能通过公有网段中的服务器或负载均衡器来访问

说明

  • 需要创建三个安全组,公网安全组, 私网完全组, 负载均衡安全组
  • 公网安全组允许互联网SSHICMP访问;
  • 负载均衡组允许互联网的HTTP访问
  • 私网安全组允许来自公网安全组SSHICMP来访问, 也允许负载安全组HTTP来访问

操作
1、在VPC控制台,点击安全组->创建安全组来创建
2、填写安全组名称, 描述, vpc勾选自己创建的
3、在入站规则中添加规则,根据上面的说明添加,
4、的话, 公网安全组负载均衡勾选任意位置, 而私网安全组勾选自定义,在后面的搜索中勾选来自安全组的对应选项
5、完成创建

安全组

6、创建服务器(EC2)

什么是EC2?
亚马逊弹性计算云(EC2,Elastic Compute Cloud)是一个让使用者可以租用云端电脑运行所需应用的系统

说明

  • 需要创建三台服务器, 堡垒机(dastion),web服务器1,web服务器2
  • 堡垒机部署在公有子网1上,使用公网安全组,分配公网IP
  • web1web2分别部署在私有子网1私有子网2上,使用私网安全组, 禁用公网IP
  • 上传web1, 和web2的秘钥到堡垒机上,用于利用堡垒机访问web1web2

操作
1、在EC2控制台(通过搜索可快速进入), 点击左边的实例,进入实例页面
2、点击右上角的启动实例,进入创建实例
3、服务器选Amazon Linux 2(亚马逊自己免费的linux服务器)
4、步骤2中的实例类型选免费的(默认勾选的)
5、步骤3中的配置实例详细信息,网络选自己创建的vpc
6、子网选择对应的,堡垒机选择公有子网, web服务器则选对应的私有子网
7、自动分配公有 IP中,堡垒机启用web服务器禁用
8、步骤4中的添加存储默认
9、步骤5中的添加标签添加个name的标签
10、步骤6中的配置安全组,勾选选择一个现有的安全组,堡垒机公网安全组web服务器私网安全组
11、最后的点击启动,会提示下载秘钥,怎么选新建, 然后下载pem文件到本地
12、启动示例完成

EC2实例

7、登录堡垒机web服务器

堡垒机分配公网ip,允许互联网中的SSH访问, 所以可以利用刚才下载的秘钥(pem文件)进入该服务器
说明

  • ssh到堡垒机
  • 将两个web服务器的秘钥上传到堡垒机
  • 利用堡垒机ssh到web服务器
  • 最后在两条web服务上安装nginx服务

操作
1、修改pem文件的权限 chmod 400 [文件名].pem
2、ssh到堡垒机ssh -i [文件名].pem [用户名]@[堡垒机的ip地址], 确认是可以登录的
3、ping 两个 web服务器的地址,确认是可通的
4、回到我们本地,利用scp命令将web的秘钥上传到堡垒机上,scp [web的秘钥].pem -i [堡垒机秘钥].pem [堡垒机用户名]@[堡垒机ip]:~/[web的秘钥].pem
5、登录到堡垒机,利用堡垒机进入到web服务器上,步骤跟进入到堡垒机一样
6、分别进入两台web服务器后,安装nginx服务sudo yum install -y nginx
7、分别在两台上启动nginx, sudo nginx
8、查看web服务器上的nginx是否有在运行(判断是都有监听80端口)netstat -napt | grep ::80

堡垒机上ping两台web服务器

查看80端口监听

8、利用负载均衡器(ELB)访问web

web服务器搭建好之后,需要互联网能访问这个服务器,但是web服务器在私有网段,互联网不能直接访问,这时候,就需要用到负载均衡器(ELB)来做流量转发,遇到http的协议(80端口)就均衡地发放到两台web服务上。

为什么要建两台web服务?
如果只有一台web服务器的话,那么遇到大访问量的时候,那必定请求响应缓慢。所以就需要用到多台web服务器(不一定是两台)来分担这些流量。而这时候负责流量接收,流量分配那就是ELB的工作了

实现原理
前面设置了负载均衡安全组私网安全组负载均衡安全组设置了可以接收来自互联网的http协议(80端口)的访问, 私网安全组设置了可以接收来自负载均衡安全组的http协议(80端口)。这样,ELB会接收来自互联的http访问,然后分配转发给web服务器

说明

  • 负载均衡的类型为http/https, 模式为面向internet
  • 可用区选两个公有子网(如果上面创建子网时,可用区选的是一样的话,这里就操作不了了)
  • 配置负载均衡安全组
  • 注册目标勾选那两台web服务器

操作
1、在EC2控制台,点击左边的负载平衡->负载均衡器进入负载均衡器页面
2、点击页面左上角的创建负载均衡器按钮,进入创建步骤,选择http/https的负载均衡类型
3、在步骤1中配置负载均衡器

  • 填写名称
  • 模式选面向interlnet
  • vpc选择自己创建的
  • 可用区两个都勾选上,选公有子网
  • 其他保持默认

4、在步骤3中配置安全组中,使用现有的安全组,勾选负载均衡安全组
5、在步骤4的配置路由中创建目标组, 填写名称,其他默认
6、在步骤5的注册目标中,勾选两台web服务器,然后点击添加到已注册
7、最后点击审核, 完成创建

负载均衡器

9、访问web服务器测试

负载均衡器中的DNS名称就是网址,黏贴到浏览器,就可以访问web网页

网页访问

验证负载均衡
修改两个web服务器的网页的index.html文件,一个标注为1, 一个标注为2,然后大量访问该网址(一般使用工具),到达某个量,就都可以访问到这两个页面。不过这个只是理论,我未去测试

10、创建DB服务器

web服务器创建完后,需要数据库服务器,给web提供数据支持。根据上面的步骤,可以创建在数据子网(db_subnet)内创建db服务器,允许私网安全组3306端口(mysql的端口)访问

说明

  • 创建数据库安全组,允许私网安全组3306端口, 允许公网安全组SSH, ICMP访问
  • 数据子网既不能被互联网访问,也不能访问互联网
  • 创建一天EC2服务器,安装mysql(需要nat网关)
  • 在web服务器中,访问DB服务器,可以利用Mycli客户端访问

操作
略, 参考以上的操作

相关教程
需要对linux个MySQL有一定的基础了解
CentOS 7安装mycli
CentOs 安装mysql
mysql 登录授权

在web服务器上链接db服务器

最后总结

这样具有三层结构的私有网络就这样完成了,其中很多步骤在做的时候,需要多理解,多操作。

还有一个就是,因为使用的aws的服务,国内用的话,会有经常掉线的问题,如果在堡垒机上面工作的话,掉线了,在进入,很多操作都得重新再来,这个让人很抓狂,说以,可以在堡垒机上安装tmux软件,即使掉线了,在进入的话,可以很方便的继续工作

你可能感兴趣的:(在AWS上搭建VPC三层架构的私有网络)