NGINX 是一种功能强大的加速代理,适用于各种基于 HTTP 的应用。 它的缓存、HTTP 连接处理和卸载显著提高了应用的性能,尤其是在高负载期间。
编辑器 – NGINX Plus Release 5及更高版本还可以对基于TCP的应用进行负载均衡。 在第 6 版中,通过增加健康检查、动态重新配置、SSL 终止等功能,TCP 负载均衡得到了显著扩展。 在 NGINX Plus Release 7<.htmla> 及更高版本中,TCP 负载均衡器具有与 HTTP 负载均衡器完全相同的功能。 支持 UDP 负载均衡 在第 9 版中引入。
您可以在流
上下文而不是http
上下文中配置 TCP 和 UDP 负载均衡。 由于 HTTP 和 TCP/UDP 之间固有的差异,可用的指令和参数略有不同;有关详细信息,请参阅HTTP和TCP上游模块的文档。
NGINX Plus通过添加进一步的负载平衡功能扩展了 NGINX 的功能:健康检查、会话持久性、实时活动监控和负载平衡服务器组的动态配置。
这篇博文将引导您配置 NGINX,以便将流量负载平衡到一组 Web 服务器。 它重点介绍了 NGINX Plus 中的一些附加功能。
要进一步阅读,您还可以查看NGINX Plus 管理指南以及本文的后续文章《使用 NGINX 和 NGINX Plus 进行负载平衡,第 2 部分》 。
我们将首先将流量代理到一对上游 Web 服务器。 以下 NGINX 配置足以终止对端口 80 的所有 HTTP 请求,并以循环方式将它们转发到上游组中的 Web 服务器:
http { 服务器 {
listen 80;
location / {
proxy_pass http://backend;
}
}
上游后端 {
服务器 web-server1:80;
服务器 web-server2:80;
}
}
通过这个简单的配置,NGINX 会在端口 80 上收到的每个请求依次转发到web-server1和web-server2 ,在每种情况下都建立一个新的 HTTP 连接。
默认情况下,NGINX 使用循环方法在服务器之间均匀分布流量,并通过分配给每个服务器的可选“权重”来指示其相对容量。
IP Hash方法根据源 IP 地址的哈希值来分配流量。 来自同一客户端 IP 地址的请求总是被发送到同一个上游服务器。 这是一种粗糙的会话持久方法,每当服务器发生故障或恢复时,或者每当上游组被修改时,就会重新计算;如果需要会话持久,NGINX Plus 可以提供更好的解决方案。
最少连接方法将每个请求路由到具有最少活动连接的上游服务器。 在处理快速和复杂请求时,此方法非常有效。
所有负载平衡方法都可以使用服务器
指令上的可选权重
参数进行调整。 当服务器具有不同的处理能力时,这是有意义的。 在以下示例中,NGINX 定向到web-server2 的请求数量是定向到web-server1 的请求数量的四倍:
上游后端 { 区域后端 64k;least_conn;服务器 web-server1 权重=1;服务器 web-server2权重=4 ;}
在 NGINX 中,权重由每个工作进程独立管理。 NGINX Plus 使用共享内存段来存储上游数据(使用zone
指令进行配置),因此权重在各个工作者之间共享,并且流量分配更加准确。
如果 NGINX 尝试连接服务器、向其传递请求或读取响应标头时出现错误或超时,NGINX 将与另一台服务器重试连接请求。 (您可以在配置中包含proxy_next_upstream
指令来定义重试请求的其他条件。) 此外,NGINX 可以将故障服务器从潜在服务器集合中剔除,并偶尔尝试对其发出请求以检测其何时恢复。 服务器
指令的max_fails
和fail_timeout
参数控制此行为。
NGINX Plus 添加了一组带外健康检查,对每个上游服务器执行复杂的 HTTP 测试以确定它是否处于活动状态,并添加了慢启动机制以逐步将恢复的服务器重新引入负载均衡组:
服务器web-server1 slow_start=30s;
主机
头通常,上游服务器使用请求中的Host
标头来确定提供哪些内容。 如果你遇到意外情况404
服务器错误,或任何其他表明它提供错误内容的迹象,这是首先要检查的事情。 然后在配置中包含proxy_set_header
指令来为标题设置适当的值:
location / { proxy_pass http://backend; # 将“Host”标头重写为客户端请求中的值 # 或主服务器名称proxy_set_header Host $host ; # 或者,将值放在配置中:#proxy_set_header Host www.example.com; }
NGINX Plus 中的一系列高级功能使其成为上游服务器场前方的理想负载均衡器:
有关高级负载均衡和代理的详细信息,请参阅本文的后续文章使用 NGINX 和 NGINX Plus 进行负载均衡,第 2 部分。
要试用 NGINX Plus,请立即开始30 天免费试用,或联系我们讨论您的负载平衡用例。
“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”