迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 网络 >

Nginx负载均衡设置

作者:迹忆 最近更新:2022/11/19 浏览次数:

在现在阶段,负载均衡是一个被普遍应用的技术。Nginx作为http的负载均衡服务器,被应用的越来越广泛。

Nginx设置负载均衡有三种方式:

round-robin——这种方式是对于访问请求来说,将请求循环分发到应用服务器上。

least-connect——下一个请求被分发到当前活动连接数最少的应用服务器上。

ip-hash——通过hash方法决定将下一个请求分发到哪一个应用服务器上。

下面我们分别来看这三种方式

Round-robin 默认方式

这是最简单的分发方式,配置也最简单。我们看下面的例子。

例一

http {
    upstream onmpw {
        server 192.168.144.128;
        server 192.168.144.132;
        server 192.168.144.131;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://onmpw;
        }
    }
}

在例一中,有三个应用实例。因为在upstream中我们没有指定负载方式,所以默认为round-robin方式。也就是说,在第一次请求的时候,nginx负载均衡将请求分发到128应用服务器上;第二次请求会被分发到132应用上;第三次请求被分发到131应用上;第四次的时候就又被分发到128上面。就这样循环往复将请求在各应用服务器上分发。

Least connect 负载均衡设定方式

另一种负载均衡方式就是least-connect。这种方式看起来似乎对于应用服务器来说更公平。因为在一些请求需要花费很长时间才能完成的情况下,这种方式就体现出了它的优势了。使用这种方式,负载服务尽量不会去是一台超负荷的应用服务器区响应过多的请求。它会把新的请求分发到负载量较小的应用服务上面。

其设置方式如下(只需在例一基础上稍加改动)

例二

upstream onmpw {
least_conn;
    server 192.168.144.128;
    server 192.168.144.132;
    server 192.168.144.131;
}

会话持久性——负载均衡

在这里需要注意一下,不管是round-robin也好还是least-connect也罢。这两种方式在处理请求的时候,都有可能会把后续的请求分发到其他的不同应用服务器上。它们是不能保证同一个客户端的请求总是转向同一个应用服务器。

如果我们需要将一个客户端绑定到一个特定的应用服务器上面——也就是通过将特定的客户端请求分发到特定的应用服务器上面,使客户端的会话(session)具有持久性。这时候需要用到的就是ip-hash的负载方式了。

使用这种方式,通过将客户端的ip地址作为hash键去决定将客户端的请求分发到哪一台应用服务器上面。这种方式保证了来自同一客户端的请求总是会被分发到特定的应用服务器上面去。除非这个特定的服务器停止工作了。

想要配置ip-hash的负载方式,只需在例一的upstream中添加 ip_hash即可

例三

upstream onmpw {
ip_hash;
    server 192.168.144.128;
    server 192.168.144.132;
    server 192.168.144.131;
}

临时移除某台应用服务器

如果某一台应用服务器需要临时移除,不允许请求访问。我们可以在其后面使用 down 来标记此台服务器,这是nginx不会将请求分发到这台应用服务器上面。当先前由这台服务器响应的客户端再次发起请求的时候,nginx会自动将其分发到其他的应用服务器上面。

例四

upstream onmpw {
    server 192.168.144.128;
    server 192.168.144.132;
    server 192.168.144.131 down;
}  

应用服务器的权重

默认情况下,Nginx是按照round-robind的方式循环向应用服务器组的分发请求的。我们可以通过weight参数来设置每个应用服务器的权重。默认情况下每台应用的权重为1。

例五

upstream onmpw {
    server 192.168.144.128 weight=5;
    server 192.168.144.132;
    server 192.168.144.131;
}

在例五中,128的权重设为5,其他的两台应用服务器的权重则默认为1。按照此种情况,每有7个请求,有5个会分发到128应用上,其他两个则分别分发到132和131应用上。
这就是给服务器设置权重的作用。

备用应用服务器

在实际应用中,并不是我们所有的应用服务器都要参与。其中,我们可以将一台或者几台应用作为备用服务器。当其他的应用服务器出现问题不能访问的时候,Nginx会自动启动备用的应用服务器。

下面我们在例五的基础上稍加改动

例六

upstream onmpw {
    server 192.168.144.128 weight=5;
    server 192.168.144.132;
    server 192.168.144.131 backup;
}

这个例子和例五的作用不同的是,131这台应用作为备用服务器。当没有6个请求的时候,有5个会分发给128应用,1个分发到132上面。只有当128和132应用服务器都不能访问的时候,Nginx会自动把请求分发到131应用上面。

上面是对负载均衡配置几种方式的简单介绍,希望对大家有帮助。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Nginx 和 uWISG 服务器之间如何配合工作的

发布时间:2023/03/29 浏览次数:158 分类:网络

Nginx和uWISG是两个常用的服务器软件,它们可以协同工作以提供更加稳定和高效的网络服务。本文将详细介绍Nginx和uWISG之间的配合工作原理,以及如何配置它们以实现最佳性能。 一、

设置 PHP-FPM 和 Nginx Docker 容器

发布时间:2023/03/29 浏览次数:147 分类:PHP

在本篇文章中,我们将讨论在 Docker 上进行本地开发时如何设置 PHP、PHP-FPM 和 NGINX 容器。

在 Ubuntu 18.04 上使用 Nginx 安装 WordPress

发布时间:2022/10/15 浏览次数:223 分类:操作系统

WordPress 是最受欢迎的开源内容管理系统 (CMS) 之一,与 Drupal 或 Joomla 等其他 CMS 相比,其市场份额高达 60%。 WordPress 可用于开发任何类型的网站,无论是博客、小型企业还是大型企业。

Nginx 运行但是不提供站点服务

发布时间:2022/05/15 浏览次数:186 分类:网络

我们最近在一台新机器上安装了 nginx 版本 1.17。 在 sites-available`中创建的配置被符号链接到 `sites-enabled` ,但 nginx 没有为任何域名提供服务。

Nginx 如何修复 Unknown "connection_upgrade" Variable 错误

发布时间:2022/03/28 浏览次数:4924 分类:网络

在使用 Websockets 或使用 nginx 配置服务器时,我们可能会在 nginx 配置中遇到 `$connection_upgrade` 变量。 $connection_upgrade 变量默认不可用。 但是,建议在反向代理设置中定义和使用它。

深入理解 Nginx Location 块匹配算法

发布时间:2022/01/15 浏览次数:76 分类:网络

与 Nginx 用于选择将处理请求的 Server 块的过程类似,Nginx 也有一个既定的算法来决定 Server 块中的哪个 Location 块用于处理请求。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便