1、大型项目衡量依据
1.1、PV
即整个项目所有页面一天之内被访问的总次数。项目PV值可以达到千万级别项目就算属大型项目
1.2、UV
即整个项目一天之内被访问的总的用户数(以客户端进行区分)。一般UV值可以达到10万以上该项目就可以算大型项目
1.3、独立IP
即整个项目一天之内被访问的总IP数量
2、apache性能测试
①使用集成包部署一个lamp环节
该步骤已经部署好 web目录地址在/home/wwwroot/default
②使用浏览器访问
③打开top命令(持续观察)
④使用apache的ab工具来进行测试
⑤具体查看结果
直接ab的参数在设置更大查看top命令中的结果
通过上述的结果发现 在请求量很大的情况下apache会消耗特别大的系统资源(cpu上升并且进程基本上都是httpd)。因此说明apache在访问量很高的情况下不能够支撑项目的运行
3、负载均衡概述
3.1、负载均衡介绍
为了解决web请求的压力,将请求安装一定的算法分发给其他的服务器来处理请求。负载均衡属于集群(多台服务器每一个都能够单独的完成一项任务。如果某一个异常也不会影响整个任务的运行)中的一种应用
3.2、负载均衡的原理图
1、域名解析是解析在负载均衡反向代理服务器上
2、当用户访问是本质是访问负载均衡反向代理服务器(代理即所有的请求都需要经意该服务器处理 代理服务器叫做反向代理。代理客户端叫做正向代理)
3、当负载均衡反向代理服务器收到请求之后将请求按照一定的算法分发给后端真实处理请求的服务器
4、当后端真实处理请求的服务器接受请求处理最终将结果返回给负载均衡反向代理服务器
5、最终由负载均衡反向代理服务器将结果响应给客户端
3.3、负载均衡分类
只是负载均衡可以划分类型的方式
3.3.1、地域
以真实处理请求的服务器的所在位置
1、全局负载
真实处理请求的服务器全部都处于外网中(所有服务器都可以通过IP地址直接进行访问。但是一般考虑安全问题真实处理请求的服务器只容许负载均衡反向代理服务器进行访问)。在全局负载的基础之上衍生一项技术叫做CDN加速(将用户的请求交给距离用户最近的服务器进行处理)
2、本地负载
真实处理请求的服务器全部都处于局域网中。对于本地负载安全性更高。
3.3.2、实现方式
1、硬件负载
依靠具体的硬件专门实现分发请求从而实现负载均衡。对于硬件负载功能稳定,并且能够提供一些额外的功能。
2、软件负载
在操作系统中安装某一个软件来实现将请求进行分发从而实现负载均衡。对于软件负载受限制与操作系统。并且稳定性与硬件相比较略差。目前使用最多的是通过使用Nginx来实现负载均衡
3、Nginx概述
3.1、Nginx介绍
Nginx(”engine x”)是俄罗斯人编写的一款高性能的HTTP和反向代理服务器。它能够支持高达50000个并发连接数的响应,而内存,cpu等系统资源消耗却非常低。
Nginx属于一款轻量级别的邮件服务器、http服务器及方向代理服务器
3.2、常见的web服务器
Apache:属于一款重量级的web服务器
Nginx:属于一款轻量级的web服务器
Tomcat:java容器
IIS:微软开发
Tengine:淘宝对Nginx进行二次开发
3.3、常见PHP生产环境
1、LAMP:Linux+apache+mysql+php
2、LNMP:Linux+Nginx+mysql+php
3、LNAMP:Linux+Nginx+apache+mysql+php
Nginx 实现请求的分发
3.4、apache与Nginx的区别
1、apache功能强大,运行稳定
2、Nginx功能少(php不支持),稳定性比apache略差
3、apache在并发情况下性能一般(完全依靠进程来处理任务来一个请求产生一个进程处理)
4、Nginx在高并发时性能良好(依旧采用的进程方式进行工作但是Nginx使用了异步非阻塞网络模式)
4、Nginx环境搭建
4.1、创建Linux虚拟机
创建步骤参考Linux第一天的环境搭建
4.2、安装Linux
没有截图的跟Linux第一天的环境搭建一模一样
①选择安装的类型
选择所有空间无需自己创建分区
②选择安装精简版
4.3、配置网络
①使用root账户登录系统并且查看IP
②进入网络配置文件
③修改配置文件/etc/sysconfig/network-script/ifcfg-eth0
④重启网络服务
⑤查看IP
配置完网络服务就可以使用xshell进行远程连接
4.4、设置本地yum源并且安装基础软件
4.4.1、配置本地yum源
①设置光盘已连接
打开虚拟机设置
设置光盘已连接
②创建光盘的挂载目录
③手动挂载光盘
④查看结果
⑤进入到yum配置目录
⑥禁用默认的网络yum源
⑦修改配置文件启用本地的yum源
打开配置文件
⑧测试yum安装使用
结果
⑨yum卸载软件
⑩软件查询
如果想要查询指定可以使用管道符配在配合grep筛选
4.4.2、使用yum安装基础软件
yum -y install make gcc gcc-c++ opensslopenssl-devel pcre-devel zlib-devel libxml2 libxml2-devel vim
4.5、Nginx安装
①使用FTP将Nginx的源码包上传到服务器上
②在命令行中进行解压
③进入解压目录执行configure
④安装
4.6、PHP安装
①使用FTP上传PHP源码包
②命令行进入home目录解压
③进入解压目录执行configure
④安装
4.7、配置Nginx与PHP交互
4.7.1、Nginx的安装目录解释
4.7.2、关于Nginx的启动等操作
①启动Nginx服务
②关闭Nginx服务
通过此方式关闭Nginx服务属于平滑关闭(平滑即不对现有的用户请求产生影响)
③关于不平滑关闭方式
可以使用pkill 直接将所有的Nginx相关的进程全部关闭也可以使用kill关闭指定的进程(kill作用是用于给进程进行传递信号)
④Nginx的重启
4.7.3、启动php
①启动php
②解决报错问题
③查看php是否启动
4.7.4、配置Nginx与PHP交互
①确认Nginx已经以及php启动
②直接访问Nginx
直接访问不能正常说明有问题(可以通过检查是否能够通信、服务是否启动、防火墙)
③关闭防火墙
查看结果
④创建php测试文件
访问测试时 发现代码直接下载
⑤修改Nginx的配置文件
先打开配置文件
修改内容
⑥重启Nginx查看效果
5、虚拟主机配置
5.1、Nginx配置文件详解
具体完整的配置项信息可以参考资料中的“nginx配置文件详解.txt”
5.2、配置虚拟主机
①打开配置文件
②修改server
③重启Nginx
④修改本机的host文件
⑤访问测试
5.3、修改虚拟主机的配置方式
由于目前增加虚拟主机每次都需要修改到Nginx的主配置文件(nginx.conf)。此方式容易导致修改错误导致Nginx的主配置文件出错
①修改Nginx的主配置文件
打开配置文件
②创建虚拟主机配置文件的存储目录
③在vhosts目录下创建虚拟主机配置
创建文件
输入内容
在vhosts目录下每一个后缀为.conf的文件就是一个虚拟主机配置 内容为server一段
④重启Nginx查看效果
结果
5.4、关于Nginx的缓存功能
关于Nginx的缓存设置直接针对对应的资源文件进行匹配即可
6、实现负载均衡
6.1、克隆第一台服务器
①先关闭Nginx2服务器(被克隆的服务器)
②开始克隆
选中服务器->右键->管理->克隆
③在弹出的引导界面直接下一步
④克隆当前状态
⑤选中克隆方式
⑥设置名称及存储位置
6.2、克隆第二台服务器
完整操作步骤参考6.1步骤
注意:被克隆的依旧为Nginx2服务器
6.3、调整克隆的第一台服务器nginx3
6.3.1、配置网络服务
①使用root账户登录
密码跟nginx2的密码一模一样
②查看Mac地址
③进入到网络配置目录
④修改配置文件
⑤重启网络服务查看IP地址
6.3.2、确保Nginx3的web服务可以正常访问
①关闭防火墙
②启动Nginx跟php
③测试是否可以访问
④修改测试的p.php文件
⑤再次测试
6.4、调整克隆的第二台服务器nginx4
6.4.1、配置网络服务
步骤与6.3.1一模一样
6.4.2、配置Nginx正常
步骤与6.3.2一致
6.5、调试Nginx2正常分发请求
①关闭防火墙
②修改Nginx的主配置文件
打开文件
③针对要负载的虚拟主机修改配置文件
先打开虚拟主机配置文件
修改内容
④启动Nginx
⑤查看结果
6.6、upstream语法
upstream 别名{
server 域名/IP地址 参数;
}
1、weight=number权重
2、bakup备份服务器
3、down,不可用状态
6.6.1、权重指定
①打开Nginx主配置文件(处理分发请求的Nginx2服务器)
②修改内容
③重启Nginx
④查看效果
6.6.2、backup
①打开配置文件(处理分发请求的Nginx2服务器)
②修改配置项
③重启Nginx
④查看效果
⑤挂起192.168.26.134服务器
此处挂起即代表服务器宕机
6.6.3、down
表示将服务器标注为宕机状态不参与负载均衡。在任何情况下都不参与
6.7、负载均衡算法
6.7.1、轮循
安装顺序逐个分配
6.7.2、权重
安装指定的数组比例采用轮询的方式来分配请求
6.7.3、最小连接
将请求分发给处理请求数量最少的服务器
6.7.4、ip_hash
根据请求的客户端的IP地址分配给固定的某一个服务器处理请求。从理论上ip_hash可以解决负载均衡下的session问题。但是没人使用
其他第三方算法(url_hash等)
7、扩展定时脚本
建议仔细查看怎么使用
7.1、定时脚本介绍
对于某个任务需要在固定的某一个时间点执行或者执行多次。需要使用定时脚本功能。对于脚本编写可以使用php完成任务然后配合Linux中的crontab实现定时。
7.2、案例一
使用Nginx2服务器实现
①进入Nginx的web根目录创建1.txt
②修改1.txt内容
③修改1.txt文件权限
④创建cron.php
⑤使用浏览器访问测试
查看文件
⑥在命令行下执行php
方式一
方式二
建议编写脚本时涉及到目录地址统一采用绝对地址
⑦ crontab使用
Crontab格式为:* * * * * command
第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令
例如要求每天12点12分执行某个任务
30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/apache/bin/apachectl restart
每一小时重启apache
* 23-7/1 * * * /usr/local/apache/bin/apachectl restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/apache/bin/apachectl restart
一月一号的4点重启apache
⑧使用crontab实现定时
先设置定时
查看日志