Nginx-负载均衡详解

news2025/2/24 23:52:34
本文已收录于专栏
《中间件合集》

目录

  • 概念说明
    • 什么是Nginx
    • 什么是负载均衡
  • 功能介绍
  • 配置过程
    • 1.修改nginx配置文件
      • 添加服务组
      • 修改HTTP模块
    • 2.保存配置文件
    • 3.重启配置文件
    • 4.查看配置文件是否重启成功
    • 5.还可以配置其他策略
      • 轮询
      • 权重
      • 最少连接数
  • 常用命令
  • 总结提升

概念说明

了解nginx反向代理请参考:https://blog.csdn.net/weixin_45490198/article/details/131357591

什么是Nginx

  Nginx 是一个高性能的开源 Web 服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点,被广泛用于搭建静态资源服务器、负载均衡、反向代理等场景。本文介绍nginx的反向代理,其他内容敬请期待!

什么是负载均衡

  负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。简单理解为在服务器集群中,需要有一台服务器作为调度者,客户端所有的请求都有调度者接收,调度者再根据每台服务器的负载情况,将请求分配给对应的服务器去处理。
在这里插入图片描述

功能介绍

  Nginx负载均衡是一种常用的解决方案,用于分发网络请求到多个后端服务器,以提高应用的性能和可靠性。

  • 「 负载均衡策略」:Nginx支持多种负载均衡策略,包括轮询、IP哈希和权重等。轮询策略按照服务器列表的顺序依次分发请求,适用于后端服务器性能相近的情况。IP哈希策略根据客户端的IP地址进行哈希计算,将同一个客户端的请求分发到同一个后端服务器上,适用于需要维持会话的场景。权重策略根据服务器的权重值来分配请求的比例,适用于后端服务器性能不均衡的情况。
  • 「 高可用性配置 」:为了实现Nginx负载均衡的高可用性,可以采用主备模式。主备模式包括一个主服务器和一个备份服务器,当主服务器出现故障时,备份服务器会自动接管请求。为了实现热备份,备份服务器需要处于热备份状态,即可以立即接管主服务器的请求。可以使用Nginx的健康检查功能来监测后端服务器的状态,并自动切换到可用的服务器。
  • 「 性能调优 」:为了提高Nginx负载均衡的性能,可以进行一些调优操作。可以调整连接池的大小和超时时间,以管理连接的数量和保持连接的时间。可以调整缓冲区的大小,以提高读写数据的效率。可以设置合理的超时时间,以避免请求超时和服务器资源浪费。此外,还可以使用Nginx的缓存功能,将静态资源缓存到内存中,减少后端服务器的负载。

配置过程

1.修改nginx配置文件

1.1切换到nginx的conf路径下操作nginx的配置文件

cd /usr/local/openresty/nginx/conf

1.2防止修改错误可以先备份一下配置文件

cp nginx.conf nginx.conf.baks

1.3对配置文件进行修改

vim nginx.conf

添加服务组

在这里插入图片描述
  服务组中可以添加多个服务器 进行负载均衡的后续操作

修改HTTP模块

在这里插入图片描述

  用需要将服务组配置到http模块中用来访问服务组中的每个服务

2.保存配置文件

:wq

3.重启配置文件

cd ..   
./sbin/nginx -s reload

4.查看配置文件是否重启成功

ps -aux | grep nginx

在这里插入图片描述
  重启成功之后我们就可以在浏览器上通过访问服务器的ip地址或者域名后面拼接/百度就可以访问到百度的主页了。当然也可以配置其他的网页或者资源。

服务组第一个页面
在这里插入图片描述
服务组第二个页面
在这里插入图片描述

5.还可以配置其他策略

轮询

在这里插入图片描述
  默认是轮询模式,访问第一个服务器一次,访问第二个服务器一次为一个周期

权重

在这里插入图片描述
  在轮询的基础上添加weight关键字和对应的权重值即可,表示访问第一个服务器3次,访问第二个服务器1次为一个周期

最少连接数

在这里插入图片描述
  可以和权重方式搭配使用,添加least_conn关键字即可,哪个服务器连接的数量少就把请求发送给哪个服务器,根据服务器中的计数器来判断

常用命令

nginx -v 显示nginx版本信息
nginx -V 显示版本和配置项信息
nginx -t 测试配置文件是否存在语法问题
nginx -s reopen 重新打开日志文件
nginx -s stop 快速停止nginx,此方法是先查看nginx主进程号,然后再使用kill强制杀掉
nginx -s quit 退出nginx 此方法会等待nginx进程处理完毕再停止
nginx -s reload 重新加载配置并启动

总结提升

  Nginx负载均衡是一种强大的解决方案,可以提高应用的性能和可靠性。通过选择合适的负载均衡策略、配置高可用性和进行性能调优,可以实现一个高质量的Nginx负载均衡架构。


🎯 此文章对你有用的话记得留言+点赞+收藏哦🎯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL:环境安装和数据库基础

环境安装 说明: • 安装与卸载中,用户全部切换成为root,⼀旦 安装,普通用户能使⽤的 • 初期练习,mysql不进行用户管理,全部使⽤root进行,尽快适应mysql语句,后⾯学了用户管 理&a…

实例讲解,一文弄懂workqueue和waitqueue

本期主题: 讲清workqueue和waitqueu: 从中断讲起waitqueue是什么workqueue总结 往期链接: linux设备驱动中的并发linux设备驱动中的编译乱序和执行乱序linux设备驱动之内核模块linux字符驱动linux字符驱动之ioctl部分linux字符驱动之read、…

数据结构07:查找[C++][朴素二叉排序树BST]

图源:文心一言 考研笔记整理8k字,小白友好、代码可跑,请小伙伴放心食用~~🥝🥝 第1版:查资料、写BUG、画导图、画配图~🧩🧩 参考用书:王道考研《2024年 数据结构考研复习…

【MATLAB第45期】基于MATLAB的深度学习SqueezeNet卷积神经网络混凝土裂纹图像识别预测模型

【MATLAB第45期】基于MATLAB的深度学习SqueezeNet卷积神经网络混凝土裂纹图像识别预测模型 引言 该文章展示如何微调名为SqueezeNet的预训练深度卷积网络,以执行裂纹图像分类预测。并使用一种称为Grad-CAM的技术来解释和分析分类输出。文章使用L.Zhang介绍的混凝土…

C++初阶之C++入门最全详解

C入门 1. C关键字(C98)2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C输入&输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类 5. 函数重载5.1 函数重载概念5.1.1 参数类型不同5.1.2 参数个数不同5.1.3 参数类型顺序不同 5.2 C支持函数重载的原理…

Spring Cloud Alibaba Seata(二)

目录 一、Seata 1、Seata-AT模式 1.1、具体案例 1.2、通过Seata的AT模式解决分布式事务 2、Seata-XA模式 3、Seata-TCC模式 4、Seata-SAGA模式 一、Seata 1、Seata-AT模式 概念:AT模式是一种无侵入的分布式事务解决方案,在 AT 模式下&#xff0c…

git修改默认主分支main为master和设置git默认创建的项目默认分支都为master

文章目录 前言一、设置新建仓库默认分支为master1.点击GitHub右上角的头像2. 选中settings(设置)3.点击Repositories(存储库)4.更改main为master后点击update 二、设置已建仓库的默认分支为master1.找到你要改的项目点击settings&…

STL序列式容器的概念

文章目录 1 迭代器2 什么是序列式容器3 序列式容器容器中常见的函数成员参考 1 迭代器 迭代器和C指针非常类似,它可以是需要的任意类型,通过迭代器可以指向容器中的某个元素,如果需要,还可以对该元素进行读写操作。 迭代器类别 …

ThreeJS案例一——在场景中添加视频,使用人物动作以及用键盘控制在场景中行走的动画

准备 首先我们需要两个模型,一个是场景模型,另一个是人物模型。 人物模型我这里用的Threejs官网中的给的模型,名称是Xbot.glb。 当然人物模型也可以自己去这个网站下载sketchfab,下载后给模型添加动画mixamo 下载模型动画 先让…

C++ STL vector容器用法

文章目录 1 vector初始化方法2 vector容器迭代器3 data()函数4 emplace_back()和push_back()的区别5 insert()函数6 vector删除元素参考 1 vector初始化方法 方式1&#xff1a; std::vector<double> values;//创建空的vcetor values.reserve(20); //设置容器的内存分配…

【实战】 JWT、用户认证与异步请求(1) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(四)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求1.login2.middleware of json-server3.jira-dev-tool&#xff08;imooc-jira-tool&#xff09;安装问…

《流浪地球 2》的硬核黑科技

电影中&#xff0c;由刘德华饰演的量子计算机工程师图恒宇有一个惊心动魄的情节。为了同步启动全球地球发动机&#xff0c;需要重启互联网&#xff0c;避免地壳破碎和地质灾害。而重启互联网的关键则是要启动“根服务器”。电影中没有具体交代是什么根服务器&#xff0c;但是当…

Ubuntu18.04屏幕分辨率问题

本篇博客最早发布于实验室公共博客&#xff0c;但已无人维护&#xff0c;现迁移至个人博客 起因 本来昨天还好好的&#xff0c;过了一夜&#xff0c;就变了&#xff0c;像极了咳咳(自行脑补) redwallbot-2小车上固定的屏幕&#xff0c;屏幕分辨率本来应该是1920x1080的&#…

DevOps系列文章之 linux安装ftp

第一步 1、用root 进入系统 2、使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp&#xff0c;若安装了vsftp&#xff0c;使用这个命令会在屏幕上显示vsftpd的版本 3、使用命令rpm -e vsftpd 即可卸载ftp 4、再使用rpm -qa|grep vsftpd 查看系统是否已删除ftp&#xff0…

【小技巧】vscode 在 JS 文件中补全 HTML标签

文章目录 vscode中有很多插件可以支持 HTML 标签自动补全&#xff0c;在.vue和.html文件中都没有问题&#xff0c;但是在使用react时&#xff0c;HTML标签是写在js或者是ts文件中&#xff0c;插件就不起作用了 解决方案&#xff1a; 在设置中插入这段设置代码 "emmet.i…

uniapp 微信小程序sourcemap映射

uniapp 微信小程序sourcemap映射 错误捕获 由于微信小程序中没有window对象&#xff0c;不能通过window.onerror和window.onunhandledRejection方法进行全局的监听。不过我们也可以使用以下几种方法。 使用try…catch 将可能出现的错误的代码使用try...catch包裹 try{cont…

【C++】一文读懂C++中的异常处理机制

文章目录 C 中的异常处理机制1.1 什么是异常&#xff1f;1.2 调用abort()1.3 返回错误码1.4 异常机制1.5 将对象用作异常类型1.6 异常规范和C111.7 栈解退1.7.1 return和throw的区别1.7.2 什么是栈解退 1.8 其他异常特性1.9 excepyion类1.9.1 stdexcept异常类1.9.2 bad_alloc异…

329款超有设计感的英文字体合集

一组超有设计感的英文字体合集&#xff0c;总共329个字库包含多种字体风格&#xff1a;手写字体、签名字体、复古字体、笔刷字体、漫画字体等无衬线字体。适用于签名、文具、标志、排版引言、杂志或书籍封面。素材获取&#xff1a;取括号内容&#xff0c;&#xff08;scwan&…

【 openGauss数据库】--运维指南01

【 openGauss数据库】--运维指南01 &#x1f53b; 一、 openGauss数据库运维指南&#x1f530; 1.1 启停openGauss&#x1f530; 1.2 查看openGauss数据库状态 &#x1f53b; 二、 维护检查项&#x1f530; 2.1 检查实例状态&#x1f530; 2.2 检查锁信息&#x1f530; 2.3 统计…

个人向非企业,基于目前主流图床的选购指南

1. 为什么需要搭建自己的图床 最近研究了一下国内外比较主流的图床与对象存储&#xff0c;因为个人写作更加偏向于使用Markdown&#xff0c;而国内很多平台如掘金&#xff0c;简书&#xff0c;csdn等等网站都做了相关的防盗链&#xff0c;即使是我为作者本人&#xff0c;想取用…