nginx1.9新模块ngx_stream_core_module实现stream tcp负载均衡

啊哈,最近被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环境测试

sudo apt-get install libpcre3 libpcre3-dev build-essential

http://hg.nginx.org/nginx/ 自己找相关的平台和版本
wget http://hg.nginx.org/nginx/archive/61d7ae76647d.tar.gz
tar zxvf ./61d7ae76647d.tar.gz
cd nginx-61d7ae76647d
#具体的参数你们自己加吧
./auto/configure  --with-stream
make
sudo make install

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

至于配置也是很简单….

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

stream {
    upstream xiaorui {
        server 192.168.1.111:9090 weight=5 max_fails=3 fail_timeout=30s;
        server 192.168.2.222:9090 weight=5 max_fails=3 fail_timeout=30s;
    }

    server {
        listen 9090;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass xiaorui;
    }
}

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的调优的方式多点。。。



大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

1 Response

  1. simonchen 2016年8月11日 / 下午2:09

    nice!

发表评论

邮箱地址不会被公开。 必填项已用*标注