三大主流负载均衡器之对比(Comparison of the Three Mainstream Load balancers)

【 Linux 】三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

  (资料来自网络,做了部分的补充说明)
LVS:
    1. 抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低
    2. 工作在网络4层,通过VRRP协议(仅作代理之用),具体的流量是由linux内核来处理,因此没有流量的产生。
    3. 稳定,可靠性高,自身有完美的热备方案(Keepalived+lvs)
    4. 不支持正则处理,不能做动静分离。
    5. 支持多种负载均衡算法:rr(轮询),wrr(带权轮询)、lc(最小连接)、wlc(带权最小连接)
    6. 配置相对复杂,对网络依赖比较大,稳定性很高。
    7. LVS工作模式有4种:
        (1) nat 地址转换
        (2) dr 直接路由
        (3) tun 隧道
        (4) full-nat
Nginx:
    1. 工作在网络7层,可以针对http应用做一些分流的策略,比如针对域名,目录结构
    2. Nginx对网络的依赖较小,理论上能ping通就能进行负载功能
    3. Nginx安装配置比较简单,测试起来很方便
    4. 也可以承担较高的负载压力且稳定,nginx是为解决c10k问题而诞生的
    5. 对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测
    6. Nginx对请求的异步处理可以帮助节点服务器减轻负载压力
    7. Nginx仅能支持http、https和Email协议,这样就在适用范围较小。
    8. 不支持Session的直接保持,但能通过ip_hash来解决。对Big request header的支持不是很好。
    9. Nginx还能做Web服务器即Cache功能。

第6点补充:
    什么是nginx的异步处理

        squid同步处理:浏览器发起请求,而后请求会立刻被转到后端,于是在浏览器和后台之间就建立了一个通道。从请求发起直到请求完成,这条通道都是一直存在的。
        nginx异步处理:浏览器发起请求,请求不会立刻转到后端,而是请求数据(header)先收到nignx上,然后nginx再把这个请求发到后端,后端处理完成后把数据返回到nginx上,nginx将数据流发到浏览器。

    使用异步处理的好处:
        1. 假设用户执行一个上传文件操作,因为用户网速又比较慢,因此需要花半个小时才能把文件传到服务器。squid的同步代理在用户开始上传后就和后台建立了连接,半小时后文件上传结束,由此可见,后台服务器连接保持了半个小时;而nginx异步代理就是先将此文件收到nginx上,因此仅仅是nginx和用户保持了半小时连接,后台服务器在这半小时内没有为这个请求开启连接,半小时后用户上传结束,nginx才将上传内容发到后台,nginx和后台之间的带宽是很充裕的,所以只花了一秒钟就将请求发送到了后台,由此可见,后台服务器连接保持了一秒。同步传输花了后台服务器半个小时,异步传输只花一秒,可见优化 程度很大。
        2. 在上面这个例子中,假如后台服务器因为种种原因重启了,上传文件就自然中断了,这对用户来说是非常恼火的一件事情,想必各位也有上传文件传到一半被中断的 经历。用nginx代理之后,后台服务器的重启对用户上传的影响减少到了极点,而nginx是非常稳定的并不需要常去重启它,即使需要重启,利用kill -HUP就可以做到不间断重启nginx。
        3. 异步传输可以令负载均衡器更有保障,为什么这么说呢?在其它的均衡器(lvs/haproxy/apache等)里,每个请求都是只有一次机会的,假如用 户发起一个请求,结果该请求分到的后台服务器刚好挂掉了,那么这个请求就失败了;而nginx因为是异步的,所以这个请求可以重新发往下一个后台,下一个 后台返回了正常的数据,于是这个请求就能成功了。还是用用户上传文件这个例子,假如不但用了nginx代理,而且用了负载均衡,nginx把上传文件发往 其中一台后台,但这台服务器突然重启了,nginx收到错误后,会将这个上传文件发到另一台后台,于是用户就不用再花半小时上传一遍。
        4. 假如用户上传一个10GB大小的文件,而后台服务器没有考虑到这个情况,那么后台服务器岂不要崩溃了。用nginx就可以把这些东西都拦在nginx上,通过nginx的上传文件大小限制功能来限制,另外nginx性能非常有保障,就放心的让互联网上那些另类的用户和nginx对抗去吧。
        用异步传输会造成问题:
            后台服务器有提供上传进度的功能的话,用了nginx代理就无法取得进度,这个需要使用nginx的一个第三方模块来实现。

第8点补充:
    Nginx upstream支持的分配策略及原理:
        1. 轮询(默认):每个请求按照顺序逐一分配到不同的后端服务器。如后端服务器down掉,就切换到另一台并剔除down的后端主机
        2. weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
        3. ip_hash:每个请求按照访问ip的hash结果分配,不同ip的请求被分配到后端不同的服务器上,可以解决session的问题。

HAProxy:
    1. 支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
    2. 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
    3. 支持url检测后端的服务器出问题的检测会有很好的帮助。
    4. 更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现

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

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

相关文章

一文读懂,外贸中的invoice是什么意思?如何制作?

在外贸领域,invoice 这一词汇频繁出现,它对于国际贸易的顺利进行起着至关紧要的作用。本文将深入剖析外贸中 invoice的具体含义、与商业发票的区别,以及其开具流程与注意事项,同时向大家推荐一款高效实用的发票制作工具 ——Zoho …

【论文笔记-TPAMI 2024】FreqFusion:用于密集图像预测的频率感知特征融合

Frequency-aware Feature Fusion for Dense Image Prediction 用于密集图像预测的频率感知特征融合 Abstract:密集图像预测任务要求具有强类别信息和高分辨率精确空间边界细节的特征。为了实现这一点,现代分层模型通常利用特征融合,直接添加…

DeepSeek 专家级操作手册详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:趣享先生的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏&…

【Django自学】Django入门:如何使用django开发一个web项目(非常详细)

测试机器:windows11 x64 python版本:3.11 一、安装Django 安装步骤非常简单,使用pip安装就行 pip install django安装完成之后,python的 Scripts 文件夹下,会多一个 django-admin.exe (管理创建django项目的工具)。…

优云智算:借助强大镜像社区,开启AI算力新纪元!

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ 目录 前言: 平台介绍: …

抖音生活服务加强探店内容治理,2024年达人违规率下降30%

发布 | 大力财经 2月27日,抖音生活服务发布《2024抖音生活服务消费者权益保护年度报告》(以下简称“报告”)。报告显示,过去一年,抖音生活服务针对消费者反感的虚假、夸张探店内容,开展了专项治理。通过一…

LeetCode 热门100题-回文链表

题目描述: 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true 逻辑: 首先…

SpringCloud之Eureka、Ribbon、OpenFeign

目录1. SpringCloud Eureka(服务注册与发现组件)2. SpringCloud Ribbon(负载均衡与服务调用组件)3. SpringCloud OpenFeign(负载均衡与服务调用组件)SpringCloud:用于开发高度可扩展、高性能的分…

mamba_ssm和causal-conv1d详细安装教程

1.前言 Mamba是近年来在深度学习领域出现的一种新型结构,特别是在处理长序列数据方面表现优异。在本文中,我将介绍如何在 Linux 系统上安装并配置 mamba_ssm 虚拟环境。由于官方指定mamba_ssm适用于 PyTorch 版本高于 1.12 且 CUDA 版本大于 11.6 的环境…

【MySQL】表的基本操作

??表的基本操作 文章目录: 表的基本操作 创建查看表 创建表 查看表结构 表的修改 表的重命名 表的添加与修改 删除表结构 总结 前言: 在数据库中,数据表是存储和组织数据的基本单位,对于数据表的操作是每个程序员需要烂熟…

CES Asia 2025聚焦量子计算,多领域进展引关注

作为亚洲地区极具影响力的科技盛会,CES Asia 2025第七届亚洲消费电子技术贸易展(赛逸展)将在首都北京举办。本届展会以“创新、智能、互联”为主题,将全方位展示全球消费科技领域的最新成果与发展趋势。其中,量子计算作…

wps加载项学习3-扩展

WPS扩展API (创建一个WebShape,WebShape身上有一个DataSource方法,DataSource有一个属性CreateDataRange)绑定数据源,具体应用场景未知 NativeX扩展,把C,ruby,python等语言实现的算法…

进程间通信 —— 共享内存

目录 1.共享内存实现通信的原理 2.如何使用共享内存实现通信 共享内存通信接口介绍 shmget shmat shmdt shmctl 使用示例 key和shmid 3.共享内存通信的优缺点 缺点:不提供任何同步机制,可能会造成数据混乱。 优点:共享内存是进程…

3.【基于深度学习YOLOV11的车辆类型检测系统】

文章目录 研究背景主要工作内容一、系统核心功能介绍及效果演示演示:软件主要功能:检测界面各大板块说明:检测区域:结果显示:主要功能说明:(1)图片检测说明(2)图片批量检…

汽车悬架系统技术演进:从被动到全主动的革新之路(主动悬架类型对比)

在汽车工业的百年发展史中,悬架系统始终是平衡车辆性能与舒适性的关键战场。随着消费者对驾乘体验要求的不断提升,传统被动悬架已难以满足中高端车型的需求,而半主动与全主动悬架技术的崛起,正在重塑行业格局。本文将深入解析三大…

跨平台文件互传工具

一款高效便捷的文件互传工具,支持在线快速传输各种文件格式,无需注册,直接分享文件。适用于个人和团队间的文件共享,跨平台支持,轻松解决文件传输问题。免费的文件传输服务,让你的工作更高效。 gotool

算法题(81):询问学号

审题: 需要我们根据给出的n值确定录入数据个数,然后根据给出的数据存储学号。再根据m值确定需要输出的学号个数,然后根据数组内容输出学号 思路: 我们可以利用数组进行数据顺序存储,以及随机读取完成本题 由于学号最大为1e9&#…

(转)Java多态`

Base是父类,Sub是子类。 Base b new Sub(); b.out(); b持有的是子类Sub的实例,调用的是子类的方法。

JavaWeb后端基础(3)

原打算把Mysql操作数据库的一些知识写进去,但是感觉没必要,要是现在会的都是简单的增删改查,所以,这一篇,我直接从java操作数据库开始写,所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…

Selenium自动化测试秘籍:解锁常用函数实战指南

目录 1.元素的定位 2.操作测试对象 2.1.点击/提交对象 2.2.模拟按键输入 2.3.清除文本内容 2.4.获取文本信息: 特殊情况:元素属性值 获取当前页面标题和URL方法: 3. 窗口 3.1.切换窗口: 3.2.窗口大小的设置 4.屏幕截图…