• Haproxy负载均衡


    nginx支持四层和七层转发

    Haproxy也支持四层和七层转发

    (重点)LVS-DR模式和LVS-NAT模式是基于四层还是七层转发?

    四层转发(IP地址+端口)

    LVS-TUN模式是四层+七层转发

    基于四层的转发:

    1、LVS

    2、nginx

    3、haproxy

    基于七层的转发:

    1、nginx

    2、haproxy

    haproxy

    主要用于高并发的web场景。可以支持一万以上的并发请求。高性能的TCP和http的负载均衡器。版本:1.5.9

    1、工作原理

    和nginx、lvs一样,都是提供一个代理地址

    2、支持的功能

    (1)基于tcp四层和http七层的反向代理

    (2)支持https的代理配置

    (3)支持针对http请求添加cookie(缓存),转发到后端服务器(添加缓存)。haproxy自身不带缓存功能

    (4)支持主备服务器切换(keepalived)

    (5)实现基于端口的实时监控

    (6)压缩响应报文

    3、特点

    (1)可靠性和稳定性非常好,可以和负载均衡的硬件设备f5 BIG相媲美

    (2)可以同时维护40000-50000个并发,单位时间内处理最大请求数20000个

    (3)可以支持8种负载均衡算法,但是haproxy不带缓存功能,却可以支持会话保持

    (4)支持虚拟主机功能

    4、负载均衡算法

    (1)roundrobin轮询(常用)

    (2)static-rr加权轮询(常用)

    (3)leastconn最小连接数(常用)

    (4)source根据请求的源IP进行调度

    (5)uri根据请求地址进行调度

    (6)url param根据URL参数实现调度(很少用)

    (7)hdr(name)根据http的请求头锁定每一次http的请求(很少用)

    (8)rdp-cookie(name)根据cookie的名称锁定每一次请求(很少用)

    5、lvs、nginx、haproxy负载均衡的区别

    (1)lvs基于linux内核实现负载均衡,性能最高,但对系统硬件要求比较高。nginx和haproxy基于第三方应用实现负载均衡(用户态),性能较低,最低的是nginx

    (2)lvs可以实现ip+端口的四层负载均衡,无法实现基于http请求的转发。nginx和haproxy都可以实现四层和七层的转发

    (3)lvs只能实现四层转发,所以只能检测端口(检测状态单一)。haproxy可以实现更复杂的(例如:端口、uri)

    (4)haproxy虽然功能强大,但整体性能低于lvs,nginx性能比haproxy低。性能:lvs>haproxy>nginx(bug多,稳定性查,处理小集群足以)

    (5)nginx主要应用是提供web服务或者缓存服务器,nginx的stream模块和upstream模块也可以支持集群,但对节点的健康检查能力不行,没有lvs和haproxy的监控性能好

    6、haproxy缺点

    (1)单节点部署(单实例运行)。代理服务器出现故障,整个负载集群全部不可用,必须结合keepalived

    (2)haproxy是一个无状态的负载均衡器,没有缓存,依靠应用程序实现会话保持。状态不是保存在代理服务器,而是在后端服务器,或者依靠cookie

    (3)日志问题:haproxy的日志较简单,只提供基本的请求日志和错误日志,更高级的日志需由人工自定义

    7、haproxy实现负载均衡,haproxy日志单独存放实验

    实验条件:

    nginx1——20.0.0.11——haproxy服务

    nginx2——20.0.0.21——后端真实服务器1——nginx服务

    nginx3——20.0.0.31——后端真实服务器2——nginx服务

    test1客户端

    实验步骤:

    1、搭建haproxy服务

    (1)安装依赖环境

    (2)编译安装haproxy

    uname -r查看内核版本。只要比2628大,统一用2628

    编译

    安装

    haproxy需要自己进行服务配置(自己指定主配置文件存放目录)

    2、指定目录存放haproxy配置文件

    3、修改配置文件

    或者做四层代理

    check intet 开启对后端服务器的健康检查,检查时间间隔2000ms

    fall 3  连续3次检测不到后端服务器的心跳线,则认为该节点失效

    3、启动haproxy服务

    4、设置后端真实服务器真实静态页面

    (1)nginx2

    (2)nginx3

    5、测试

    6、模拟节点服务器故障——nginx2故障

    测试

    7、模拟节点服务器恢复——nginx2正常运行

    8、haproxy日志分割

    创建脚本便于分割日志

    测试

  • 相关阅读:
    QT+OSG/osgEarth编译之四十七:osgFX+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5核心库osgFX)
    2023二建建筑施工备考第二天Day03
    ThreadLocal
    dot product【点积】
    区块链技术在跑腿服务中的应用与App系统开发
    iptables详解:链、表、表链关系、规则的基本使用
    JS高级:js是单线程的原因
    原创!—混合灰狼层次结构的自适应麻雀搜索算法GWHASSA
    3D成像技术概述
    PyTorch 入门之旅
  • 原文地址:https://blog.csdn.net/2303_79207100/article/details/134035724