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 协议的场景。通过合理配置,可以实现高效、可靠的负载均衡。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
本文来自《西里网 . 宝塔 | 西里网》 -- 发布时间:2025-03-29
本页链接:https://bt.ciilii.com/show/news-111.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
