AWS云计算
注:此文档参考微信公众号TomTrain中的微课|“永字八法”之AWS云。
一、背景

你是一名云计算运维工程师,现在需要为某电商企业构建交易网站(LAMP架构)。通过多次沟通交流,最后此单位决定在AWS云的中国区域中部署此网站。现在,需要为客户实现高可用性和高弹性的架构,同时正确部署LAMP应用。已知的要求有:
- 将基于LAMP架构的应用上线运营,对外发布的网站的端口为8001
- 创建全新的VPC及网络架构
- 使用负载均衡、弹性伸缩、EC2、Amazon Aurora等组件构建资源栈
- 实现配置弹性伸缩
- 系统会根据需要,自动添加、配置新的实例,无须手动操作
- 通过使用子网、安全组等技术保护业务的安全
- 通过多可用区部署、群集技术等避免单点故障
- 通过其它必要的技术来应对数据损坏、丢失等意外事件的发生
- EC2实例类型为t2.micro,8GB磁盘
- RDS为Amazon Aurora,db.t3.medium,磁盘80GB
- 为减少Web应用的压力, CSS、图片等文件放置到公开的S3中
- 用户上传的文件需要放置到EFS存储中
- 架构图中组件不能有单点故障
- 设置必要的资源标签
- 部署流程
- VPC及子网
- NAT Gateway
- DB
- EC2
- 部署应用
- EFS
- S3
- AMI
- ELB
- Auto Scaling
- Cloud Watch
- 部署
- VPC
- VPC及子网概念
通过Amazon Virtual Private Cloud (Amazon VPC),可以将AWS资源启动到你定义的虚拟网络中。这个虚拟网络与在传统中心中运行的传统网络极其相似。Amazon VPC 是 Amazon EC2 的网络层,初学者需要掌握以下主要概念:
1、Virtual private cloud (VPC):仅适用于你的AWS账户的虚拟网络。
2、子网:你的 VPC 内的一个 IP 地址范围。
3、路由表:一组称为“路由”的规则,它们用于确定将网络流量发送到何处。
4、互联网网关:连接到VPC的网关,用于启用VPC中的资源与互联网之间的通信。
- 网络规划
VPC名称:vpc
VPC CIDR:10.0.0.0/16
| Public1 | App1 | Data1 |
| 10.0.1.0/24 | 10.0.2.0/24 | 10.0.3.0/24 |
| Public2 | App2 | Data2 |
| 10.0.11.0/24 | 10.0.12.0/24 | 10.0.13.0/24 |
- 创建VPC、子网、NAT、GateWay
1、点击Create VPC

2、如下创建VPC及子网
- 选择要创建的资源:VPC、子网等
- 名称标签自动生成:vpc
- IPv4 CIDR块:10.0.0.0/16
- 可用区(AZ):2个
- 自定义可用区:第一个可用区为us-east-1a;第二个可区为us-east-1b
- 公有子网的数量:2个
- 私有子网的数量:4个
- NAT网关:每个可用区1个
- VPC终端节点暂时不设置,选择无
- 其余默认

3、检查修改路由表
- 修改VPC、路由表及各子网名称



- 两个Public子网路由指向IGW


- App子网指向各自的NAT网关


- 创建一个local路由表,删除自动创建的两个Data路由表,使两个Data子网指向local路由
1)创建local 路由表:

2)删除自动创建的两个Data路由表:略(编辑两个路由表的子网关联,取消关联即可删除)
3)使两个Data子网指向local路由表:编辑local路由表的子网关联,将Data子网添加即可

- 创建数据库
- 创建安全组
- 创建ec2实例的安全组备用
- 安全组名称:ec2
- 描述:ec2
- VPC:选择之前创建的vpc-vpc
- 入站规则:规则一,选择“ssh”类型,源选择“我的IP”;规则二,选择“自定义TCP”,端口选择计划对外开放的“8001”端口,源选择“任何位置-IPv4”
- 出站规则:默认

- 创建数据库安全组
- 安全组名称:rds
- 描述:rds
- VPC:选择之前创建的vpc-vpc
- 入站规则:类型为“MYSQL/Aurora”,源为刚刚创建的“ec2”安全组
- 出站规则:默认

- 创建数据库的子网组
- 名称:db
- 描述:db
- VPC:选择之前创建的“vpc-vpc”
- 添加子网:选择创建VPC时选择的可用区,子网选择两个Data子网

- 创建数据库
- 名称:rds
- 凭证设置:用户名自己设置,这里设置:“admin” ,密码自己设置,这里设置:“zhangaoyun”
- 数据库实例类:可突增类
- 多可用区部署:在不同的可用区中创建Aurora副本或读取器节点
- VPC:选择之前创建的“vpc-vpc”
- 子网组:刚刚创建的“db”子网组
- 安全组:“rds”安全组
- 其他默认

- ec2
- 创建密匙对

- 创建ec2实例
- 名称;test
- 系统镜像:Amazon Linux aws
- 实例类型:t2.micro
- 密匙对:key58
- VPC:选择之前创建的“vpc-vpc”
- 子网:Public1
- 自动分配公有IP:启用
- 安全组:“ec2”安全组
- 其他配置默认

(四)部署应用
1、使用PuTTY连接实例


- 登录ec2-user

- 为root用户添加密码,切换到root用户,
sudo su -
sudo passwd root 设置根目录root新密码
ssud sshd -t 排错
- 修改/etc/ssh/sshd_config文件
PermitRootLogin yes
PasswordAuthentication yes
- 安装php、php-mysql、mariadb、httpd(LAMP)

sudo yum install -y php php-mysqlnd

- 开启httpd:systemctl start httpd
- 设置开机自启动:systemctl enable httpd
5、修改http配置文件,修改端口:vi /etc/httpd/conf/httpd.conf
Listen 80 修改为 Listen 8001
6、下载test项目包: wget https://tomtrain.s3.cn-northwest-1.amazonaws.com.cn/bookstore2.zip /var/www/html/
pscp -i "C:\Users\18371\Desktop\鹤壁云计算赛项\key59.ppk" "C:\Users\18371\Desktop\鹤壁云计算赛项\书店业务\bookstore2.zip" ec2-user@43.192.167.225:/var/www/html
一、Windows系统上传文件的几种方法
c

方法2:使用Windows PowerShell/CMD的SCP命令

方法3:使用PuTTY的pscp工具


我选第三个
解压:unzip bookstore2.zip
- 浏览器输入实例的公有IP端口为8001,测试Web服务使用正常

- 登录数据库写入节点,写入数据



- 创建bookstore数据库:create database bookstore;
- 进入bookstore数据库:use bookstore;
- 创建books表:
CREATE TABLE `books` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`price` decimal(10,2) NOT NULL,
`author` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
- 插入数据:
INSERT INTO `books` VALUES (1, 'PHP项目实践', 56.00, '明');
INSERT INTO `books` VALUES (2, 'Java基础', 88.00, '强');
INSERT INTO `books` VALUES (3, 'Python数据分析', 66.00, '飞');

- 检查创建是否正确:select * from books;

- 修改php文件:vi /var/www/html/index.php



- 下载压力测试文件包到/var/www/html下:
wget https://tomtrain.s3.cn-northwest-1.amazonaws.com.cn/cpuload.zip /var/www/html
- 解压:Unzip cpload.zip
- 浏览器输入:实例IP:8001/status.php

- EFS
- 创建EFS安全组
- 安全组名称:efs
- 描述:efs
- VPC:vpc-vpc
- 入站规则:类型为“NFS”;源为“ec2安全组”
- 其余默认

- 创建EFS
- 点击创建EFS
- 选择自定义

- 名称:EFS
- VPC:vpc-vpc
- 可用区:创建子网时选择的两个可用区
- 子网:两个Data子网
- 安全组:efs安全组
- 其它默认

- 配置EFS
(1)连接实例,安装amazon-efs-untils:yum install -y amazon-efs-utils
(2)创建EFS的挂载目录:mkdir /efs
(3)挂载EFS:sudo mount -t efs -o tls efs-id /efs
注:点击创建好的EFS,点击右上角的连接可找到“使用EFS挂载帮助程序”,注意命令中挂载目录是否需要更改,这里是使用的挂载目录是“/efs”。

(4)设置EFS开机自动挂载:vi /efs/fstab
注:用户指南中可找到命令,例如:fs-0b342a43a636748c1:/ /efs efs _netdev,tls 0 0

- 创建一个efs.conf: vi /etc/httpd/conf.d/efs.conf
Alias "/efs" "/efs"
<Directory "/efs">
Require all granted
</Directory>
- 将2.jpg放到/efs目录下:cp /var/www/html/efsimags/2.jpg /efs/
- 测试是否成功

(六)AMI
1、使用test实例创建AMI
- 名称:ami
- 描述:ami
- 其它默认


(七)ELB
1、创建目标群组
选择目标类型:实例
目标组名称:target
协议:HTTP
端口:8001
VPC:vpc-vpc
其它默认
注册目标:选择test

- 创建elb安全组
- 安全组名称:elb
- 描述:elb
- VPC:vpc-vpc
- 入站规则:类型为“自定义TCP”;端口为“8001”;源为“任何位置-IPv4”
- 其余默认

- 创建负载均衡器
- 负载均衡器类型:ALB
- 负载均衡器名称:ELB
- 模式:面向互联网
- IP地址类型:IPv4
- VPC:vpc-vpc
- 映射:两个可用区及两个Public子网
- 安全组:elb
- 侦听器和路由:协议为“HTTP”;端口为“8001”;默认操作转发至“target”
- 其余默认

注:网络负载均衡器
目标组创建的时候协议选择TCP,其余均与创建应用负载均衡器一致

- Auto Scaling
1、创建启动模板
- 启动模板名称:launch
- 模板版本说明:launch
- 系统映像:我的AMI“ami”
- 实例类型:t2.micro
- 密匙对:key58
- 安全组:ec2安全组
- 其余默认

- 创建Auto Scaling
- 名称:Auto
- 启动模板:launch
- VPC:vpc-vpc
- 可用区及子网:App1和App2
- 负载均衡:附加到现有的负载均衡器
- 现有的负载均衡器目标组:target
- 运行状态检查:60秒
- 组大小:所需容量:2;最小容量:2;最大容量:4;
- 其余默认

- 测试:在浏览器输入负载均衡器域名端口为8001,多刷新几次发现服务器地址在变化



- CloudWatch
- 创建警报
(1)CPU利用率过高增加实例
- 指标:选择指标->EC2->按Auto Scaling组->Auto Scaling CPUUtilization
- 周期:1分钟
- 每当CPUUitlization为...:大于/等于70
- 通知:删除
- 警报名称:addec2

(2)CPU利用率较低减少实例
- 指标:选择指标->EC2->按Auto Scaling组->Auto Scaling CPUUtilization
- 周期:1分钟
- 每当CPUUitlization为...:小于/等于20
- 通知:删除
- 警报名称:reduceec2

- 附加到Auto Scaling
选择Auto Scaling中的弹性伸缩,创建动态扩展策略

(1)CPU利用率过高增加实例

(2)CPU利用率较低减少实例

Putty对Linux上传下载文件或者文件夹
一、方法一:pscp命令
在Windows命令行中上传文件:
pscp [Windows上的路径,可绝对可相对] [Linux用户]@[Linux的IP地址或网络内唯一主机名]:[Linux上存放地址,绝对路径
例如:pscp f:/ss.zip root@54.166.254.58:/
- 方法二:psftp命令
注意:如若不行,修改实例中ssh配置文件试试(本文档部署应用中)
put 上传文件,目录需要加-r
get 下载文件,目录需要加-r
mput 上传多个文件
mget 下载多个文件
cd 服务器端移动路径
pwd 显示服务器端当前所在路径
lcd 本地端移动路径
lpwd 显示本地端当前所在路径
实例:
C:Usersxuefei>psftp root@192.168.0.11
Using username "root".
root@192.168.0.11's password:
Remote working directory is /root
psftp> lcd Desktop //调整本地端路径
New local directory is C:UsersxuefeiDesktop
psftp> put extundelete-0.2.4 //可以看到但有put是不行的
local: unable to open extundelete-0.2.4
psftp> mput extundelete-0.2.4 //mput一样不行
local: unable to open extundelete-0.2.4
psftp> put -r extundelete-0.2.4 //只有put -r才可以上传目录
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)