教你快速构建一个基于nginx的web集群项目


Posted in Servers onNovember 27, 2021

一 ·项目环境

centos7/8服务器8台、nginx 1.21.1、ab、nfs4、
zabbix、keepalived 2.1.5 、ansible,bind

二· 项目描述

构建一个基于nginx的4/7层负载均衡的web集群项目

模拟企业的业务环境达到构建一个高并发高可用的web集群。

通过压力测试来检验整个集群的性能,找出瓶颈,不断的去优化。

三· 项目步骤

1.安装

安装部署ansible服务,和其他的服务器之间建立免密通道,编写playbook去安装部署nginx和zabbix

2.配置

通过ansible上去部署nginx和zabbix,配置好nginx长连接,并发数,和worker的进程数,限制速度以及zabbix的相关配置等,上传网站内容(搭建一个WordPress的博客系统或者flask接口网站等)

3.实现负载均衡

使用2台服务器做双vip的负载均衡器,使用nginx的4/7层负载均衡功能实现,调度算法使用加权轮询

4.搭建服务器

搭建nfs服务器,保障网站的数据一致性,并且设置后端的real-server/backend server开机自动挂载

5.压力测试

在客户机上使用ab软件进行压力测试

6.监控

在zabbix/prometheus监控平台上添加相关的服务器和监控项,监控整个web集群的性能 --》zabbix

7.高可用

使用keepalived软件给负载均衡器做高可用,防止单点故障 --》keepalived

8.域名解析

搭建一个dns服务器,给整个web集群进行域名解析,通过dns域名解析负载均衡将2个vip绑定到一个域名给用户访问使用,从而将流量导入到不同的负载均衡器上

9.提升性能

尝试去优化整个web集群,提升性能:内核参数,nginx参数的优化,考虑加缓存等措施

10.使用ansible编写playbook

尝试全部使用ansible编写playbook安装所有的软件: nginx,zabbix,keepalived,ab,nfs等

四· 项目总结

1.慢慢理解了集群的概念,从1台到多台
2.对高性能和高可用有了一定的认识,对系统的性能指标参数有了一定的认识,对脑裂现象有了一定的了解和如何避免
3.对一键部署和安装有了一定的了解,非常的方便和快捷,今后尝试更加好的自动化操作 --》ansible
4.对压力测试下整个集群的瓶颈有了一个整体的概念
5.对系统的优化有了一些认识,感觉非常的有必要,在不增加成本的情况下提升性能
6.对监控也有了一点接触,监控是非常基础的运维工作,可以提前看到问题,做好预警。
7.对今后学习大规模的集群打下基础,整体规划的能力得到提升
8.troubleshooting的能力得到了提升
9.对很多基础功能的软件的配合有了一定的了解,例如:zabbix,keepalived,ansible,nginx,nfs,ab,bind等
10.对dns负载均衡,4/7层负载均衡有了一定了解

五·搭建WEB注意

1.web网站的内容,需要你确定: 博客,接口网站,测试页面等
数据的一致性问题: NFS,san,云存储,NAS等

2.内核参数的优化:

 

[root@docker ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
kernel.softlockup_panic = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
kernel.shmmax = 68719476736
kernel.printk = 5
kernel.sysrq = 1
kernel.numa_balancing = 0
[root@docker ~]# ulimit
unlimited
[root@docker ~]# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14826
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 100001
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14826
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@docker ~]#

ab  -c 2000 -n 100000  http://192.168.0.92/

到此这篇关于构建一个基于nginx的web集群项目的文章就介绍到这了,更多相关nginx web集群项目内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx的rewrite模块详解
Mar 31 Servers
Nginx配置https原理及实现过程详解
Mar 31 Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 Servers
Nginx配置之实现多台服务器负载均衡
Aug 02 Servers
Nginx 反向代理解决跨域问题多种情况分析
Jan 18 Servers
Win10 Anaconda安装python-pcl
Apr 29 Servers
tomcat默认最大连接数及相关调整方法
May 06 Servers
阿里云服务器Ubuntu 20.04上安装Odoo 15
May 20 Servers
Nginx文件已经存在全局反向代理问题排查记录
Jul 15 Servers
Nginx跨域问题解析与解决
Aug 05 Servers
教你使用Ubuntu搭建DNS服务器
Sep 23 Servers
ubuntu20.04虚拟机无法上网的问题及解决
Dec 24 Servers
Linux安装apache服务器的配置过程
Nov 27 #Servers
Nginx配置https的实现
nginx内存池源码解析
苹果M1芯片安装nginx 并且部署vue项目步骤详解
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
Nov 17 #Servers
Nginx源码编译安装过程记录
Nov 17 #Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 #Servers
You might like
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
Django 中 cookie的使用
2017/08/17 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
质量保证书格式
2015/02/27 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
运动会广播稿200字
2015/08/19 职场文书
Python基础之进程详解
2021/05/21 Python