• HAproxy+Nginx7层负载均衡


    一、关于4/7层负载平衡

    1.1 4层负载均衡

    将网络流量负载,平衡到多个服务器的最简单方法,是使用第4层(传输层)负载平衡。以这种方式进行负载均衡将根据IP范围和端口转发用户流量(即,如果请求进入http://yourdomain.com/anything,则流量将转发到处理yourdomain.com的所有请求的后端。端口80)。

    工作原理
    在这里插入图片描述
    用户访问负载均衡器,负载均衡器将用户的请求转发给后端服务器的Web后端组。无论选择哪个后端服务器,都将直接响应用户的请求。通常,Web后端中的所有服务器应该提供相同的内容 - 否则用户可能会收到不一致的内容。

    1.2 7层负载均衡

    7层负载平衡是更复杂的负载均衡网络流量的方法是使用第7层(应用层)负载均衡。使用第7层允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载平衡模式允许您在同一域和端口下运行多个Web应用程序服务器。

    工作原理
    在这里插入图片描述
    示例中,如果用户请求yourdomain.com/blog,则会将其转发到博客后端,后端是一组运行博客应用程序的服务器。其他请求被转发到web-backend,后端可能正在运行另一个应用程序。

    7层负载不同叫法

    7层负载均衡、应用程序负载均衡、URL负载均衡、动静分离技术

    特点

    • 支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富。
    • 支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。
    • 性能非常优秀,基于事件驱动的链接处理模式及单进程处理模式(和Nginx类似)让其性能卓越。
      处理模式
      单线程处理模式:所有客户端连接全部都由同一个服务进程来处理,目标就是等待连接,来一个分配一个,主要消耗cpu。
      多线程处理模式:多线程模式消耗内存,会限制并发而且多线程需要进程间通信,也会消耗相当多的cpu资源
    • 拥有一个功能出色的监控页面,实时了解系统的当前状况。
    • 功能强大的ACL支持,给用户极大的方便。

    免费、快速并且可靠

    是一款高性能的负载均衡软件。
    因为其专注于负载均衡这一些事情,
    因此与nginx比起来在负载均衡这件事情上做更好,更专业。

    是一款高性能的负载均衡软件。
    因为其专注于负载均衡这一些事情,
    因此与nginx比起来在负载均衡这件事情上做更好,更专业。

    用户群体

    包括 GitHub、Bitbucket 、Stack Overflow 、Reddit、Tumblr、Twitter 和 Tuenti 在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。

    在这里插入图片描述

    二、实战示例1

    准备环境

    4台LINUX,相互做好域名解析
    Client:192.168.238.129
    HApoxy: 192.168.238.138
    WEB1:	192.168.238.140
    WEB2:	192.168.238.146
    
    • 1
    • 2
    • 3
    • 4
    • 5

    再WEB1/WEB2上相同操作,修改index.html 文件,区分WEB1.WEB2

    systemctl stop firewalld && setenforce 0
    ntpdate IP地址		同步的主机
    yum install -y httpd
    echo web1 > /var/www/html/index.html
    
    • 1
    • 2
    • 3
    • 4

    在HAproxy

    HAproxy:
    yum -y install epel-release
    yum -y install haproxy 
    vim /etc/haproxy/haproxy.cfg
    ===========================================================================================================
    [root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
    
        #    by adding the '-r' option to the SYSLOGD_OPTIONS in
        #    /etc/sysconfig/syslog
        #
        # 2) configure local2 events to go to the /var/log/haproxy.log
        #   file. A line like the following can be added to
        #   /etc/sysconfig/syslog
        #
        #    local2.*                       /var/log/haproxy.log
        #
        log         127.0.0.1 local2
    
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy.pid
        maxconn     4000
        user        haproxy
        group       haproxy
        daemon
    
        # turn on stats unix socket
        stats socket /var/lib/haproxy/stats
    
    #---------------------------------------------------------------------
    # common defaults that all the 'listen' and 'backend' sections will
    # use if not designated in their block
    #---------------------------------------------------------------------
    defaults
        mode                    http
        log                     global
        option                  httplog
        option                  dontlognull
        option http-server-close
        option forwardfor       except 127.0.0.0/8
        option                  redispatch
        retries                 3
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s
        maxconn                 3000
    
    #---------------------------------------------------------------------
    # main frontend which proxys to the backends
    #---------------------------------------------------------------------
    #frontend  web *:80
    #    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    #    acl url_static       path_end       -i .jpg .gif .png .css .js
    
    #   use_backend static          if url_static
    #    default_backend             app
    ================================================
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    【经历】跨境电商公司目前已在职近2年->丰富且珍贵
    计算机视觉面试知识点总结
    动手学深度学习——循环神经网络的简洁实现(代码详解)
    STM32单片机-BKP和RTC
    ChatGPT 制作转化率分析漏斗图的制作
    即时通讯Web端开发:短轮询、Comet、Websocket、SSE
    Qt TCP网络编程基本教程
    关于重构的基本步骤与注意事项
    C# 8.0 添加和增强的功能【基础篇】
    Pandas DataFrame 的可视化工具大全
  • 原文地址:https://blog.csdn.net/benziwu/article/details/126573648