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 协议的场景。通过合理配置,可以实现高效、可靠的负载均衡。
本篇文章内容来源于:Nginx Stream(TCP/UDP)负载均衡详细说明以及案例
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。