云计算基础
阿里云
云计算岗位一样平常的要求是:
1、常见操作系统的使用与Linux下令行、Shell脚本
2、云计算基础:包括假造化技能、云存储、云安全等。
3、网络: 包括NAT、TCP/IP
4、Docker&云原生K8S
5、开发情况搭建与部署
6、微服务、DevOps与云原生监控
7、故障清除、日志分析、变更管理
1. 概念
1. 云平台上风
国内常见云平台:
国外常见云平台:
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,532172.16.0.0/12(B类)可用私网IP数量(不包括系统保存地址):1,048,57210.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 下令验证磁盘空间。看到 /mydata 有 40G 即可
4. 卸载云盘
1. 查看磁盘信息
df -h: 确定挂载点为 /dev/vdb1
2. 卸载下令
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
3. 步调一: 创建公网NAT网关
确认订单数据:
等待创建
确认公网IP地址:
4. 步调二: 创建SNAT条目
- 在公网NAT网关页面,找到目标公网NAT网关实例,然后在操作列单击设置SNAT。
- 在SNAT管理页签,单击创建SNAT条目。
- 在创建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. 资源规划
云产物配置项描述专有网络名称vpcIPv4 网段192.168.0.0/16互换机名称vswitch可用区华北 2(北京) 可用区 HIPv4 网段192.168.0.0/24ECS x 2计费方式按量付费地区华北 2(北京) 可用区 H实例ecs.g5ne.xlarge镜像[公共镜像] CentOS 7.9 64 位存储[系统盘] SSD 云盘 40 GiB网络[专有网络] vpc登录凭证自定义暗码登录暗码设置符合要求的 root 账号的暗码实例名称wp1, wp2EIP x 2付费方式后付费EIP 名称eip-sa, eip地区华北 2(北京)带宽峰值10Mbps, 100Mbps流量按使用流量计费PolarDB付费方式按量付费地区华北 2(北京)可用区 H(主),可用区 G(备)数据库范例MySQL版本5.6系列集群版网络范例[专有网络] vpc规格polar.mysql.x4.largeRedis计费方式按量付费地区华北 2(北京)可用区 H,可用区 G(备)网络范例[专有网络] vpc版本范例企业版系列范例性能增强型版本5.0架构范例Cluster分片数2实例规格4G 集群性能增强版(2 节点)SLB计费方式按量付费地区华北 2(北京)可用区 H(主),可用区 G(备)网络范例[专有网络] vpc网络付费范例按流量付费访问地址范例Intranet规格slb.s2.smallOSSBucket 名称my-wpimg地区华北 2(北京)存储范例标准存储读写权限公共读NASNAS 组名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 段。
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
- 打开AHAS开通页面。
- 在应用高可用服务-免费版页面阅读并选中应用高可用服务-免费版服务协议,然后单击立即开通。
- 更多参照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.04nginx-1.14.0lib/ubuntu-18.04-nginx-1.14.0/ngx_sentinel_module.soCentOS 6nginx-1.10.3lib/centos6-nginx-1.10.3/ngx_sentinel_module.soCentOS 7nginx-1.16.1lib/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. 启用伸缩规则
- 登录 弹性伸缩 控制台,启用报警任务。
- CPU 负载小于 20%的报警状态是正常的,在无负载情况下,手动参加伸缩组的固定应用服务器 wp1、wp2 的负载小于 20%,但伸缩组最少服务器为 2 台,故不会触发释放缩容。
2. 启用流量防护
- 登录 AHAS 控制台。(https://ahas.console.aliyun.com/),进入 blog 应用概览页面。
- 启用自适应流控。AHAS 支持多种防护规则,可根据需求自行配置使用,详情拜见产物文档 https://help.aliyun.com/document_detail/101077.html。本轮测试直接启用 AHAS 自适应防护策略。
- 留意新版已经不支持自适应流控,我们直接测试即可
3. 启动压测
4. 查看压测历程
并发30,TPS12,说明每个呆板也就是tps = 6个。这就代表此呆板的峰值处理能力,所以我们可以给这个呆板。但是留意,我在这里的演示是由于使用香港的呆板等导致的,网络时间占用许多,也就是并不是代表这个呆板的峰值能力。
3. 第三轮压测 - 限流+弹性伸缩
1. 配置限流规则
启用规则
2. 将ESS配置拉大
3. 启动压测
压测期间观察ECS会自动扩容
峰值服务器列表
观察成功率,在一段时间不稳固后会稳步上升
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |