Nginx负载均衡设置
在现在阶段,负载均衡是一个被普遍应用的技术。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应用上面。
上面是对负载均衡配置几种方式的简单介绍,希望对大家有帮助。
相关文章
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 如何修复 Reponse Status 0 Worker Process Exited on Signal 11
发布时间:2022/05/14 浏览次数:173 分类:网络
-
实际上,让我们首先澄清一下:HTTP 没有状态码 0(零)。 问题是 nginx 工作进程在处理请求时死亡,因此连接中断,导致没有任何响应数据的错误。
Nginx 如何修复 Unknown "connection_upgrade" Variable 错误
发布时间:2022/03/28 浏览次数:4924 分类:网络
-
在使用 Websockets 或使用 nginx 配置服务器时,我们可能会在 nginx 配置中遇到 `$connection_upgrade` 变量。 $connection_upgrade 变量默认不可用。 但是,建议在反向代理设置中定义和使用它。
Nginx - 如何修复 “ssl” Directive Is Deprecated, Use “listen … ssl” 错
发布时间:2022/03/23 浏览次数:130 分类:网络
-
本篇文章介绍如何修复 nginx 的 “ ‘ssl’ Directive Is Deprecated, Use ‘listen … ssl’ ” 错误。Nginx 使用类似 YAML 的定义格式来创建配置。 这种格式随着时间的推移通过添加、删除或更改关键
在 Ubuntu 20.04 如何使用 Let's Encrypt 结合 Nginx 配置 https
发布时间:2022/02/03 浏览次数:319 分类:操作系统
-
在本篇文章中,我们介绍了安装了 Let's Encrypt 客户端 certbot,为我们的域名下载 SSL 证书,配置 Nginx 来使用这些证书,并设置自动证书更新。
深入理解 Nginx Location 块匹配算法
发布时间:2022/01/15 浏览次数:76 分类:网络
-
与 Nginx 用于选择将处理请求的 Server 块的过程类似,Nginx 也有一个既定的算法来决定 Server 块中的哪个 Location 块用于处理请求。