作为VPC网络篇的补充,本文通过动手搭建经典WEB三层架构来帮助大家强化VPC、公有子网和私有子网、路由表、安全组、NAT网关和互联网网关等概念和操作。
说明
- 通过ELB(负载均衡器)对外提供网络服务。
- 该VPC有六个子网,两个可用区HA。
- 通过ELB(负载均衡器)对外提供网络服务。
- 有四台EC2服务器: 堡垒机1台, web服务2台, 数据库服务器1台。
- 通过堡垒机可以远程web服务器和数据库服务器。
- 数据库服务器仅web服务器才能访问。
1、创建VPC
1、进入vpc控制台(通过搜索可快速进入)
2、点击右上角的创建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.4.0/24 az-1
db_subnet_2 数据子网2 192.168.5.0/24 az-2
3、创建互联网网关(igw)和NAT网关
互联网能访问这个vpc里的设备,就需要互联网网关(igw), 同样vpc里的设备页面访问互联网,就需要到NAT网关。
创建互联网网关
1、在vpc控制台,点击左边的互联网网关->创建互联网网关
2、在新的页面中,填写标签名称, 然后点创建互联网网关
3、回到互联网网关页面后,点击右上角的操作->附加到vpc, vpc选自己创建的
创建NAT网关(一定要放到公有子网)
操作
1、在vpc控制台,点击左边的NAT网关->创建NAT网关
2、在创建页面中,填写名称,子网选public_subnet_2(每个公有子网都ok)
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)
- 需要创建三台服务器, 堡垒机(bastion),web服务器1,web服务器2
- 堡垒机部署在公有子网1上,使用公网安全组,分配公网IP
- web1,web2分别部署在私有子网1和私有子网2上,使用私网安全组,禁用公网IP
- 上传web1和web2的秘钥到堡垒机上,用于利用堡垒机访问web1和web2
7、登录堡垒机和web服务器
ssh到堡垒机
ssh -i test.pem ec2-user@堡垒机IP
将两个web服务器的秘钥上传到堡垒机(可以使用相同的密钥)
scp -i ~/test.pem ~/test.pem ec2-user@堡垒机IP:~/tmp
scp -i 《密钥文件路径》空格 《本地文件路径》空格 用户名@服务器网址:/《临时文件夹》
利用堡垒机ssh到web服务器
ssh -i test.pem ec2-user@web服务器
在两台web服务上安装LAMP服务
对实例执行快速软件更新
sudo yum update -y
安装 lamp-mariadb10.2-php7.2 和 php7.2 Amazon LinuxExtras 存储库,以获取适用于 Amazon Linux 2 的 LAMP MariaDB 和 PHP 程序包的最新版本。
sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
安装 Apache Web 服务器、MariaDB 和 PHP 软件包
sudo yum install -y httpd mariadb-server
启动 Apache Web 服务器
sudo systemctl start httpd
使用 systemctl 命令配置 Apache Web 服务器,使其在每次系统启动时启动
sudo systemctl enable httpd
通过运行以下命令验证 httpd 是否已启用
sudo systemctl is-enabled httpd
查看web服务器上的nginx是否有在运行(判断是都有监听80端口)
netstat -napt | grep ::80
8、利用负载均衡器(ELB)访问web
实现原理 前面设置了负载均衡安全组和私网安全组,负载均衡安全组设置了可以接收来自互联网的http协议(80端口)的访问,私网安全组设置了可以接收来自负载均衡安全组的http协议(80端口)。这样,ELB会接收来自互联的http访问,然后分配转发给web服务器。
- 负载均衡的类型为http/https, 模式为面向internet
- 可用区选两个公有子网
- 配置负载均衡安全组
- 注册目标勾选那两台web服务器
9、访问负载均衡器进行测试
负载均衡器中的DNS名称就是网址,黏贴到浏览器,就可以访问web网页。
10、创建DB服务器
web服务器创建完后,需要数据库服务器,给web提供数据支持。根据上面的步骤,可以创建在数据子网(db_subnet)内创建db服务器,允许私网安全组的3306端口(mysql的端口)访问。
- 创建数据库安全组,允许私网安全组的3306端口, 允许公网安全组的SSH, ICMP访问
- 数据子网既不能被互联网访问,也不能访问互联网
- 创建一台EC2服务器,安装mysql(需要临时配置NAT网关)
- 在web服务器中,访问DB服务器,可以利用Mycli客户端访问
TODO
1.补充DB服务器的配置,以及测试命令。
2.补充数据库RDS/Aurora相关的配置和说明,以及备份策略等等。
3.有时间补充配置好的截图,方便大家理解。