nginx学习记录-负载均衡策略

1. 负载均衡基本策略配置

1.1 weight(权重)配置

weight表示当前服务器承载的业务比例。假设现在有两台服务器A和B组成集群,但是A和B的配置不一样,A的性能更好些,那么此时我们希望服务器A能承载更多的业务,服务器B承载更少的业务,那么我们就可以给A和B分别配置相应的权重。

比如,图中我们可以给A和B分别配置weight=8及weight=2,表示外来的访问请求有80%的概率会由nginx转发至A服务器处理,有20%的概率由nginx转发至B服务器进行处理。通过这种简单的配置能更好地实现灵活的负载均衡。

1.2 down(下线)配置

down表示下线,即当一台服务器出故障时,为了不影响业务,我们配置down,将这台业务服务器下线,那么nginx就不会将请求转发至该服务器进行处理。

如图所示,如果我们将服务器A设置为down,则nginx服务器不会将请求转发到A,而是只会转发到B。这种策略配置实际上用的并不多,毕竟在生产环境中,很少主动让服务器下线的,被动下线更加用不到这个配置了。

1.3 backup(备份)配置

backup表示备份服务器,即当出现严重故障导致集群其它服务器都不可用时,就会启用备份服务器,保证业务的正常运行

如图,当A和B都不可用时,请求才会转到C,如果A和B有一台可用,则不会转到C

2. 负载均衡会话保持策略(了解即可)

上面的几种策略都存在一个问题,那就是当nginx进行代理转发时,每次都是转发到随机的一台服务器上,无法进行会话的保持。那么这里有几种策略可以进行会话的保持。以下几种策略仅作了解即可,实际生产环境中用的不多,因为无法动态上下线服务器,不够灵活。

2.1 ip_hash策略

根据客户端的IP地址转发同一台服务器,可以保持会话。但是这个实际并不常用,因为当客户端是移动端的情况下,IP是随时发生变化的,如果采取这种策略,会导致会话无法保持,达不到预期的效果。

2.2 least_conn

根据最少连接数转发请求,连接数少的服务器就优先转发。保证后端服务器负载更均衡,但是不支持服务器动态上下线(及时部署新的服务器)。

2.3 fair

根据后端服务器响应时间转发请求,优先转发至响应时间短的服务器。这种策略容易受网络波动影响,造成流量都倾斜到单台服务器上。

2.4 url_hash

根据访问的url地址转发到同一台服务器,实现定向流量转发。这个实际上无法保持会话,因为实际上同一个用户访问不同的url可能会转发到不同的服务器上。因此,这个策略的使用适用于访问固定资源(不在同一服务器)的场景

3. 简单例子,配置权重,下线和备份

这里简单配置以下权重weight,下线down和备份backup,这里我们只有两台服务器A和B,我们先配置一台权重为8,另一台权重为2,如下,配置好后使用systemctl reload nginx重新加载nginx配置

此时,访问大概率是被转发到192.168.66.218上,仅有少部分请求会转发到192.168.66.1上。

此时,我们修改配置将192.168.66.1作为备份

则所有请求都会转发至192.168.66.128

若是停掉192.168.66.128的服务,则所有请求则会转发至192.168.66.1

再次修改配置,开启192.168.66.128的服务,并让192.168.66.128下线:

会发现,此时只会访问192.168.66.1.

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

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

相关文章

【Ubuntu】update-alternatives 命令详解

1、查看所有候选项 ​​​​​​​sudo update-alternatives --list java 2、​​​​​​​更换候选项 sudo update-alternatives --config java 3、自动选择优先级最高的作为默认项 sudo update-alternatives --auto java 4、删除候选项 sudo update-alternatives --rem…

halcon缺陷检测-印刷品检测(差异化模型),键盘字符缺陷检测

前言 在实际项目中,印刷品缺陷检测是缺陷检测中的难点项目。通常印刷品检测往往具备缺陷小,缺陷所在位置不固定,出现少印或者多印的情况。并且由于产线原因,大量的印刷品在视野中的大小并不是完全一致的,可能出现细微…

java-数组转换为List集合

方法一:使用 Arrays.asList() 方法 Arrays.asList() 方法可以将数组转换为一个固定大小的List。 import java.util.Arrays; import java.util.List; import java.util.ArrayList; public class ArrayToListExample { public static void main(String[] args…

易绘创云打印怎么样?易绘创云打印好用吗?

随着云技术的发展,云打印等概念也逐渐火热了起来。作为当下云打印服务行业中的佼佼者,易绘创云打印服务页一直被众多用户讨论着。那么易绘创云打印怎么样?易绘创云打印好用吗?今天小易就带大家来介绍一下。 易绘创云打印怎么样&am…

C语言面试题之合法二叉搜索树

合法二叉搜索树 实例要求 实现一个函数,检查一棵二叉树是否为二叉搜索树; 示例 1: 输入:2/ \1 3 输出: true 示例 2: 输入:5/ \1 4/ \3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 …

Vuex(vue 项目中实现 频繁、大范围数据共享的技术方案)

参考文档(点击查看) 好处 1.数据的存取一步到位,不需层层传递 2.数据的流动非常清晰 3.存储在Vuex中的数据都是响应式的(数据更新后,使用数据的组件都会自动更新) Vuex基础配置 npm i vuex3.6.2state中用来存储数据&#xff0c…

三:synchronized 关键字

目录 1、共享带来的问题2、synchronized 用法3、类加载器对 Class 锁的影响4、synchronized 实现原理4.1、同步方法、同步代码块4.2、对象内存布局4.3、Monitor 对象定义 5、synchronized 与原子性6、synchronized 与可见性7、synchronized 与有序性8、synchronized 锁升级8.1、…

外包干了15天,技术倒退明显

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

第十四届蓝桥杯大赛软件赛省赛C/C++大学 B 组

第十四届蓝桥杯大赛软件赛省赛C/C大学 B 组 文章目录 第十四届蓝桥杯大赛软件赛省赛C/C大学 B 组1、日期统计2、01串的熵3、冶炼金属4、飞机降落5、接龙数列6、岛屿个数7、子串简写8、整数删除9、景区导游10、砍树 1、日期统计 分析: 本题的意思就是2023年一整年&a…

c++作业day4

头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> #include <QTime> #include <QTextToSpeech> #include <QMessageBox> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass…

技术分享 | Frida 实现 Hook 功能的强大能力

Frida 通过 C 语言将 QuickJS 注入到目标进程中&#xff0c;获取完整的内存操作权限&#xff0c;达到在程序运行时实时地插入额外代码和数据的目的。官方将调用代码封装为 python 库&#xff0c;当然你也可以直接通过其他的语言调用 Frida 中的 C 语言代码进行操作。 Frida安装…

【现代C++】线程支持库

现代C&#xff08;C11及其之后的版本&#xff09;引入了标准的线程支持库&#xff0c;使得多线程编程变得更加简单和可移植。这个库提供了线程管理、互斥量、条件变量和其他同步原语。 1. std::thread - 基本线程 std::thread允许创建执行特定任务的线程。 #include <ios…

【刷题】备战蓝桥杯 — dfs 算法

送给大家一句话&#xff1a; 风度真美&#xff01; 即使流泪&#xff0c;也要鼓掌&#xff0c; 即使失望&#xff0c;也要满怀希望。 ——刘宝增 dfs 算法 1 前言2 洛谷 P1030 [NOIP2001 普及组] 求先序排列题目描述算法思路 3 洛谷 P1294 高手去散步题目描述算法思路 4 蓝桥…

【数据结构】树与二叉树遍历算法的应用(求叶子节点个数、求树高、复制二叉树、创建二叉树、二叉树存放表达式、交换二叉树每个结点的左右孩子)

目录 求叶子节点个数、求树高、复制二叉树、创建二叉树、二叉树存放表达式、交换二叉树每个结点的左右孩子应用一&#xff1a;统计二叉树中叶子结点个数的算法写法一&#xff1a;使用静态变量写法二&#xff1a;传入 count 作为参数写法三&#xff1a;不使用额外变量 应用二&am…

Redis部署之主从

使用两台云服务器&#xff0c;在 Docker 下部署。 Redis版本为&#xff1a;7.2.4 下载并配置redis 配置文件 下载 wget -c http://download.redis.io/redis-stable/redis.conf配置 master节点配置 bind 0.0.0.0 # 使得Redis服务器可以跨网络访问,生产环境请考虑…

Linux 开发----在线英语字典

应用开发&#xff01; 这款应用程序是在Linux操作系统下完成的&#xff0c;整个项目包含了众多的知识点&#xff08;文件IO、进程、网络、数据库&#xff09;。动手操作之前可以先大致设计出流程图&#xff0c;然后根据流程图进行各个模块的实现&#xff08;注册模块、登录模块…

谈谈什么是 Redis

&#x1f525;博客主页&#xff1a;fly in the sky - CSDN博客 &#x1f680;欢迎各位&#xff1a;点赞&#x1f44d;收藏⭐️留言✍️&#x1f680; &#x1f386;慢品人间烟火色,闲观万事岁月长&#x1f386; &#x1f4d6;希望我写的博客对你有所帮助,如有不足,请指正&#…

RISC-V GNU Toolchain 工具链安装问题解决(stdio.h 问题解决,pk fence.i 问题解决)

我的安装过程主要参照 riscv-collab/riscv-gnu-toolchain 的官方 Readme 和这位佬的博客&#xff1a;RSIC-V工具链介绍及其安装教程 - 风正豪 &#xff08;大佬的博客写的非常详细&#xff0c;唯一不足就是 sudo make linux -jxx 是全部小写。&#xff09; 工具链前前后后我装了…

【数据结构】-- 单链表 vs 双向链表

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

动态规划刷题(2)之杨辉三角(详细解释)

最近在自学动态规划,网上到处找资料学习: 在这里记录我的刷题历史: 题目都是在力扣里面刷的!! 这里,我放一个刷动态规划的链接在这里:动态规划知识点题库 - 力扣(LeetCode) 力扣 在这里附加动态规划相关知识点:动态规划(DP)-CSDN博客文章浏览阅读197次。动态规划…