啊哈,最近被thrift搞残了,已经各个项目要做大融合,尤其是大家的thrift都共用一个nginx前端今天又加了8个thrift,一共有28个Thrift服务了。有朋友可能怀疑需要这么多的thrift server么?    加入了….  我们已经在客户端层做了相关的优化了,比如批量put和get…  效果不是很明显….   


说正题,nginx-1.9.0 已发布,该版本增加了 stream 模块用于一般的 TCP 代理和负载均衡。


最近爬虫有些狠,标记下博客原文是地址, http://xiaorui.cc     http://xiaorui.cc/?p=1367

最近nginx1.9发布了,里面有个特别喜人的功能,就是支持tcp的负载均衡, 这功能这jb碉堡了…  一说起nginx的tcp proxy负载调度,大家可能更多的是用姚伟斌开发的nginx_tcp_proxy_module,话说阿里这帮人的开源精神还是很棒的。 大赞一个 !  这个nginx_tcp_proxy_module模块也确实很给力,不管是代理Thrift和redis 都是很实用的。  既然官方的1.9发布了我们就简单的测试下….   ngx_stream_core_module 是这个模块的名字, 具体的实现代码也懒得看,估计就算看了,也看不懂 哈哈….. 

官方有个nginx plus的商用版本倒是支持,但是功能毕竟受限… …. 有兴趣的朋友可以看看。 
http://nginx.com/products/application-load-balancing/

直接用ubuntu环境测试

据说还支持ssl协议, 有兴趣的朋友也可以试试,比如mysql是含有ssl的证书协议的。 configure的时候加入   –with-stream_ssl_module  编译参数。 

至于配置也是很简单….

http://nginx.org/en/docs/stream/ngx_stream_core_module.html

stream的配置对里还支持  server unix:/tmp/nima.sock;   类似这样的sock数据交换接口。 

也可以直接proxy_pass  到  unix:/tmp/stream.socket;

ngx_stream_core_module 也同样的支持tcp长连接保持。  keepidle是保持时间,keepintvl是间隔时间 ,keepcnt是发送的个数
so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]

那么OK了后,我们可以用telnet来进行测试…. 
vagrant@dev:~$ telnet localhost 9090
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.

vagrant@dev:~$ telnet localhost 9090
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.

效果不错,把一堆的后端server接入到nginx上….  只看到队列忽忽的往下掉。。。。 





有时间写一个 ngx_stream_core_module 和 nginx_tcp_proxy_module的性能对比…..  个人觉得还是nginx_tcp_proxy_module的调优的方式多点。。。




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

1则回应给“nginx1.9新模块ngx_stream_core_module实现stream tcp负载均衡”

  1. simonchen说道:

    nice!

发表评论