前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块

Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块

作者头像
张戈
发布2018-03-23 14:03:26
1.3K0
发布2018-03-23 14:03:26
举报
文章被收录于专栏:张戈的专栏张戈的专栏

昨天在公司微信群,CTO 分享了这个消息,对运维来说以后基于 TCP 协议的后端业务的高可用又多了一个新的选择,实在是棒极了!

一直以来,Nginx 并不支持 tcp 协议,所以后台的一些基于 TCP 的业务就只能通过其他高可用负载软件来完成了,比如 Haproxy。

这算是一个 nginx 比较明显的缺憾。不过,在 1.90 发布后这个认知将得到改写:

2015-04-28

nginx-1.9.0 mainline version has been released, with the stream module for generic TCP proxying and load balancing. nginx-1.9.0 已发布,该版本增加了 stream 模块用于一般的 TCP 代理和负载均衡。

The ngx_stream_core_module module is available since version 1.9.0. This module is not built by default, it should be enabled with the --with-stream configuration parameter. ngx_stream_core_module 这个模块在 1.90 版本后将被启用。但是并不会默认安装,需要在编译时通过指定 --with-stream 参数来激活这个模块。 其他改进包括:

  • Change: 删除过时的 aio 和 rtsig 事件处理方法
  • Feature: 可在 upstream 块中使用 "zone" 指令
  • Feature: 流模块,支持 TCP 代理和负载均衡
  • Feature: ngx_http_memcached_module 支持字节范围
  • Feature: Windows 版本支持使用共享内存,带随机化地址空间布局.
  • Feature: "error_log" 指令可在 mail 和 server 级别
  • Bugfix: the "proxy_protocol" parameter of the "listen" directive did not work if not specified in the first "listen" directive for a listen socket.

所以,我们如果需要用到这个功能,就需要加上 --with-stream 参数重新编译 nginx。对于已在线上运行的 nginx,你可能要用到平滑升级来避免线上的服务被中断,可以参考张戈以前分享的教程:

Nginx 在线服务状态下平滑升级或新增模块的详细操作记录

最后贴一下官方分享的 stream 模块的简单配置 demo:

代码语言:javascript
复制
worker_processes auto;
error_log /var/log/nginx/error.log info;
stream {
    upstream backend {
        hash $remote_addr consistent;
        server backend1.example.com:12345 weight=5;
        server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
        server unix:/tmp/backend3;
    }
 
    server {
        listen 12345;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }
 
    server {
        listen [::1]:12345;
        proxy_pass unix:/tmp/stream.socket;
    }
}

和 http 模块类似,简单明了。相信熟悉 nginx 的朋友很容易的就能完成一个 nginx 下的 TCP 负载均衡集群配置。

由于工作繁忙,实在是心有余而力不足。还好最近公司给我招了个小鲜肉来做运维助理,等空下来了,我再去测一测这个 Nginx 的 TCP 代理和负载均衡功能。到时候再来博客分享一二,敬请期待!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年04月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档