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 实现

区别
  1. 使用的模块不同
    4 层使用的是 ngx_stream_core_module
    7 层使用的是 ngx_http_upstream_module

  2. 配置文件的位置不一样
    stream 和 http 块平级

posted @   风风羊  阅读(377)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2021-09-01 关于linux7.x系列下的 systemd 的理解
点击右上角即可分享
微信分享提示