Haproxy高性能负载均衡(天生的负载均衡器)

devtools/2024/12/4 16:09:45/
Haproxy高性能负载均衡(天生的负载均衡器)1.Haproxy相关概念(1)概念HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到公网(2)工作模式代理与调度的区别:代理:工作于osi模型的第七层,对客户端的"数据包"进行二次封装比如手机和电脑的请求数据包调度:工作于osi模型的第四层,直接转发客户端的数据包到真实服务器mode http:只适用于web服务mode tcp:适用于各种服务mode health:仅做健康检查,很少使用(3)调度算法roundrobin:轮询static-rr:加权轮询leastconn:最少连接者先处理  source:根据请求源IP,类似于nginx的ip_hash  ri:根据请求的URI  rl_param:根据请求人URL参数'balance url_param'  rdp-cookie(name) :根据cookie(name)来锁定并哈希每一次的TCP请求  hdr(name) :根据HTTP请求头来锁定每一次HTTP请求2.Haproxy负载均衡集群搭建(1)lvs1节点安装Haproxy软件[root@pubserver cluster]# vim 12_install_haproxy.yml---- name: config haproxyhosts: lvs1tasks:- name: stop keepalived #停止Keepalived服务service:name: keepalivedstate: stoppedenabled: false- name: remove softs    #卸载软件yum:name: ipvsadm,keepalivedstate: absent- name: modify hostname #设置主机名shell: "hostnamectl set-hostname haproxy"- name: install haproxy #安装软件yum:name: haproxystate: present(2)配置Haproxy负载平衡集群配置文件说明global为全局配置,通常保持默认即可defaults为缺省配置,如果后续有相同配置则覆盖缺省值frontend描述用户和haproxy交互backend描述haproxy和真实服务器交互frontend和backend的配置方式适合负载的url代理配置,通常不使用通常使用listen模式,理解为虚拟主机即可[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg ...listen webservers           #定义虚拟服务器bind 0.0.0.0:80     #定义监听端口,0.0.0.0允许本机所有mode http           #定义工作模式balance roundrobin  #定义调度算法server web1 192.168.88.100:80 check inter 2000 rise 2 fall 5server web2 192.168.88.200:80 check inter 2000 rise 2 fall 5#check:对后端服务器进行健康检查#inter:健康检查心跳包发送时间间隔#rise:连续检查N次有响应则认为健康#fall:连续检查N次无响应则认为故障(3)启动systemctl start haproxy.service 3.Haproxy健康检查页面(1)配置Haproxy[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg ...listen stats                    #定义虚拟服务器bind 0.0.0.0:1080       #定义监听端口stats refresh 30s       #定义页面刷新时间stats uri /stats        #定义请求路径stats auth admin:admin  #定义用户/密码(2)## 参数说明:Queue:队列数据的信息(当前队列数量、最大值、队列限制数量)Session rate:每秒会话率(当前值、最大值、限制数量)Sessions:总会话量(当前值、最大值、总量)Bytes:流量统计(入站、出站流量)Denied:拒绝请求情况(拒绝请求、拒绝回应)Errors:错误请求情况(错误请求、错误连接、错误回应)Warings:警告情况(重新尝试警告、重新连接警告)Server:后端服务器情况(状态、最后检查时间、权重、备份服务器数量、宕机服务器数量、宕机时长	HAProxy、LVS、Keepalived、Nginx区别:高性能:HAProxy专注于高性能负载均衡,可工作于四层和七层高可用:LVS基于linux内核的负载均衡技术,工作在四层,资源消耗低,承受的访问量大Keepalived则强调高可用性,通过VRRP协议实现服务的主备切换,健康检查等相对全面:Nginx作为高性能的HTTP和反向代理服务器,广泛应用于Web应用程序中,提供高并发连接处理和灵活的配置选项,工作在七层功能:nginx>haproxy>lvs性能:lvs>haproxy>nginx

Haproxy高性能负载均衡(天生的负载均衡器)

    1.Haproxy相关概念
     (1)概念
        HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
        HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理
        可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到公网

    (2)工作模式

        代理与调度的区别:

        代理:工作于osi模型的第七层,对客户端的"数据包"进行二次封装
                比如手机和电脑的请求数据包
        调度:工作于osi模型的第四层,直接转发客户端的数据包到真实服务器

        mode http:只适用于web服务
        mode tcp:适用于各种服务
        mode health:仅做健康检查,很少使用

    (3)调度算法
        roundrobin:轮询
        static-rr:加权轮询
        leastconn:最少连接者先处理  
        source:根据请求源IP,类似于nginx的ip_hash  
        ri:根据请求的URI  
        rl_param:根据请求人URL参数'balance url_param'  
        rdp-cookie(name) :根据cookie(name)来锁定并哈希每一次的TCP请求  
        hdr(name) :根据HTTP请求头来锁定每一次HTTP请求

    2.Haproxy负载均衡集群搭建

        (1)lvs1节点安装Haproxy软件
            [root@pubserver cluster]# vim 12_install_haproxy.yml
            ---
            - name: config haproxy
              hosts: lvs1
              tasks:
                - name: stop keepalived #停止Keepalived服务
                  service:
                    name: keepalived
                    state: stopped
                    enabled: false
                - name: remove softs    #卸载软件
                  yum:
                    name: ipvsadm,keepalived
                    state: absent
                - name: modify hostname #设置主机名
                  shell: "hostnamectl set-hostname haproxy"
                - name: install haproxy #安装软件
                  yum:
                    name: haproxy
                    state: present
            
        (2)配置Haproxy负载平衡集群

          配置文件说明
            global为全局配置,通常保持默认即可
            defaults为缺省配置,如果后续有相同配置则覆盖缺省值
            frontend描述用户和haproxy交互
            backend描述haproxy和真实服务器交互
            frontend和backend的配置方式适合负载的url代理配置,通常不使用
            通常使用listen模式,理解为虚拟主机即可

        [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
            ...
            listen webservers           #定义虚拟服务器
                    bind 0.0.0.0:80     #定义监听端口,0.0.0.0允许本机所有
                    mode http           #定义工作模式
                    balance roundrobin  #定义调度算法
                    server web1 192.168.88.100:80 check inter 2000 rise 2 fall 5
                    server web2 192.168.88.200:80 check inter 2000 rise 2 fall 5
                        #check:对后端服务器进行健康检查
                        #inter:健康检查心跳包发送时间间隔
                        #rise:连续检查N次有响应则认为健康
                        #fall:连续检查N次无响应则认为故障
        
        (3)启动systemctl start haproxy.service 

        
    3.Haproxy健康检查页面
          (1)配置Haproxy
        [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
        ...
        listen stats                    #定义虚拟服务器
                bind 0.0.0.0:1080       #定义监听端口
                stats refresh 30s       #定义页面刷新时间
                stats uri /stats        #定义请求路径
                stats auth admin:admin  #定义用户/密码

        (2)## 参数说明:
            Queue:队列数据的信息(当前队列数量、最大值、队列限制数量)
            Session rate:每秒会话率(当前值、最大值、限制数量)
            Sessions:总会话量(当前值、最大值、总量)
            Bytes:流量统计(入站、出站流量)
            Denied:拒绝请求情况(拒绝请求、拒绝回应)
            Errors:错误请求情况(错误请求、错误连接、错误回应)
            Warings:警告情况(重新尝试警告、重新连接警告)
            Server:后端服务器情况(状态、最后检查时间、权重、备份服务器数量、宕机服务器数量、宕机时长    


HAProxy、LVS、Keepalived、Nginx区别:

    
    高性能:HAProxy专注于高性能负载均衡,可工作于四层和七层
    
    高可用:LVS基于linux内核的负载均衡技术,工作在四层,资源消耗低,承受的访问量大
    Keepalived则强调高可用性,通过VRRP协议实现服务的主备切换,健康检查等
    
    相对全面:Nginx作为高性能的HTTP和反向代理服务器,广泛应用于Web应用程序中,提供高并发连接处理和灵活的配置选项,工作在七层
    
    功能:nginx>haproxy>lvs
    性能:lvs>haproxy>nginx


http://www.ppmy.cn/devtools/139383.html

相关文章

Newman+Jenkins实现接口自动化测试(超详细总结)

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、是什么Newman Newman就是纽曼手机这个经典牌子,哈哈,开玩笑啦。。。别当真,简单地说Newman就是命令行版的Postman&…

基于Matlab卡尔曼滤波的GPS/INS集成导航系统研究与实现

随着智能交通和无人驾驶技术的迅猛发展,精确可靠的导航系统已成为提升车辆定位精度与安全性的重要技术。全球定位系统(GPS)和惯性导航系统(INS)在导航应用中各具优势:GPS提供全球定位信息,而INS…

【Axure教程】输入框控制多选下拉列表

多选下拉列表是一种常见的用户界面组件,通常用于需要让用户从一组选项中选择多个项的场景。它结合了下拉菜单的简洁性和多选功能的灵活性。 今天我们就来学习,怎么在Axure中制作多选下拉列表,并且通过输入框来动态控制多选列表里的选项。 一…

如何在虚拟机中安装python 和 jupyter,并且启动运行Delta Lake,以及解决一下启动过程中出现的错误(保姆级教程)

文章目录 如何启动Delta Lake环境准备配置环境变量启动Delta Lake 本文演示如何在虚拟机上启动Delta Lake、以及启动期间出现的错误,觉得写的不错的可以三连支持一下哦! 如何启动Delta Lake 环境准备 在虚拟机中:安装 Spark 和 jupyterlab…

三维地形图计算软件(四)-用PYQT5+vtk画任意多面体示例

现已完成三维地形图三角网的三维显示和用多线程计算平基土石方功能,正在准备进入将用于计算出的全部三棱柱(锥)实体也能以三维方式显示出来,并可以选中三维实体和查看他们的属性,现将如何在已知几个点的情况下画出任意…

【再谈设计模式】桥接模式 ~ 抽象与实现的灵活桥梁

一、引言 在软件开发过程中,软件设计中,面对复杂性和变化性时,设计模式提供了一种优雅的解决方案。桥接模式(Bridge Pattern)是一种结构型设计模式,它通过将抽象与实现分离来实现灵活的扩展。本文将深入探讨…

GitLab使用中遇到的一些问题-记录

错误内容一 Warning: Permanently added gitlab.com (ED25519) to the list of known hosts. gitgitlab.com: Permission denied (publickey). Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. …

【云原生系列】如何判断哪家云服务器提供商更适合我

选择合适的云服务器提供商是每个企业在进行云迁移时都会遇到的关键决策。随着云计算的广泛普及,各大云服务商都提供了丰富的服务和解决方案。但问题来了,怎么判断哪家云服务器提供商更适合自己的需求呢?这个问题没有统一答案,因为…