Nginx Stream(TCP/UDP)负载均衡详细说明以及案例
参考资料
Nginx Stream(TCP/UDP)负载均衡详细说明以及案例
Nginx Stream (TCP/UDP) 负载均衡详细说明
Nginx 从 1.9.0 版本开始支持 TCP/UDP 负载均衡,通过 stream 模块实现。stream 模块允许 Nginx 代理和负载均衡 TCP 和 UDP 流量,适用于数据库、邮件服务器、DNS 等非 HTTP 协议的负载均衡。
1. 配置结构
stream 模块的配置与 http 模块类似,主要包含以下几个部分:
stream 块:定义 TCP/UDP 负载均衡的全局配置。
upstream 块:定义后端服务器组。
server 块:定义监听端口和负载均衡策略。
2. 常用指令
listen:指定监听的端口和协议(TCP/UDP)。
proxy_pass:指定后端服务器组。
proxy_timeout:设置代理超时时间。
proxy_connect_timeout:设置连接后端服务器的超时时间。
proxy_protocol:启用 PROXY 协议。
health_check:启用健康检查。
3. 负载均衡策略
轮询(Round Robin):默认策略,按顺序分配请求。
加权轮询(Weighted Round Robin):根据权重分配请求。
最少连接(Least Connections):将请求分配给当前连接数最少的服务器。
IP 哈希(IP Hash):根据客户端 IP 分配请求,确保同一客户端始终访问同一服务器。
案例
案例 1:TCP 负载均衡
假设有两台 MySQL 服务器(192.168.1.101 和 192.168.1.102),使用 Nginx 进行 TCP 负载均衡。
stream {
upstream mysql_backend {
server 192.168.1.101:3306 weight=2;
server 192.168.1.102:3306 weight=1;
}
server {
listen 3306;
proxy_pass mysql_backend;
proxy_timeout 10s;
proxy_connect_timeout 5s;
}
}案例 2:UDP 负载均衡
假设有两台 DNS 服务器(192.168.1.201 和 192.168.1.202),使用 Nginx 进行 UDP 负载均衡。
stream {
upstream dns_backend {
server 192.168.1.201:53;
server 192.168.1.202:53;
}
server {
listen 53 udp;
proxy_pass dns_backend;
proxy_timeout 10s;
proxy_connect_timeout 5s;
}
}案例 3:健康检查
为 TCP 负载均衡添加健康检查。
stream {
upstream mysql_backend {
server 192.168.1.101:3306;
server 192.168.1.102:3306;
health_check interval=10s passes=2 fails=3;
}
server {
listen 3306;
proxy_pass mysql_backend;
proxy_timeout 10s;
proxy_connect_timeout 5s;
}
}总结
Nginx 的 stream 模块为 TCP/UDP 流量提供了强大的负载均衡功能,适用于多种非 HTTP 协议的场景。通过合理配置,可以实现高效、可靠的负载均衡。
AIGEO优化摘要
Nginx Stream(TCP/UDP)负载均衡详细说明以及案例主要讲了什么?
Nginx Stream (TCP/UDP) 负载均衡详细说明Nginx 从 1.9.0 版本开始支持 TCP/UDP 负载均衡,通过 stream 模块实现。stream 模块允许 Nginx 代理和负载均衡 TCP 和 UDP 流量,适用于数据库、邮件服务器、DNS 等非 HTTP 协议的负载均衡。1. 配置结构stream 模块的配置与 http 模块...
Nginx Stream(TCP/UDP)负载均衡详细说明以及案例适合哪些人参考?
适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。
阅读Nginx Stream(TCP/UDP)负载均衡详细说明以及案例时应重点看哪些内容?
建议重点关注标题、摘要、正文说明、图片资料和更新时间。
- 建议补充标签,帮助识别主题边界。
时间:2025-03-09 11:59:25
来源:https://bt.ciilii.com/

