概述
这里使用的是aws
的vpc
, 因为使用aws的该功能,需要账户绑定授权usd的信用卡,没有的话,就操作不了。用aws的好处是,很多功能是有限时间内是免费的,可以很好的拿来做练习。
什么是vpc?
VPC(Virtual Private Cloud), 也就是虚拟是有云,允许您在云上构建出一个逻辑隔离分区,让您在自己定义的虚拟网络中创建并运行新网的资源。您可以完全掌控您的虚拟网络环境,包括选择自己的IP地址范围,创建子网和配置路由表等。
拓扑图设计
拓扑图中的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
即可完成创建
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网关
,完成创建
4、创建路由表
说明
- 需要创建两个路由表,
公网路由
和私网路由
, - 公网路由指向
互联网网关(igw)
, 关联两个公有子网(public_subnet)
- 私网路由指向
NAT网关
, 关联两个私有子网(private_subnet)
操作
1、在vpc
控制台,点击路由表
->创建路由表
创建路由
2、填写标签
,vpc
选自己创建的, 完成创建
3、回到路由表页面,勾中一个路由,下面就会出现详情
4、在详情
的路由中
, 点击编辑路由
5、在编辑页面添加一条0.0.0.0/0
到互联网网关
的路由(私网路由则是添加0.0.0.0/0
到nat网关
)
6、保存路由后,回头路由页面,在详情
中,点击子网关联
->编辑子网关联
7、在编辑子网关联
页面中,勾选中两个公有子网
(私网路由则是勾选两个私有子网
)
8、保存,完成路由创建
5、创建安全组
安全组
是各个服务器间和互联网间互相访问的一个规则,公网能访问公有网段
里的服务器,却不能访问私有网络
的服务器,私有网络
中的服务器,只能通过公有网段
中的服务器或负载均衡器
来访问
说明
- 需要创建三个安全组,
公网安全组
,私网完全组
,负载均衡安全组
-
公网安全组
允许互联网SSH
,ICMP
访问; -
负载均衡组
允许互联网的HTTP
访问 -
私网安全组
允许来自公网安全组
的SSH
,ICMP
来访问, 也允许负载安全组
的HTTP
来访问
操作
1、在VPC
控制台,点击安全组
->创建安全组
来创建
2、填写安全组名称
,描述
,vpc
勾选自己创建的
3、在入站规则
中添加规则,根据上面的说明
添加,
4、源
的话,公网安全组
和负载均衡
勾选任意位置
, 而私网安全组
勾选自定义
,在后面的搜索中勾选来自安全组
的对应选项
5、完成创建
6、创建服务器(EC2)
什么是EC2?
亚马逊弹性计算云(EC2,Elastic Compute Cloud)是一个让使用者可以租用云端电脑运行所需应用的系统
说明
- 需要创建三台服务器,
堡垒机(dastion)
,web服务器1
,web服务器2
-
堡垒机
部署在公有子网1
上,使用公网安全组
,分配公网IP
-
web1
,web2
分别部署在私有子网1
和私有子网2
上,使用私网安全组
, 禁用公网IP
- 上传
web1
, 和web2
的秘钥到堡垒机
上,用于利用堡垒机访问web1
和web2
操作
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、启动示例完成
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
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 登录授权
最后总结
这样具有三层结构的私有网络就这样完成了,其中很多步骤在做的时候,需要多理解,多操作。
还有一个就是,因为使用的aws的服务,国内用的话,会有经常掉线的问题,如果在堡垒机
上面工作的话,掉线了,在进入,很多操作都得重新再来,这个让人很抓狂,说以,可以在堡垒机上安装tmux软件,即使掉线了,在进入的话,可以很方便的继续工作