Nginx四层负载均衡配置实践
Nginx 的四层负载均衡功能挺适合做 TCP 层分发的,尤其是非 HTTP 协议的时候,像数据库代理、文件传输这些都能用上。你只要启用一下stream
模块,写几行配置,就能让多个服务跑得更稳、更快。
TCP 层的 Nginx 负载均衡,不解析应用协议,响应快、效率高,适合高并发场景。它就是用来干“把流量平均扔给后端机器”的活,配置也不难,挺适合动手试一试。
编译时加参数:加上--with-stream
就能开启这功能,如果你用的是预编译版本,记得确认有没有这个模块。
./configure --with-http_stub_status_module --with-stream
make && make install
配置文件写法也挺清晰,基本就是定义个upstream
,写上服务器地址,再搞个server
块监听端口转发就行:
stream {
upstream kevin {
server 192.168.10.10:8080;
server 192.168.10.20:8081;
server 192.168.10.30:8081;
}p>
<p>server {
listen 8081;
proxy_timeout 20s;
proxy_pass kevin;
}
}
负载策略也能换,默认是轮询,但你可以改成least_conn
(最少连接),还可以设置weight
来调节分流量级:
upstream kevin {
least_conn;
server 192.168.10.10:8080 weight=2;
server 192.168.10.20:8081 weight=1;
server 192.168.10.30:8081 weight=1;
}
这种方式还蛮灵活的,尤其对那些不是 HTTP 的服务,像 Redis、MySQL 等场景有用。如果你用 LVS 嫌麻烦,Nginx 这个方案其实也够用了。
哦对了,记得用http_stub_status_module
看下运行状态,不然出问题了都不好排查。
如果你最近正好要做点 TCP 转发、灰度流量、端口复用什么的,不妨试试这个思路,轻量、稳定,还挺好用的。
下载地址
用户评论