教你快速构建一个基于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中break与last的区别详析
Mar 31 Servers
nginx location中多个if里面proxy_pass的方法
Mar 31 Servers
Nginx+SpringBoot实现负载均衡的示例
Mar 31 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
nginx+lua单机上万并发的实现
May 31 Servers
nginx请求限制配置方法
Jul 09 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
Docker 镜像介绍以及commit相关操作
Apr 13 Servers
腾讯云服务器部署前后分离项目之前端部署
Jun 28 Servers
Apache SkyWalking 监控 MySQL Server 实战解析
Sep 23 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
PHP 文件上传全攻略
2010/04/28 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
tween.js缓动补间动画算法示例
2018/02/13 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
Python学习小技巧之列表项的拼接
2017/05/20 Python
python opencv摄像头的简单应用
2019/06/06 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
python实现文字版扫雷
2020/04/24 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
幼儿园中班教学反思
2014/02/10 职场文书
2014年材料员工作总结
2014/11/19 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
python中的3种定义类方法
2021/11/27 Python
基于Python实现一个春节倒计时脚本
2022/01/22 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技