nginx 负载均衡
stream 模块介绍
从1.9.0开始,NGINX增加了stream模块用来实现四层协议的转发、代理和负载均衡。与著名的四层LB软件lvs相比,stream 模块(开源版)无论从功能还是性能上,都有一定的差距,实现也相对简单。
从性能上来说,stream模块在应用层实现四层的转发,需要与两端建立起socket连接,然后两端的数据收发进行代理转发。因此,大量的数据从内核态到用户态再从用户态到内核态传递。这些数据copy加上系统调度的开销,使得它的性能与纯内核态转发的lvs相比,有一定差距。
从功能方面看,stream模块对很多协议的alg功能几乎没有支持。这样需要alg支持的协议,比如sip, port模式的ftp等, stream模块没有很好的支持。
nginx 4 层负载均衡
refer to https://www.weixueyuan.net/a/790.html
Nginx 的 TCP/UDP 负载均衡是应用 Stream 代理模块(ngx_stream_proxy_module)和 Stream 上游模块(ngx_stream_upstream_module)实现的。Nginx 的 TCP 负载均衡与 LVS 都是四层负载均衡的应用,所不同的是,LVS 是被置于 Linux 内核中的,而 Nginx 是运行于用户层的,基于 Nginx 的 TCP 负载可以实现更灵活的用户访问管理和控制。
stream 模块是在 http 块 之外的,和http 块平级,在里面配置 server 块和 upstream 块 实现 代理转发。
nginx 7 层负载均衡
配置在 http 块中 的upstream 和 server 实现
区别
-
使用的模块不同
4 层使用的是ngx_stream_core_module
7 层使用的是ngx_http_upstream_module
-
配置文件的位置不一样
stream 和 http 块平级