架构师核心-云计算&云上实战(云计算基础、云服务器ECS、云设施实战、云上高并发Web架构)

发布于:2024-04-23 ⋅ 阅读:(30) ⋅ 点赞:(0)

文章目录

云计算基础

阿里云

在这里插入图片描述

云计算岗位一般的要求是:

1、常见操作系统的使用与Linux命令行、Shell脚本

2、云计算基础:包括虚拟化技术、云存储、云安全等。

3、网络: 包括NAT、TCP/IP

4、Docker&云原生K8S

5、开发环境搭建与部署

6、微服务、DevOps与云原生监控

7、故障排除、日志分析、变更管理

1. 概念

1. 云平台优势

  • 环境统一
  • 按需付费
  • 即开即用
  • 稳定性强

国内常见云平台:

国外常见云平台:

  • 亚马逊 AWS、微软 Azure …

2. 公有云

购买云服务商提供的公共服务器

公有云是最常见的云计算部署类型。公有云资源(例如服务器和存储空间)由第三方云服务提供商拥有和运营,这些资源通过 Internet 提供。在公有云中,所有硬件、软件和其他支持性基础结构均为云提供商所拥有和管理。Microsoft Azure 是公有云的一个示例。

在公有云中,你与其他组织或云租户共享相同的硬件、存储和网络设备,并且你可以使用 Web 浏览器访问服务和管理帐户。公有云部署通常用于提供基于 Web 的电子邮件、网上办公应用、存储以及测试和开发环境。

公有云优势:

  • 成本更低:无需购买硬件或软件,仅对使用的服务付费。

  • 无需维护:维护由服务提供商提供。

  • 近乎无限制的伸缩性:提供按需资源,可满足业务需求。

  • 高可靠性:具备众多服务器,确保免受故障影响。

    • 可用性: N个9 9 0.999999 + 0.000001
    • 全年的故障时间: 365 x 24 x 3600 x (1-99.9999%) = 31s
    • 单点故障:

3. 私有云

自己搭建云平台,或者购买

私有云由专供一个企业或组织使用的云计算资源构成。私有云可在物理上位于组织的现场数据中心,也可由第三方服务提供商托管。但是,在私有云中,服务和基础结构始终在私有网络上进行维护,硬件和软件专供组织使用。

这样,私有云可使组织更加方便地自定义资源,从而满足特定的 IT 需求。私有云的使用对象通常为政府机构、金融机构以及其他具备业务关键性运营且希望对环境拥有更大控制权的中型到大型组织。

私有云优势:

  • 灵活性更强:组织可自定义云环境以满足特定业务需求。
  • 控制力更强:资源不与其他组织共享,因此能获得更高的控制力以及更高的隐私级别。
  • 可伸缩性更强:与本地基础结构相比,私有云通常具有更强的可伸缩性。

没有一种云计算类型适用于所有人。多种不同的云计算模型、类型和服务已得到发展,可以满足组织快速变化的技术需求。

部署云计算资源有三种不同的方法:公共云、私有云和混合云。采用的部署方法取决于业务需求、数据中心预算以及企业运维能力等。

4. IaaS、PaaS、SaaS

云计算的服务模式是分几层的,分别是:

  • IaaS: Infrastructure-as-a-Service; 基础设施即服务
  • PaaS: Platform-as-a-Service;平台即服务
  • SaaS: Software-as-a-Service;软件即服务

基础设施在最下端,平台在中间,软件在顶端。

在这里插入图片描述

如何理解:

  • 去云厂商买了服务器,自己安装数据库、Tomcat、部署Shop应用。此时云厂商是作为 IaaS; 例如云服务器
  • 去云厂商买了集成环境(服务器、MySQL、Tomcat、Java…),自己部署Shop应用。此时云厂商作为 PaaS; 例如阿里云ACK平台
  • 去云厂商直接买了电商平台,只需要上架自己商品就可售卖,此时云厂商作为 SaaS;例如保利威、飞书**、钉钉**等

2. 云设施

1. 概览

在这里插入图片描述

计算、存储、网络、安全;是计算机领域的四大核心。每家云厂商都提供了现成的核心资源,让我们能秒级开通和使用,像用水电一样方便。云未来将会成为水电一样的基础设施

2. 核心组件

以下是常用的云设施。需要我们熟练掌握

  • ECS
  • 块存储
  • 云盘
  • 数据备份
  • 镜像、快照
  • 安全组(防火墙)
  • 网络、VPC
  • NAT网关
  • 可用区
  • 计费方式
  • 公有云
  • 私有云

接下来我们开始实战学习这些云设施;每个资源都使用按量付费的方式,用完需要自行销毁,避免大量扣费。

云服务器ECS

1. ECS介绍

1. 简介

云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了采购IT硬件的前期准备,让我们像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。简而言之,云服务器就是把固定配置的服务器升级随时可以调整配置的云端服务器

https://www.aliyun.com/product/ecs

2. 组件

在这里插入图片描述

3. 概念

容灾概念:(一个服务器会容易引发单点故障)

  • 机器级:同一个机房,还有相同的很多机器可以顶上;

  • 机房级:有不同的机房,一个机房故障,其他顶上

  • 地域级:在不同的地域,有其他机房可以顶上

  • 行星级:在不同的星球,有其他机房可以顶上

  • 一个机器,一定是在某个地方的某个机房

    • 地方: 地域
    • 机房: 可用区

在这里插入图片描述

通俗解释:

  • 实例:一台云服务器
  • 块存储:云上的硬盘
  • 快照:系统、硬盘数据的备份
  • 弹性网卡:云上服务器的网卡
  • VPC:专有网络VPC(Virtual Private Cloud);组建局域网。需要用到交换机、内网IP
  • 内网IP:也叫私有IP,如果用VPC进行组网,每一个ecs都有自己的内网IP,在同一个VPC内这些IP可以互相访问
  • 公网IP:暴露给外界用的IP,可以在世界各地进行访问
  • 安全组:Linux的防火墙规则
  • 访问方式:如何登录进ecs进行操作。可以通过web控制台,也可以使用一些终端连接。
  • 地域:物理区,比如北京、上海、杭州。就是某个城市的机房。不同地域不能互通
  • 可用区:某个城市不只会有一个机房。众多机房合起来可以划分很多可用区。同一地域不同可用区可以互通

4. 图解

  • 地域:物理的数据中心。选择靠近客户的地域,可降低网络时延。不同地域的ECS之间内网隔离资源创建成功后不能更换地域
  • 可用区:在同一地域内电力和网络互相独立的物理区域。可用区主要用于故障隔离同一地域不同可用区的ECS之间内网互通

在这里插入图片描述

理解:

  • 假设阿里云有10万台服务器,每个服务器都是一个实例
  • 每个服务器开放哪些端口,需要通过安全组进行控制,这就是防火墙
  • 每个实例的操作系统在系统盘安装着。系统盘是云上的一块硬盘,这个硬盘我们也叫做 块存储
  • 每个实例的数据可以单独放在数据盘
  • 所有数据最好进行定期备份,这个机制我们成为快照。备份的数据,我们被封装为镜像,保存到阿里云专门的一些硬盘中;
  • 10万台服务器不可能放在一个城市,所以阿里云会在上海、北京、杭州等各个地方建立机房。每个城市都称为一个地域
  • 就算在一个地域,比如北京,有3000台服务器,这些服务器可能不在同一个机房,或者同一个大楼里面。假设A、B、C三栋大楼都有机房。那么A栋楼可以称为一个可用区A,B栋称为可用区B,同一个可用区内的机器是可以互相访问的,同一个地域不同可用区的也是可以互相访问的。同一个地域的所有实例,可以通过VPC自定义组网策略。
  • 不同地域之间默认不能互通,如果需要互通要开通专线
  • 可用区、地域都是为了物理隔离。比如A栋楼停电了,可以不影响B栋楼。A城市停电了,可以不影响B城市。容灾机制就是基于这种隔离实现的

5. 规格

在这里插入图片描述

6. 场景

在这里插入图片描述

2. ECS服务器开通

1. 开通服务器

阿里云体验版服务器申请

在这里插入图片描述

操作系统选好、设置账号密码

在这里插入图片描述

选择公共镜像 CentOS7.9 设置自定义密码

在这里插入图片描述

启动服务器

在这里插入图片描述

2. 连接服务器

推荐使用 WindTerm 软件。进行连接。

在这里插入图片描述

3. 云部署准备

以spzx-manager为例部署

我们先在云服务器安装spzx-manager需要的环境并配置好

然后修改spzx-manager的配置文件,打包

部署spzx-manager到云服务器测试

1. 1Panel介绍

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板 。1Panel 的功能和优势包括:

  • 快速建站:域名绑定、SSL 证书配置等一键搞定;
  • 高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理及常用应用软件管理;
  • 安全可靠:最小漏洞暴露面,提供防火墙和安全审计等功能;
  • 一键备份:支持一键备份和恢复,备份数据云端存储,永不丢失。

2. 安装1Panel

https://1panel.cn/docs/

下载安装1Panel

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

下载安装: 一路回车默认安装

在这里插入图片描述

保存好账号密码访问地址等信息:

在这里插入图片描述

3.安全组

上面安装1Panel后,需要使用端口号11293,ECS服务器需要再安全组中开放此端口

1. 简介

安全组是实例维度的虚拟防火墙,用于保护ECS实例的网络安全。

  • 安全组就像一栋房子的门禁系统,ECS实例在房子中。房子内的ECS实例默认是内网互通的,但有来访者或者内部人员外出,都需要通过检查。
  • 如果来访者不符合访问规则,则阻止进入;如果来访者符合访问规则,则可以进入。 同理,内部人员不符合外出规则,则阻止外出;如果内部人员符合外出规则,则可以外出

在这里插入图片描述

2. 实战

配置安全组规则,测试访问性

每个ECS都会绑定一个安全组。可以在左侧菜单,或者ECS服务器的操作中找到安全组的配置。

配置安全组

在这里插入图片描述

找到上面ECS服务器使用的安全组修改

在这里插入图片描述

新开放11293端口

在这里插入图片描述

4.访问1Panel面板

参考安装1Panel的公网地址使用账号密码访问

在这里插入图片描述

登录成功

在这里插入图片描述

5. 环境搭建

1.安装MySQL&Redis

在这里插入图片描述

MySQL

在这里插入图片描述

Redis

在这里插入图片描述

2.安装MinIO

在这里插入图片描述

在这里插入图片描述

3.导入MySQL库表

创建数据库db_spzx

在这里插入图片描述

导出尚品甄选项目原数据库的库表

在这里插入图片描述

ECS服务器MySQL导入库表数据

点击导入备份

在这里插入图片描述

点击上传 选择之前导出的spzx数据库sql文件

在这里插入图片描述

上传

在这里插入图片描述

恢复导入库表

在这里插入图片描述

4.安全组配置

开放Adminer:9853端口

在这里插入图片描述

安全组开放MySQL:3306端口

在这里插入图片描述

安全组开放MinIO:9000,9001端口

在这里插入图片描述

5.MySQL客户端工具安装使用

安装Adminer:MySQL客户端工具

在这里插入图片描述

使用Adminer连接MySQL:

在这里插入图片描述

在这里插入图片描述

设置Adminer服务器地址:使用ECS服务器地址

在这里插入图片描述

6.连接数据库

在这里插入图片描述

**输入账号密码:**使用云服务器IP连接

在这里插入图片描述

查看操作库表

在这里插入图片描述

7.Redis连接测试

在这里插入图片描述

8.MinIO创建桶

访问 阿里云服务器ip:9000 访问MinIO

账号密码按照安装时配置的输入

创建桶spzx访问权限设置为public
在这里插入图片描述

9.安装jdk

连接服务器打开终端

在这里插入图片描述

参考以下命令安装jdk17

cd /opt

wget https://download.java.net/java/GA/jdk17/0d483333a00540d886896bac774ff48b/35/GPL/openjdk-17_linux-x64_bin.tar.gz

tar -zxvf openjdk-17_linux-x64_bin.tar.gz

vim /etc/profile
#java_home
export JAVA_HOME=/opt/jdk-17
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

echo $JAVA_HOME

# 查看安装的jdk版本:如果能执行表示安装成功
java -version

4. 部署

1.spzx-manager打包

修改spzx-manager的application-dev.yml

数据库、minio连接地址修改为阿里云服务器的地址

redis地址修改为127.0.0.1

为了测试方便,修改

2.上传jar包

在这里插入图片描述

3.控制台启动spzx-manager

cd /opt
# 后台启动spzx-manager
nohup java -jar spzx-manager-1.0-SNAPSHOT.jar &

参考章节5.4安全组配置,开放spzx-manager端口8501

4.访问spzx-manager

http://ECS服务器IP:8501/doc.html

云设施实战

1. VPC

1. 简介

专有网络VPC(Virtual Private Cloud):https://www.aliyun.com/product/vpc

在这里插入图片描述

2. 网络划分

专有网络是您独有的云上虚拟网络,您可以将云资源部署在您自定义的专有网络中。

  • 云资源不可以直接部署在专有网络中,必须属于专有网络内的一个交换机(子网)内。
  • 交换机(vSwitch)是组成专有网络的基础网络设备,用来连接不同的云资源实例
  • 专有网络是地域级别的资源,专有网络不可以跨地域,但包含所属地域的所有可用区
  • 可以在每个可用区内创建一个或多个交换机来划分子网。

在这里插入图片描述

192.168.0.0/16 CIDR表示法,表示一个网络范围。

ip地址在线计算器 (520101.com)

132.26.0.0/14 网络范围有多大

3. 组成部分

每个专有网络都由至少一个私网网段、一个路由器和至少一个交换机组成。

在这里插入图片描述

1. 私网网段

对于不需要连接到Internet的一些网络,比如每个教室内的网络,只要同一网络中的网络设备的IP地址不冲突即可。在IP地址空间里,A、B、C三类地址中各预留了一些地址专门用于上述情况,称为私网IP地址。

在创建专有网络和交换机时,您需要以CIDR地址块的形式指定专有网络使用的私网网段。

您可以使用下表中标准的私网网段及其子网作为VPC的私网网段,也可以使用自定义地址段作为VPC的私网网段。更多信息,请参见网络规划

网段 说明
192.168.0.0/16 (A类) 可用私网IP数量(不包括系统保留地址):65,532
172.16.0.0/12(B类) 可用私网IP数量(不包括系统保留地址):1,048,572
10.0.0.0/8 (C类) 可用私网IP数量(不包括系统保留地址):16,777,212
自定义地址段 除100.64.0.0/10、224.0.0.0/4、127.0.0.0/8、169.254.0.0/16及其子网外的自定义地址段。
2. 路由器

系统自动创建,我们无需干预

路由器(vRouter)是专有网络的枢纽。作为专有网络中重要的功能组件,它可以连接专有网络内的各个交换机,同时也是连接专有网络和其他网络的网关设备。每个专有网络创建成功后,系统会自动创建一个路由器。每个路由器至少关联一张路由表。

更多信息,请参见路由表概述

3. 交换机

将VPC一个大的网段,划分成几个不同的小网段,这些小网段可以跨可用区互通,从而实现跨可用区的容灾机制

交换机(vSwitch)是组成专有网络的基础网络设备,用来连接不同的云资源。创建专有网络后,您可以通过创建交换机为专有网络划分一个或多个子网同一专有网络内的不同交换机之间内网互通。您可以将应用部署在不同可用区的交换机内,提高应用的可用性

更多信息,请参见创建和管理交换机

4. 实战

1. 创建VPC

创建VPC并规划交换机网段

在这里插入图片描述

在这里插入图片描述

2. 创建ECS

创建三台ECS,分别使用指定的VPC和交换机。用ping命令,测试三台机器的集群内联通性

结论:跨VPC的机器不互通,同一个VPC下的机器即使跨可用区(跨交换机)也互通。

VPC做环境隔离;

  • 生产环境:创建生产VPC(177.16.xx.xx/16)
  • 测试环境:创建测试VPC(188.11.xxx.xx/16)
  • 物理网络层隔离,不怕删库
2. 安装Nginx
#安装Nginx
yum install nginx

#启动nginx
systemctl start nginx

#查看Nginx位置
whereis nginx
# 修改 /etc/nginx/nginx.conf 端口为8080
port 8080

# 重启nginx
nginx -s reload

2. 云盘

1. 简介

  • 云盘采用多副本的分布式机制,具有低时延、高性能、持久性、高可靠等性能,可以为云服务器提供安 全可靠,性能优越的块存储服务。

  • 根据存储的数据类型和云盘的创建方式,云盘可以作为系统盘数据盘使用。

2. 图解

在这里插入图片描述

3. 块存储

在这里插入图片描述

4. 存储类型

在这里插入图片描述

5. 实战

1. 创建云盘

在这里插入图片描述

2. 查看状态

在这里插入图片描述

3. 挂载云盘
1. 选择挂载

在这里插入图片描述

2. 选择实例

在这里插入图片描述

3. 指定挂载点

在这里插入图片描述

4. 挂载完成

在这里插入图片描述

5. 登录验证

登录到云服务器使用 df -h 命令验证磁盘空间。看到 /mydata40G 即可

在这里插入图片描述

4. 卸载云盘
1. 查看磁盘信息

df -h: 确定挂载点为 /dev/vdb1

在这里插入图片描述

2. 卸载命令
umount /dev/vdb1
3. 删除残留数据

blkid: 查看磁盘分区信息

在这里插入图片描述

删除/etc/fstab中数据盘分区文件系统的自动挂载信息

  • vim /etc/fstab
  • 如果有残留的 /dev/vdb1 信息,注释或者删除即可
4. 卸载云盘

去阿里云管理控制台卸载磁盘

在这里插入图片描述

在这里插入图片描述

5. 删除云盘

在这里插入图片描述

3. 备份与镜像

1. 备份

在这里插入图片描述

2. 镜像

镜像提供了创建ECS实例所需的信息,包括实例的操作系统、初始化应用数据及预装的软件。镜像文件相当于副本文件,包含了一块或多块云盘中的所有数据。

3. 实战

前置:开通一个服务器,安装好nginx,修改index.html页面为自定义内容

1. 创建镜像

在这里插入图片描述

2. 根据镜像恢复ECS

创建ECS时,可以选择自定义镜像

在这里插入图片描述

4. SLB

1. 简介

负载均衡 (aliyun.com)

阿里云负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。 阿里云SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB,是阿里云官方云原生网关。

2. 家族

在这里插入图片描述

阿里云

负载均衡SLB

支持以下类型的负载均衡:

  • 应用型负载均衡ALB(Application Load Balancer):专门面向七层,提供超强的业务处理性能,例如HTTPS卸载能力。单实例每秒查询数QPS(Query Per Second)可达100万次。同时ALB提供基于内容的高级路由特性,例如基于HTTP报头、Cookie和查询字符串进行转发、重定向和重写等,是阿里云官方云原生Ingress网关。更多信息,请参见什么是应用型负载均衡ALB
  • 网络型负载均衡NLB(Network Load Balancer):面向万物互联时代推出的新一代四层负载均衡,支持超高性能和自动弹性能力,单实例可以达到1亿并发连接,帮您轻松应对高并发业务。NLB面向海量终端连接、高并发消息服务、音视频传输等业务场景针对性地推出了TCPSSL卸载、新建连接限速、全端口监听等高级特性,在物联网MQTTS加密卸载等场景为用户提供多种辅助手段,是适合IoT业务的新一代负载均衡。更多信息,请参见什么是网络型负载均衡NLB
  • 传统型负载均衡CLB(Classic Load Balancer):支持TCP、UDP、HTTP和HTTPS协议,具备良好的四层处理能力,以及基础的七层处理能力。更多信息,请参见什么是传统型负载均衡CLB

3. 对比

在这里插入图片描述

4. 实战

前置:开通3台ECS,安装Nginx,各自配置不同首页页面,测试可以被访问

1. 创建CLB

在这里插入图片描述

在这里插入图片描述

2. 配置CLB

在这里插入图片描述

3. 选择协议

在这里插入图片描述

4. 添加后台服务器

在这里插入图片描述

5. 原理

在这里插入图片描述

5. NAT

1. 简介

**NAT网关( Network Address Translation Gateway)**可以提供网络地址转换服务。阿里云提供公网NAT网关和VPC NAT网关两款产品。

  • 公网NAT网关提供公网地址转换服务
  • VPC NAT网关提供私网地址转换服务

可以根据业务需求灵活选择。

2. 场景

公网NAT网关的网络拓扑如下图所示。您可以选用公网NAT网关,满足您以下业务场景需求:

  • 如果您的云上网络只希望主动访问公网上的业务,而不希望云上的业务直接暴露在公网上从而有被攻击的风险,您可以选用公网NAT网关为业务提供安全防护能力。
  • 如果您的业务具有突增的访问公网的流量需求,您可以选用公网NAT网关为您提供灵活和弹性的扩容能力,并且只需要按使用量付费,节省企业成本。
  • 如果您有大量访问公网的机器,您可以通过公网NAT网关统一公网出口,并通过公网NAT网关准确和精细化的运维监控能力管理企业访问公网的流量。

在这里插入图片描述

3. 实战

1. 使用公网NAT网关SNAT功能访问互联网
1. 场景

某公司在阿里云创建了专有网络VPC(Virtual Private Cloud)和交换机,交换机中创建了多个ECS实例。ECS实例均未分配固定公网IP,也未绑定弹性公网IP(Elastic IP Address,简称EIP)。因公司业务发展,每台ECS实例都需要访问互联网。

解决:

  • 可以通过公网NAT网关的SNAT功能,配置SNAT条目,使得VPC内无公网IP的ECS实例可以通过公网NAT网关绑定的EIP访问互联网。

在这里插入图片描述

2. 配置

注意:VPC中不存在目标网段为0.0.0.0/0的自定义路由。如果存在,请删除该路由条目。

步骤:

在这里插入图片描述

前置:

  • 准备vpc,在vpc下绑定两台ecs,没有公网ip

在这里插入图片描述

  • 验证不可访问公网ip

在这里插入图片描述

3. 步骤一: 创建公网NAT网关

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

确认订单数据:

在这里插入图片描述

等待创建

在这里插入图片描述

确认公网IP地址:

在这里插入图片描述

4. 步骤二: 创建SNAT条目
  1. 公网NAT网关页面,找到目标公网NAT网关实例,然后在操作列单击设置SNAT
  2. SNAT管理页签,单击创建SNAT条目
  3. 创建SNAT条目页面,配置参数,然后单击确定创建

在这里插入图片描述

在这里插入图片描述

结果:

在这里插入图片描述

5. 步骤三: 测试联通性

在这里插入图片描述

公网NAT:

  • SNAT只是保证同一个vpc下的ecs可以访问公网,并不是保证从公网可以访问ecs
  • DNAT可以让公网访问某个ecs
2. 使用公网NAT网关DNAT功能实现ECS对外提供服务
1. 场景

某公司在阿里云创建了ECS实例,并在ECS实例上部署了应用服务,但未给ECS实例分配固定公网IP,也未绑定弹性公网IP(Elastic IP Address,简称EIP)。因公司业务发展,公司计划通过公网NAT网关DNAT功能的IP映射或者端口映射方式,实现ECS实例面向互联网提供服务。

在这里插入图片描述

2. 配置

在这里插入图片描述

3. 步骤:在原有的NAT上直接配置DNAT

在这里插入图片描述

  • 给223机器安装nginx,验证可以通过公网ip访问到这个机器的nginx
3. 原理

在这里插入图片描述

6. 销毁资源

所有实验完成都记得销毁资源。

7. 实验作业

SLB、EIP、NAT、ECS、EBS、VPC、安全组

  • 起三台服务器
  • 自己写一个SpringBoot应用,数据库查询数据,以json返回给浏览器
  • 部署到三台服务器集群,
  • 并进行负载均衡部署,测试访问性
  • 购买域名,搭建完整访问环境

云上演练: 云上高并发Web架构

1. 高并发理论

1. 特点

在互联网行业业务发展中,Web 应用具有间歇性高并发的特点,常见于电商,社交,文娱等行业之中。可以通过负载均衡动态、静态内容分离加速,应用服务器、数据库弹性伸缩以及采用高效缓存等机制提高应用整体性能及响应时间

另外,借助应用监控应用防护性能测试等产品,可为互联网业务在上线前及营销活动间隙提前测试和评估业务系统的承载能力,发现性能瓶颈,提前优化资源配置;更可提供流量控制、应用模块降级、故障演练等能力,从而全面提升业务稳定性。

本次以部署 Wordpress 应用为例,介绍云上高并发 Web 架构模型以及云产品选择、资源部署、基础监控、应用实时监控、性能测试、应用防护的最佳实践。

2. 定义

Web高并发并没有一个绝对的定义,一般认为Web高并发就是在互联网业务中某个时间点或者极短的时间内Web应用有大量的访问请求的场景

3. 衡量指标

1. RT

Response Time,响应时间

系统对请求做出响应的时间。响应时间越短,系统性能越高。

  • 一般互联网应用的响应时间要求在500ms以内
  • 对用户体验流畅度有高要求的,不高于200ms,甚至100ms以内
  • 应用系统内部之间的调用要求更低,一般10ms左右
2. RPS

Request Per Second,每秒请求数 rps = 500/s

3. QPS

Query Per Second,每秒查询数 rps = qps = 500/s

4. TPS

Transation Per Second,每秒事务

QPS(TPS)= 并发请求数/平均响应时间

TPS一般用来衡量业务系统流程处理能力

QPS用来衡量接口查询处理能力

面试题:

  • uv(Unique visitor): 唯一用户访问。 100; 当天用户访问量
  • pv(Page View):页面浏览量: pv > uv ; 当天页面访问量
  • 峰值在线用户数:100;
  • qps: 大于在线用户数的10倍
  • 2-8原则:
    • 模拟网站注册用户数1w; 80% 僵尸号 20%有效号; 2k用户;
      • uv: 20%有效用户会访问我们; 400用户;
      • pv: 4000 - 20000;
      • rps/qps: r/q:4000x200 - 20000x200 = 80w ~ 400w
      • 2-8: 80%的请求在 20%的时间内会被访问
        • 400w x 80% = 320w / (24x3600x20%)= 17,280s
          • qps: 185/s
          • 峰值: 320wx80% / 24x3600x20%x20% = 256w / 3,456 = 740/s

京东:日活 9千万; 京东用户总量:

yx20%= 9kw = 4亿多;

常见量级

  • 互联网小型网站:500~10000 TPS
  • 互联网中型网站:1000 ~ 50000 TPS
  • 互联网电子商务:10000 ~ 1000000 TPS
5. 成功率

成功率越高,系统稳定性越好。要求一般不低于99.6%

高并发:快、

4. 本质

高并发的本质是构建服务的资源不足以支撑稳定的服务提供,出现了响应缓慢,甚至服务不可用,导致业务中断。因此应对高并发的策略简单来说就是“开源节流”。

开源:指通过服务端的优化和资源提升来提高每个请求的处理速度

节流:客户端能不访问服务端就不要访问

5. 应对

1. 客户端

能不访问服务端就不要访问,即使访问少量访问

尽量减少请求数量,降低数据传输量,比如:客户端提供缓存使用数据压缩传输使用异步接口按需获取数据等

2. 服务端

提高单个请求的处理速度

  • 提升基础设施性能
    • 更高计算能力的服务器
    • 更高性能的数据库、存储;
    • 更大服务端内存,缓存
    • 更大的网络带宽
    • 更高的网络质量
  • 应用优化
    • 应用模块化、使用集群、分布式架构
    • 动态资源与静态资源分离,使用CDN加速
    • 使用更高效的编程语言
    • 优化业务流程、业务逻辑算法、访问数据库的SQL语句
  • 数据库优化
    • 合理的表结构、索引
    • 使用数据库集群,读写分离
    • 合理配置数据库缓存
    • 高性能的SSD

垂直优化:单机性能优化到强劲。(CPU、内存、硬盘、缓存、软件参数…)

水平优化:集群化负载均衡。(集群、分片、复制、负载均衡…)

2. 高并发架构

1. 架构图

在这里插入图片描述

2. 流程

1、需要3个eip(弹性公网IP),因为eip是公网ip,全球能访问到的。

  • 第一个eip,会绑定slb,因为网站域名最终解析到slb的公网ip,流量会通过slb转给ecs集群
  • 第二个eip是某个ecs的公网ip,因为我们要连上ecs进行服务器环境安装。
  • 第三个eip是nat网关的ip,因为阿里云的监控系统数据需要通过走公网汇报。所以必须有公网ip

2、需要2个ecs;模拟集群。ess保证ecs的弹性扩缩容

3、对象存储oss,负责把所有的静态资源都能进行加速访问。

4、静态资源数据其实是保存到nas的

5、PTS、CMS、ARMS、AHAS都是周边治理设施

3. 涉及产品

⚫ 负载均衡 SLB:提供负载均衡服务,用来做流量分发及应用服务器容错保护
⚫ 内容分发 CDN:内容分发网络,提供静态资源的加速访问
⚫ 专有网络 VPC:搭建各个组件的网络访问环境
⚫ 云服务器 ECS:阿里云服务器,用来运行业务应用程序
⚫ 弹性伸缩 Auto Scaling:提供自动化/半自动化ECS资源伸缩能力,
⚫ 对象存储 OSS:存储网站图片、小文件、js、css等静态数据
⚫ 文件服务 NAS:统一存储应用代码及客户上传原文件
⚫ 云数据库 PolarDB:阿里云自研数据库,为业务系统提供弹性、高性能的数据库服务
⚫ 云数据库 Redis:提供服务端缓存
⚫ 云监控 CloudMonitor:监控云服务
⚫ 应用实时监控 ARMS:应用性能管理服务,监测应用接口、访问数据库等的性能
⚫ 应用高可用 AHAS:为应用接口提供流控及流量防护
⚫ 性能测试 PTS:测试应用性能

4. 产品介绍

专有网络 VPC:是用户基于阿里云创建的自定义私有网络,不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、负载均衡、RDS等 。 https://www.aliyun.com/product/vpc

云服务器 ECS:是一种简单高效、处理能力可弹性伸缩的计算服务。ECS 帮助您构建更稳定、安全的应用,提升运维效率,降低 IT 成本,使您更专注于核心业务创新。

https://www.aliyun.com/product/ecs

弹性伸缩 Auto Scaling:是根据用户的业务需求和策略,经济地自动调整弹性计算资源的管理服务,不仅适合业务量不断波动的应用程序, 同时也适合业务量稳定的应用程序。 https://www.aliyun.com/product/ecs/ess

对象存储 OSS:是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。OSS 的容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。

https://www.aliyun.com/product/oss

云文件存储 NAS:是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。兼容 POSIX 文件接口,可支持数千台计算节点共享访问,可以挂载到弹性计算 ECS、神龙裸金属、容器服务 ACK、弹性容器 ECI、批量计算 BCS、高性能计算 EHPC,AI 训练 PAI 等计算业务上提供高性能的共享存储,用户无需修改应用程序,即可无缝迁移业务系统上云。https://www.aliyun.com/product/nas

云数据库 PolarDB:阿里云自研的云原生关系型数据库,拥有三个独立的引擎,分别 100%兼容 MySQL、100%兼容 PostgreSQL、高度兼容 Oracle 语法,适用于企业多样化的数据库应用场景。PolarDB 采用存储和计算分离的架构,所有计算节点共享一份数据,提供分钟级的配置升降级、秒级的故障恢复、全局数据一致性和免费的数据备份容灾服务。PolarDB 既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、自我迭代的优势。https://www.aliyun.com/product/polardb

云数据库 Redis 版:高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。https://www.aliyun.com/product/kvstore

云监控 CloudMonitor:是一项针对阿里云资源和互联网应用进行监控的服务。云监控服务可用于收集获取阿里云资源的监控指标,探测互联网服务可用性,以及针对指标设置警报https://www.aliyun.com/product/jiankong

应用实时监控 ARMS:是一款应用性能管理产品,包含前端监控,应用监控和Prometheus 监控三大子产品,涵盖了浏览器,小程序,APP,分布式应用和容器环境等性能管理,可实现全栈式的性能监控和端到端的全链路追踪诊断, 让应用运维从未如此轻松高效。https://www.aliyun.com/product/arms

应用高可用 AHAS:是专注于提高应用及业务高可用的工具平台,目前主要提供应用架构探测感知,故障注入式高可用能力评测 和 流控降级高可用防护 三大核心能力,通过各自的工具模块可以快速低成本的在营销活动场景、业务核心场景全面提升业务稳定性和韧性。https://www.aliyun.com/product/ahas

性能测试 PTS:是面向所有技术背景人员的云化测试工具。有别于传统工具的繁复,PTS 以互联网化的交互,提供性能测试、API 调试和监测等多种能力。自研和适配开源的功能都可以轻松模拟任意体量的用户访问业务的场景,任务随时发起,免去繁琐的搭建和维护成本。更紧密结合监控、流控等兄弟产品提供一站式高可用能力,高效检验和管理业务性能。https://www.aliyun.com/product/pts

云速搭 CADT:是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供大量预制的应用架构模板,同时也支
持自助拖拽方式定义应用云上架构;支持大量阿里云服务的配置和管理。用户可以方便的对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。

https://help.aliyun.com/product/182827.html

5. 资源规划

云产品 配置项 描述
专有网络 名称 vpc
IPv4 网段 192.168.0.0/16
交换机名称 vswitch
可用区 华北 2(北京) 可用区 H
IPv4 网段 192.168.0.0/24
ECS x 2 计费方式 按量付费
地域 华北 2(北京) 可用区 H
实例 ecs.g5ne.xlarge
镜像 [公共镜像] CentOS 7.9 64 位
存储 [系统盘] SSD 云盘 40 GiB
网络 [专有网络] vpc
登录凭证 自定义密码
登录密码 设置符合要求的 root 账号的密码
实例名称 wp1, wp2
EIP x 2 付费方式 后付费
EIP 名称 eip-sa, eip
地域 华北 2(北京)
带宽峰值 10Mbps, 100Mbps
流量 按使用流量计费
PolarDB 付费方式 按量付费
地域 华北 2(北京)可用区 H(主),可用区 G(备)
数据库类型 MySQL
版本 5.6
系列 集群版
网络类型 [专有网络] vpc
规格 polar.mysql.x4.large
Redis 计费方式 按量付费
地域 华北 2(北京)可用区 H,可用区 G(备)
网络类型 [专有网络] vpc
版本类型 企业版
系列类型 性能增强型
版本 5.0
架构类型 Cluster
分片数 2
实例规格 4G 集群性能增强版(2 节点)
SLB 计费方式 按量付费
地域 华北 2(北京)可用区 H(主),可用区 G(备)
网络类型 [专有网络] vpc
网络付费类型 按流量付费
访问地址类型 Intranet
规格 slb.s2.small
OSS Bucket 名称 my-wpimg
地域 华北 2(北京)
存储类型 标准存储
读写权限 公共读
NAS NAS 组名 nas_wp
地域 华北 2(北京)可用区 H
交换机名称 vswitch
协议类型 NFS
存储类型 容量型
CDN 域名 cdn.example.com
业务类型 图片、小文件
加速区域 仅中国内地
NAT 网关 规格 Small
地域 华北 2(北京)可用区 H
付费方式 后付费

3. 高并发实战

1. 快捷访问

先添加我们架构将要用到的所有产品的快速访问入口。

  • 登录阿里云
  • 搜索产品
  • 点击收藏按钮

在这里插入图片描述

2. 创建VPC

在这里插入图片描述

3. 创建PolarDB

1. 创建资源

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 集群配置

在这里插入图片描述

在这里插入图片描述

3. 实例配置
1. 创建用户

步骤1: 进入实例列表,点击进入实例详情

步骤2: 在账号管理中选择创建账号。

步骤3: 创建 Wordpress 应用连接数据库账号 wp_dbuser。

步骤4: 确认创建成功。

在这里插入图片描述

2. 创建数据库

为 Wordpress 应用创建数据库并授权数据库用户读写权限。

步骤1:在数据库管理中选择创建数据库。

步骤2: 创建 Wordpress 应用数据库 wp_db,并授权已创建的数据库用户 wp_dbuser 对数据
库拥有读写权限。

步骤3: 确认创建成功。

3. 确认白名单

确认集群白名单中 default 分组的配置已加入 Wordpress 应用服务器所在 IP 段。

1687255955384

4. 获取实例地址

在这里插入图片描述

复制弹出的地址

在这里插入图片描述

pc-bp1nr4241h47s84ny.mysql.polardb.rds.aliyuncs.com:3306

5. 设置自动扩容

如果生产应用,可以设置自动扩容机制,当前示例应用不做设置

在这里插入图片描述

4. 创建Redis

1. 创建资源

进入redis控制台

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 配置免密访问

为 Redis 配置同一 VPC 内免密访问。

步骤1: 在实例列表页面,单击实例 ID 进入实例详情页。

步骤2: 为 Redis 配置同一 VPC 内免密访问。

步骤3: 确认配置成功。

在这里插入图片描述

显示为灰色则代表配置成功

在这里插入图片描述

3. 获取实例地址

刷新实例信息页面

在这里插入图片描述

本例地址: r-bp1evay4r509y2mghu.redis.rds.aliyuncs.com

5. 创建NAS

Web 应用的程序文件保存在共享的文件存储中,所有应用程序服务器通过挂载该共享存储来读取程序文件。示例的 Wordpress 应用还有存储上传的图片、附件等需求,也统一存储到在文件存储中。
本章介绍文件存储 NAS 实例的初始化配置:为 NAS 服务配置权限组、权限规则;为NAS 实例挂载点权限组。

1. 创建权限组及权限规则

步骤1:登录 NAS 文件系统控制台(https://nasnext.console.aliyun.com/)。

步骤2:创建权限组 nas_wp。

步骤3: 进入权限组 nas_wp 规则管理界面

步骤4:为权限组 nas_wp 添加权限规则。

步骤5:设定规则:允许 VPC 的 IP 段有匿名读写访问权限。

步骤6:确认权限规则创建成功。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 创建NAS实例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

默认已经有一个挂载点

在这里插入图片描述

3. 为 NAS 实例挂载点配置权限组

步骤1:进入文件系统列表,选择 NAS 实例管理操作。

步骤2: 在挂载使用页面下为挂载点修改权限组

步骤3: 确认修改成功,记录挂载命令备用。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

复制出来挂载命令如下:

sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 06ec248f5a-uca59.cn-hangzhou.nas.aliyuncs.com:/ /mnt

6. 创建ECS

1. 创建资源

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

暂时不要公网地址,后面进行绑定

在这里插入图片描述

在这里插入图片描述

2. 绑定EIP

参照《8. 创建EIP》 先创建一个EIP,绑定到一台ECS中。

在这里插入图片描述

7. 部署应用

1. 远程连接

步骤1:可以使用ssh通过公网ip连接,也可以使用web远程连接

步骤2:连接上任意一台,安装好应用以后,打包镜像,另一台机器使用更换镜像的方式一键安装

在这里插入图片描述

在这里插入图片描述

2. 安装Nginx
# 安装nginx
yum install -y nginx
# 开机启动
systemctl start nginx
systemctl enable nginx
# 验证访问
3. 安装PHP
# 安装php7
## 运行以下命令,添加EPEL源。
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y --enablerepo=remi-php73 php php-fpm php-mysqlnd php-cli

#确认 PHP-FPM 监听端口为 9000。
cat /etc/php-fpm.d/www.conf | grep 'listen ='

在这里插入图片描述

#确认 PHP-FPM 最大、自小空闲服务进程数配置。
cat /etc/php-fpm.d/www.conf | grep 'spare_servers ='

在这里插入图片描述

4. 创建Nginx虚拟主机

为 Wordpress 创建 Nginx 虚拟主机。

步骤1:创建 Nginx 虚拟主机配置文件。

步骤2:根据配置文件创建相关目录。

步骤3:验证配置文件正确性。

步骤4:重启相关服务。

#修改配置
vim /etc/nginx/conf.d/wordpress.conf

#内容如下
server {
    listen 80;
    server_name _; # _代表所有,这里可以写一个域名进行测试,比如lfyblog.com
    access_log /usr/share/nginx/wordpress_logs/access.log;
    error_log /usr/share/nginx/wordpress_logs/error.log;
    location / {
        root /usr/share/nginx/wordpress;
        index index.php index.html index.htm;
        try_files $uri $uri/ =404;
	}
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    	root /usr/share/nginx/html;
    }
    location ~ \.php$ {
        fastcgi_pass localhost:9000; # port where FastCGI processes were spawned
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME 
        /usr/share/nginx/wordpress$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

## 根据配置文件创建相关目录。
mkdir -p /usr/share/nginx/wordpress
mkdir -p /usr/share/nginx/wordpress_logs
# 验证配置文件正确性。
nginx -t

在这里插入图片描述

5. 重启服务
systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx


# 如果修改了nginx配置文件,可以进行热启动
nginx -s reload
6. 验证访问
1. ip访问
echo "<?php phpinfo(); ?>" > /usr/share/nginx/wordpress/info.php

#访问 http://47.99.167.211/info.php

在这里插入图片描述

2. 域名访问

如果上一步Nginx配置了域名。则可以修改本机域名映射,最终通过域名访问

在这里插入图片描述

注意,一段时间以后域名访问会失效,因为阿里云会进行备案验证

在这里插入图片描述

7. 挂载NAS

前提:在 《3.5. 创建NAS》步骤中已经创建完成好了NAS系统

sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 3616f4948a-gcc51.cn-shanghai.nas.aliyuncs.com:/ /usr/share/nginx/wordpress


echo "3616f4948a-gcc51.cn-shanghai.nas.aliyuncs.com:/ /var/www/html nfs vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport" >> /etc/fstab
#安装nfs工具
yum install -y nfs-utils

#挂载 NAS 实例。根据复制的挂载命令,修改挂载点为 wordpress 应用安装目录 /usr/share/nginx/wordpress
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 0f62e4925a-anh55.cn-hangzhou.nas.aliyuncs.com:/ /usr/share/nginx/wordpress


#配置开机自动挂载NAS实例,根据挂载命令,为 fstab 文件添加自动挂载配置。 注意修改为你的NAS地址
echo "0f62e4925a-anh55.cn-hangzhou.nas.aliyuncs.com:/ /usr/share/nginx/wordpress nfs vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport" >> /etc/fstab
8. 安装WordPress
1. 基础安装
cd ~

# 下载应用
#wget https://cn.wordpress.org/latest-zh_CN.tar.gz
wget https://cn.wordpress.org/wordpress-6.3-zh_CN.tar.gz
#解压程序包。
tar -zvxf wordpress-6.3-zh_CN.tar.gz

# 根据示例配置文件创建 wordpress 配置文件,编辑配置文件,设置数据库连接信息。
cp wordpress/wp-config-sample.php wordpress/wp-config.php
vim wordpress/wp-config.php

# 内容如下 填写Polardb的连接信息
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wp_db' );
/** MySQL database username */
define( 'DB_USER', ' wp_dbuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );
/** MySQL hostname */
define( 'DB_HOST', 'pc-xxxxxxxxxxxx3x19tl.rwlb.rds.aliyuncs.com' );

# 修正程序文件属性并部署至虚拟主机服务目录。
# -r -v -f
cp -rvf wordpress/* /usr/share/nginx/wordpress/

# Wordpress 应用初始化安装配置。
浏览器打开 http://myblog.xianwang2019.com/wp-admin/install.php
注意:请根据实际情况自替换主域名。
2. 初始化

在这里插入图片描述

在这里插入图片描述

3. 添加Redis缓存支持
#回到 wp1 的 SSH 远程窗口,下载 Redis 插件。
cd ~
wget https://downloads.wordpress.org/plugin/redis-cache.2.0.17.zip

#安装解压工具 unzip。
yum install -y unzip
unzip redis-cache.2.0.17.zip

#安装插件。
cp -rf redis-cache /usr/share/nginx/wordpress/wp-content/plugins/
cp /usr/share/nginx/wordpress/wp-content/plugins/redis-cache/includes/object-cache.php /usr/share/nginx/wordpress/wp-content/

#更新 wordpress 配置文件,增加 Redis 配置信息。
vim /usr/share/nginx/wordpress/wp-config.php

#内容如下
#配置 Reids 的连接地址,我们已配置免密登录,密码不用配置。相关信息已在第 3 章
#设置并获取,填入相应的配置项保存退出。
### 在 wp-config.php MySQL 设置后增加 redis 数据库信息:
/** redis object cache 配置 **/
/** Redis 主机 */
define('WP_REDIS_HOST', 'r-**********.redis.zhangbei.rds.aliyuncs.com');
/** Redis 端口 */
define('WP_REDIS_PORT', '6379');
/** 接受用于使用该 SELECT 命令自动选择逻辑数据库的数值,不用修改 */

在这里插入图片描述

4. 启用redis插件

回到 Wordpress web 控制后台启用 Redis 插件。

在这里插入图片描述

5. 确认已连接

在这里插入图片描述

仪表盘也有监控

在这里插入图片描述

9. 创建镜像

在这里插入图片描述

10. 更换系统镜像

另一台ECS直接更换系统镜像即可拥有安装好的所有功能,包括挂载的nas盘。需要在ECS停止状态下操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

11. 验证测试
1. 解绑EIP

把之前ECS绑定的EIP换绑到新换系统的ECS上,访问测试wordpress是否正常运行

在这里插入图片描述

2. 绑定EIP

在这里插入图片描述

3. 访问测试

访问 http://47.99.167.211 ,一切正常

8. 创建EIP

EIP x 2

1. 创建资源

在这里插入图片描述

在这里插入图片描述

9. 创建NAT

10. 创建SLB

1. 创建资源

在这里插入图片描述

在这里插入图片描述

2. 配置负载均衡

在这里插入图片描述

1. 配置协议

在这里插入图片描述

2. 配置服务器组

在这里插入图片描述

3. 指定监听端口

在这里插入图片描述

确认结果

在这里插入图片描述

4. 提交配置

在这里插入图片描述

5. 获取SLB公网IP

在这里插入图片描述

6. 访问测试

访问SLB地址:http://114.55.249.248/,访问正常

在这里插入图片描述

11. 对象存储&CDN

对于站点的静态内容加速访问,如图片、小文件等可将其托管至 OSS 并启用 CDN 支持;同时使用 OSS 和 CDN 也可有效降度存储及带宽成本。本例中我们选择 WPJAM Basic 插件来实现静态资源托管至 OSS 并使用 CDN 进行访问加速。

1. WPJAM Basic 插件
1. 安装

步骤1:登录ECS,下载 cdn-enabler 插件,并解压、安装。

wget https://downloads.wordpress.org/plugin/cdn-enabler.2.0.8.zip
unzip cdn-enabler.2.0.8.zip
cp -rvf cdn-enabler /usr/share/nginx/wordpress/wp-content/plugins/

步骤2:回到 Wordpress web 控制后台启用 CDN Enabler 插件。

在这里插入图片描述

2. 配置

在这里插入图片描述

3. CDN

要是用CDN,先要开通CDN,CDN还需要绑定域名,域名需要备案才能用。我们为了测试,选择全球加速,不包含中国区,即可跳过备案

在这里插入图片描述

这里的域名,不用着急设置,先配置下面

2. 配置OSS

配置对象存储,与镜像回源;

WPJam 插件是利用 OSS 的镜像回源方式实现图片文件自动托管至 OSS 并使用 CDN加速。

1. 创建OSS

在这里插入图片描述

2. 配置镜像回源

在这里插入图片描述

3. 设置回源规则

在这里插入图片描述

注意:这里的地址推荐用稳定的域名或者ip或者负载均衡地址

4. 设置CDN加速域名

在这里插入图片描述

5. 配置CDN加速

在这里插入图片描述

6. 确认CDN加速信息

在这里插入图片描述

在这里插入图片描述

选择一键配置

7. 配置域名CNAME

在这里插入图片描述

在这里插入图片描述

3. CDN开通
1. 创建CDN

在这里插入图片描述

可以不着急做这一步

4. 验证
1. 发表图文

发表一片图文博客。

在这里插入图片描述

2. 访问图文

在这里插入图片描述

3. 图片地址

审查元素,发现图片的地址是CDN的地址

在这里插入图片描述

4. OSS验证

访问对象存储,发现真实存在这个文件

在这里插入图片描述

5. 对象回源原理

在这里插入图片描述

4. 高并发运维

1. ARMS

应用实时监控服务 (Application Real-Time Monitoring Service, 简称ARMS) 是一款应用性能管理产品,含前端监控应用监控Prometheus监控三大子产品,涵盖了浏览器小程序APP分布式应用容器环境等性能管理,能帮助你实现全栈式的性能监控端到端的全链路追踪诊断, 让应用运维从未如此轻松高效。

ARMS 支持以 SDK 及探针模式监控 PHP 应用。推荐使用 SDK 接入的方式,本例中,为实现对应用代码的零侵入,采用探针模式接入。

1. 开通服务

在这里插入图片描述

2. 接入应用
1. 安装Agent

默认支持多种应用接入。新版没有列出PHP。仅支持如下应用监控

在这里插入图片描述

2. Java监控

可以自行根据Java应用引导,进行Java应用监控

2. AHAS

应用高可用服务(Application High Availability Service)是一款专注于提高应用高可用能力的SaaS产品,包含流量防护、故障演练、功能开关和多活容灾四大独立的功能模块。

AHAS 应用防护可以接入多种语言的应用,包括 JAVA、PHP、GO 等。当应用接入到AHAS 应用防护后,可以对其配置流控、降级、隔离等规则来保证系统的稳定性。推荐使用 SDK 接入的方式;如果应用使用的第三方组件和框架在支持组件列表中,则通过 Agent 接 入 方 式 无 需 修 改 代 码 即 可 完 成 , 详 细 说 明 参 见https://help.aliyun.com/document_detail/131232.html。本例中,为实现对应用代码的零侵入,采用 Nginx 防护模式接入。

1. 开通AHAS
  1. 打开AHAS开通页面。
  2. 应用高可用服务-免费版页面阅读并选中应用高可用服务-免费版服务协议,然后单击立即开通
  3. 更多参照AHAS官方文档:https://help.aliyun.com/document_detail/101410.html 进行实战演练
2. Nginx防护

步骤1:登录 AHAS 控制台。(https://ahas.console.aliyun.com/)
步骤2:选择地域,选择流量防护 > Nginx 防护页面,并单击 Nginx 接入

在这里插入图片描述

根据流程进行配置

1. 下载 AHAS Sentinel Sidecar
#登录ecs
#下载
curl -L -O https://ahasoss-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/sidecar/latest/ahas-sentinel-sidecar-linux.tar.gz
#解压
tar -xvzf ahas-sentinel-sidecar-linux.tar.gz -C /opt/
2. Nginx Sentinel 模块配置

Nginx Sentinel 动态模块文件位于 sidecar 目录的 lib/-nginx- 子目录下。由于 Nginx 自身限制,预编译 Nginx 动态模块与 Nginx 版本和配置绑定。我们目前提供了以下主流 GNU/Linux 64 位系统和 Nginx 版本的预编译动态模块:

操作系统 Nginx 版本 动态模块路径
Ubuntu 18.04 nginx-1.14.0 lib/ubuntu-18.04-nginx-1.14.0/ngx_sentinel_module.so
CentOS 6 nginx-1.10.3 lib/centos6-nginx-1.10.3/ngx_sentinel_module.so
CentOS 7 nginx-1.16.1 lib/centos7-nginx-1.16.1/ngx_sentinel_module.so
#给nginx配置文件要添加以下配置
load_module "/opt/ahas-sentinel-sidecar-linux/lib/centos7-nginx-1.20.1/ngx_sentinel_module.so";

sentinel_init sidecar unix:/tmp/sentinel-sidecar.sock;

sentinel_sidecar_run "/opt/ahas-sentinel-sidecar-linux/bin/sentinel-sidecar.sh" --app=lfyblog ;

在这里插入图片描述

3. 修改nginx配置文件
vim /etc/nginx/nginx.conf
#在文件开头添加内容如下
load_module "/opt/ahas-sentinel-sidecar-linux/lib/centos7-nginx-1.20.1/ngx_sentinel_module.so";

sentinel_init sidecar unix:/tmp/sentinel-sidecar.sock;

sentinel_sidecar_run "/opt/ahas-sentinel-sidecar-linux/bin/sentinel-sidecar.sh" --app=lfyblog ;

在这里插入图片描述

4. 检查并激活配置
nginx -t
systemctl restart nginx
5. 确认接入结果

回到 Nginx 防护页面,确认接入的 Nginx 网关。

在这里插入图片描述

3. 自定义流控规则

在这里插入图片描述

5. 集群化构建

1. 应用镜像

之前机器所有软件环境都已经安装好,配置好。只需要制作成镜像,新机器按照这个镜像启动即可。

在这里插入图片描述

2. ECS重置

通过给ECS更换系统镜像的方式,快速让新的ECS应用上最新镜像。

注意: 关机 后 选择 更换操作系统

在这里插入图片描述

3. 确认SLB

在这里插入图片描述

4. 弹性伸缩

接入弹性伸缩 Auto Scaling 服务,使得应用服务器集群具备根据业务负载动态伸缩资源的能力。

1. 初始配置

步骤1:登录弹性伸缩控制台。(https://essnew.console.aliyun.com/)
步骤2:创建服务关联角色(如需)。

在这里插入图片描述

2. 创建伸缩组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 确认伸缩配置

在这里插入图片描述

4. 创建伸缩规则
1. 扩容规则

在这里插入图片描述

2. 缩容规则

在这里插入图片描述

5. 创建报警任务

当系统指定指标发生阈值过界,则进行报警,报警会触发自动伸缩规则,不同的报警执行不同的伸缩规则即可。

1. CPU负载报警 - 扩容

在这里插入图片描述

在这里插入图片描述

2. CPU负载报警 - 缩容

在这里插入图片描述

在这里插入图片描述

3. 暂停报警任务

在这里插入图片描述

5. 配置云监控

1. 安装监控插件

在这里插入图片描述

2. 查看监控数据

在这里插入图片描述

在这里插入图片描述

6. 配置NAT服务

ARMS Agent 访问服务端需要公网访问能力,为 NAT 网关配置 SNAT 策略。

1. 创建NAT

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 确认SNAT规则

在这里插入图片描述

在这里插入图片描述

6. 高并发压测

1. PTS使用

PTS(Performance Testing Service)是面向所有技术背景人员的云化测试工具。有别于传统工具的繁复,PTS以互联网化的交互,提供性能测试、API调试和监测等多种能力。自研和适配开源的功能都可以轻松模拟任意体量的用户访问业务的场景,任务随时发起,免去繁琐的搭建和维护成本。更是紧密结合监控、流控等兄弟产品提供一站式高可用能力,高效检验和管理业务性能。

本章介绍使用性能测试 PTS 对 Web 应用进行性能测试。结合实时监控、应用高可用产品检验 Web 应用的高并发能力。
测试方案分为三轮压力测试:
第一轮:弹性伸缩规则停用、AHAS 流量防护停用。
第二轮:弹性伸缩规则启用、AHAS 流量防护启用自适应策略。
第三轮:弹性伸缩规则启用、AHAS 流量防护启用自定义策略。

1. 购买PTS资源包

在这里插入图片描述

在这里插入图片描述

2. 创建PTS场景

在这里插入图片描述

3. 施压配置

以下为参考配置,需要自行修改合适的值

在这里插入图片描述

在这里插入图片描述

4. 调试场景

都配置好后,先进行场景调试。

在这里插入图片描述

确认调试成功后返回。

在这里插入图片描述

最终配置

在这里插入图片描述

2. 多轮压测

1. 第一轮压测

本轮压测弹性伸缩报警任务停用、AHAS 流量防护停用。

1. 压测启动

在这里插入图片描述

在这里插入图片描述

等待压测执行

在这里插入图片描述

2. 压测停止

当发现大量错误就可以停止压测了

在这里插入图片描述

3. 结果分析

在这里插入图片描述

发现,当并发到达30以后,成功率开始下降,出现错误。平均RT时间也成倍增加。两台机器的TPS仅为8,单台平均为4

4. 设置基线

将此次压测结果设置为基线,方便以后的压测与基线进行对比,从而看到提升结果。

在这里插入图片描述

在这里插入图片描述

2. 第二轮压测 - 不用做

本轮压测弹性伸缩报警任务启用、AHAS 流量防护启用自适应策略。

1. 启用伸缩规则
  1. 登录 弹性伸缩 控制台,启用报警任务。
  2. CPU 负载小于 20%的报警状态是正常的,在无负载情况下,手动加入伸缩组的固定应用服务器 wp1、wp2 的负载小于 20%,但伸缩组最少服务器为 2 台,故不会触发释放缩容。

在这里插入图片描述

2. 启用流量防护
  1. 登录 AHAS 控制台。(https://ahas.console.aliyun.com/),进入 blog 应用概览页面。
  2. 启用自适应流控。AHAS 支持多种防护规则,可根据需求自行配置使用,详情参见产品文档 https://help.aliyun.com/document_detail/101077.html。本轮测试直接启用 AHAS 自适应防护策略。
  3. 注意新版已经不支持自适应流控,我们直接测试即可

在这里插入图片描述

3. 启动压测

在这里插入图片描述

4. 查看压测进程

在这里插入图片描述

并发30,TPS12,说明每个机器也就是tps = 6个。这就代表此机器的峰值处理能力,所以我们可以给这个机器。但是注意,我在这里的演示是由于使用香港的机器等导致的,网络时间占用很多,也就是并不是代表这个机器的峰值能力。

3. 第三轮压测 - 限流+弹性伸缩
1. 配置限流规则

在这里插入图片描述

启用规则

在这里插入图片描述

2. 将ESS配置拉大

在这里插入图片描述

3. 启动压测

压测期间观察ECS会自动扩容

在这里插入图片描述

峰值服务器列表

在这里插入图片描述

观察成功率,在一段时间不稳定后会稳步上升

在这里插入图片描述