项目名称:构建一个基于Nginx的web集群项目
项目环境:centos7/8服务器8台,nginx1.21.4,ab,nfs4,zabbix,keepalived2.1.5,ansible
项目描述:
构建一个基于nginx的http负载均衡的web集群项目,模拟企业的业务环境达到构建一个高并发,高可用的web集群。通过压力测试来检验整个集群的性能,找出瓶颈,不断的去优化。
项目步骤:
-
安装部署ansible服务,和其他服务器之间建立免密通道,编写playbook去安装部署nginx和zabbix。
-
通过ansible上去部署nginx和zabbix,配置好nginx长连接,并发数,和worker的进程数,限制速度以及zabbix的相关配置等(搭建一个 WordPress的博客系统或者flask接口网站等)
-
使用2台服务器做双vip的负载均衡器,使用nginx的4/7层负载均衡功能实现,调度算法使用加权轮询 。
-
搭建nfs服务器,保障网站的数据一致性,并且设置后端的real-server/backend server开机自动挂载。
-
在客户机上使用ab软件进行压力测试。
-
在zabbix/prometheus监控平台上添加相关的服务器和监控项,监控整个web集群的性能。
-
使用keepalived软件给负载均衡器做高可用,防止单点故障。
-
尝试去优化整个web集群,提升性能:内核参数,nginx参数的优化,考虑加缓存等措施。
项目心得:
-
慢慢理解了集群的概念,从1台到多台
-
对高性能和高可用有了一定的认识,对系统的性能指标参数有了一定的认识,对脑裂现象有了一定的了解和如何避免
-
对一键部署和安装有了一定的了解,非常的方便和快捷,今后尝试更加好的自动化操作
-
对压力测试下整个集群的瓶颈有了一个整体的概念
-
对系统的优化有了一些认识,感觉非常的有必要,在不增加成本的情况下提升性能
-
对监控也有了一点接触,监控是非常基础的运维工作,可以提前看到问题,做好预警。
-
对今后学习大规模的集群打下基础,整体规划的能力得到提升。
-
troubleshooting的能力得到了提升
-
对很多基础功能的软件的配合有了一定的了解,例如:zabbix, keepalived, ansible, nginx, nfs, ab,dstat等
web网站的内容:需要你确定:博客,接口网站,测试页面等
数据的一致性问题:NFS,san,云储存,NAS等。
概念
压力测试:对整个系统进行测试,看整个服务器集群能承受多少并发量。
因素
和服务器的硬件和软件的配置有关
- 网络带宽
- CPU
- 磁盘IO
- 内存
优化
硬件层面:提升硬件
软件层面:优化后端nginx配置
指标
QPS TPS IOPS
QPS:每秒处理的查询数,请求数
TPS:每秒处理的事务数
IOPS:每秒磁盘进⾏的I/O操作次数
ab的使用
安装ab
客户机
yum install httpd-tools -y
ab -v #测试安装是否成功
ab -n 1000 -c 1000 http://cs.yutao.co/
#-n发出1000个请求,-c模拟1000个并发,相当1000人同时访问,后面是测试url)
服务机
yum install ab -y #安装ab
ab命令实时查看资源的消耗