nginx 多种负载均衡

这篇具有很好参考价值的文章主要介绍了nginx 多种负载均衡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概念

Nginx 负载均衡技术是一种在分布式应用系统中广泛使用的技术,通过实现请求的平衡分发,能够提高应用程序的可用性和性能,保障系统的稳定性和可靠性。

Nginx 负载均衡是一种将请求集中到多个服务器上的技术。通过负载均衡,可以实现请求在不同的服务器间分发,从而避免单个服务器出现过载,提高应用程序的可用性和性能。

Nginx 负载均衡通过将一台服务器作为代理服务器,将请求转发到多个后端服务器,从而实现负载均衡。负载均衡时,代理服务器根据一定的负载均衡算法,将客户端请求转发到不同的后端服务器上,然后将响应返回给客户端。这样可以避免某个服务器的负载过重,使整个应用程序的负载更加均衡,提高了应用程序的可用性和性能。

Nginx 支持多种负载均衡算法,如轮询、IP 哈希、最少连接、加权轮询等。每种算法都有其特定的应用场景和优缺点,系统管理员可以根据不同的需求选择适当的算法。

二、多种策略

Nginx 负载均衡有以下几种类型:

  1. 轮询(Round Robin):这是最简单的一种负载均衡方式,循环将请求依次分发至每个被代理的服务器。Nginx 默认使用轮询方式。

  2. IP 哈希(IP Hash):这种方式根据请求客户端的 IP 地址来计算 hash,然后用 hash 值对服务器总数取模得到分配的服务器地址,如果客户端的 IP 地址不变,那么它的请求都将被分配到同一台服务器上。

  3. 最少连接(Least Connections):这种方式基于后端服务器连接数的统计数据,将新的请求分配到连接数最少的服务器上,这种方式能够确保每个后端服务器的负载尽量平衡。

  4. 加权轮询(Weighted Round Robin):这种方式通过为每个被代理的服务器分配不同的权重值,从而使得高权重服务器有更多的请求机会。

  5. 加权最少连接(Weighted Least Connections):这种方式将前两种负载均衡方式的优点相结合,不仅考虑到了每个服务器的负载情况,还能使高权重的服务器拥有更多的连接机会。

  6. URL Hash:这种方式是根据访问 URL 的 hash 值来进行分配,通常用于后端服务器不能共享 session 的情况,使得每次请求都能够访问到之前的数据。

以上这些方式都可以通过 Nginx 配置文件的 upstream 模块进行配置。根据不同的请求资源、后端服务器负载情况,以及业务需求,选择合适的负载均衡方式非常重要。

三、实例

3.1 1. 轮询(Round Robin)

假设我们有三台服务器,分别为 Server A、Server B 和 Server C,在 Nginx 配置文件中,配置如下:

http {
    upstream backend {
        server serverA.example.com;
        server serverB.example.com;
        server serverC.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

当请求到达服务的时候,Nginx 将会将其分发给 Server A、Server B、Server C 三台服务器,每次循环会将请求依次分发到每一台服务器上,这就是轮询(Round Robin)负载均衡方式的实现方式。

3.2 2. IP 哈希(IP Hash)

我们假设有三台服务器,分别为 Server1(IP 地址为 192.168.1.1)、Server2(IP 地址为 192.168.1.2)和 Server3(IP 地址为 192.168.1.3),并且我们希望客户端 IP 地址相同的请求,始终访问同一台服务器。在 Nginx 配置文件中,我们可以这样配置:

http {
    upstream backend {
        ip_hash;
        server server1.example.com;
        server server2.example.com;
        server server3.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

这里的 ip_hash 指令是 Nginx 内置的模块指令,它将使用客户端的 IP 地址哈希计算,将哈希值与服务器的总数进行取模运算,以此来实现请求将被分配到被哈希值计算得到的服务器上。

3.3 最少连接(Least Connections)

在这种方式中,Nginx 会将请求分配到连接数最少的服务器上,以便于后端服务器的负载尽可能平衡。在 Nginx 的配置文件中,可以这样配置:

http {
    upstream backend {
        least_conn;
        server server1.example.com;
        server server2.example.com;
        server server3.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

在这个例子中,least_conn 指令将会启用最少连接负载均衡策略。

3.4 加权轮询(Weighted Round Robin)

这种方式可以通过给不同的服务器配置不同的权重,从而让高权重的服务器有更多的请求机会。在 Nginx 的配置文件中可以这样配置:

http {
    upstream backend {
        server server1.example.com weight=3;
        server server2.example.com weight=2;
        server server3.example.com weight=1;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

在这个例子中,我们给 server1 权重为 3,server2 权重为 2,server3 权重为 1。这实际上意味着,将有 3/6 的请求会被路由到 Server1,有 2/6 的请求会被路由到 Server2,有 1/6 的请求会被路由到 Server3。

3.5 加权最少连接(Weighted Least Connections)

与最少连接不同的是,加权最少连接还将考虑每个服务器的权重,将新的请求分配到连接数最少且权重最大的服务器上。在 Nginx 的配置文件中,可以这样配置:

http {
    upstream backend {
        least_conn;
        server server1.example.com weight=3;
        server server2.example.com weight=2;
        server server3.example.com weight=1;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

在这个例子中,least_conn 指令将会启用最少连接负载均衡策略,并且将 server1 的权重设置为 3, server2 的权重设置为 2,将 server3 的权重设置为 1。这种方式将会将新的请求分配到连接数最少且权重最大的服务器上。

3.6 6. URL 哈希(URL Hash)

这种方式根据请求 URL 的 hash 值来计算,以此来决定将请求路由到哪个后端服务器。特别适用于后端服务器不能共享 session 的情况,让每次请求都能够访问到之前的数据。在 Nginx 的配置文件中,可以这样配置:

http {
    upstream backend {
        hash $request_uri;
        server server1.example.com;
        server server2.example.com;
        server server3.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

在这个例子中,配置了 hash 指令,并以 $request_uri 作为哈希算法,将请求路由到哈希值对应的服务器上。每个请求的路由结果都是固定的,因此能够保证同一个 URL 的请求能够被分配到同一个后端服务器来处理。

四、TCP 负载

Nginx TCP 负载均衡是针对 TCP 层面的请求(如 FTP、SMTP、MySQL 等应用层协议)进行负载均衡的一种技术。与 HTTP 负载均衡类似,Nginx TCP 负载均衡同样是将客户端的请求分发到多个后端服务器上,达到负载均衡的目的。

Nginx TCP 负载均衡可以分为两种类型:

  1. 4 层负载均衡:4 层负载均衡是指在传输层 (Layer 4) 完成负载均衡,此时 Nginx 只负责将单个请求转发到后端服务器,而不会解析请求的内容。

  2. 7 层负载均衡:7 层负载均衡是指在应用层 (Layer 7) 完成负载均衡,此时 Nginx 拥有更高级别的请求解析和处理能力,能够实现更精确的负载均衡,例如根据请求的 URL 进行负载均衡。

下面是一个 Nginx TCP 负载均衡的例子:

stream {    
    upstream backend {    
        server server1.example.com:3306;
        server server2.example.com:3306;
        server server3.example.com:3306;
    }

    server {
        listen 3306;
        proxy_pass backend;
    }
}

在这个例子中,我们指定了一个名为 backend 的 upstream,其中包含了三个后端服务器的地址和端口号。在 server 段中,我们定义了监听的端口号为 3306,将请求路由到了 backend 这个 upstream 中。这样,客户端的请求就会被平均转发到三个后端服务器中,达到负载均衡的目的。

需要注意的是,在 TCP 负载均衡中,Nginx 只能转发 TCP 的请求,而不能转发 UDP 的请求。文章来源地址https://www.toymoban.com/news/detail-730632.html

到了这里,关于nginx 多种负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式 - 服务器Nginx:一小时入门系列之负载均衡

    跨多个应用程序实例的负载平衡是一种常用技术,用于优化资源利用率、最大化吞吐量、减少延迟和确保容错配置。‎使用 nginx 作为非常有效的HTTP负载平衡器,将流量分配到多个应用程序服务器,可以提升Web应用程序的性能,提高扩展性和可靠性。 使用 upstream 定义一组服务

    2024年02月12日
    浏览(36)
  • 【Nginx】负载均衡当其中一台服务器宕机之后

    搭建一个简单的负载均衡,然后关闭其中一台再来访问,会发现我们的浏览器卡住一直转圈圈,过了很久才会显示结果。由此我们可以得出结论Nginx负载的时候如果其中一台服务挂掉了,它会把请求转发到另一个可以提供服务的机器,其中这之间的超时等待默认是60s。我们可

    2024年02月08日
    浏览(37)
  • nginx两台负载均衡服务器之间使用keepalived实现高可用

    单点故障:某个重要的功能只有一份,如果他出现问题,会导致全局不能使用 “高可用性”(High Availability,缩写为HA)用于描述系统或服务在面临故障、硬件或软件问题时能够继续正常运行的能力。高可用性的目标是最大程度地减少系统中断或停机时间,确保用户可以随时

    2024年02月09日
    浏览(33)
  • haproxy服务器对nginx服务器web服务调度负载均衡、用nfs做共享目录(脚本部署)

    目录 一、准备 二、在作为haproxy的服务器上导入以下shell执行haproxy安装 三、由于nginx服务需要用的nfs共享目录,先部署nfs 四、nginx服务器1部署 五、nginx服务器2部署同上 六、测试 一、准备 四台服务器 系统 IP 搭建服务器 centos7 192.168.1.12 haproxy centos7 192.168.1.132 nfs(rpcbind) ce

    2024年02月09日
    浏览(35)
  • Web服务器群集:Nginx+Tomcat实现负载均衡与动静分离集群

    目录 一、理论 1.多实例 2.Nginx负载均衡 3.Nginx动静分离 4.配置Nginx+Tomcat负载均衡 5.配置Nginx+Tomcat动静分离集群 6.Nginx 四层代理配置 二、实验 1.配置Nginx+Tomcat负载均衡 2.、配置Nginx+Tomcat动静分离集群 三、问题 1.服务器群集与集群的区别 2.正向代理与反向代理的区别 四、总结 (

    2024年02月11日
    浏览(35)
  • nginx 多种负载均衡

    Nginx 负载均衡技术是一种在分布式应用系统中广泛使用的技术,通过实现请求的平衡分发,能够提高应用程序的可用性和性能,保障系统的稳定性和可靠性。 Nginx 负载均衡是一种将请求集中到多个服务器上的技术。通过负载均衡,可以实现请求在不同的服务器间分发,从而避

    2024年02月07日
    浏览(24)
  • 防火墙之服务器负载均衡

    防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安

    2024年02月07日
    浏览(81)
  • SRE之前端服务器的负载均衡

    今天和小伙伴们分享一些 前端服务器 的 负载均衡 技术 内容为结合 《 SRE Google运维解密》 整理: 涉及DNS 负载均衡 VIP 负载均衡 反向代理负载均衡 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我

    2024年02月13日
    浏览(33)
  • 华为防火墙实现服务器负载均衡

    292、实验:服务器的负载均衡SLB 实验topo: 实验场景: 一些访问流量较大的服务,会面临着有多个服务器的情况,所以我们就要在多个服务器之间做负载均衡; 实验需求: 新建一条负载均衡NAT,让外网访问内网服务器的时候,能够实现负载均衡,并且,负载均衡使用轮询算

    2023年04月08日
    浏览(40)
  • F5服务器负载均衡能力如何?一文了解

    但凡知道服务器负载均衡这个名词的,基本都知道 F5,因为负载均衡是 F5 的代表作,换句话来说,负载均衡就是由 F5 发明的。提到F5服务器负载均衡能力如何?不得不关注F5提出的关于安全、网络全面优化的解决方案,在其分布式云的产品中,全局F5服务器负载均衡的优势得

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包