nginx7层负载均衡原理

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

一、关于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

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

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

在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
================================================
知秋君
上一篇 2024-08-19 17:48
下一篇 2024-08-19 17:12

相关推荐