文章来源:http:///5037.html
昨天在公司微信群,CTO分享了这个消息,对运维来说以后基于TCP协议的后端业务的高可用又多了一个新的选择,实在是棒极了! 一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy。 这算是一个nginx比较明显的缺憾。不过,在1.90发布后这个认知将得到改写:
所以,我们如果需要用到这个功能,就需要加上 --with-stream 参数重新编译nginx。对于已在线上运行的nginx,你可能要用到平滑升级来避免线上的服务被中断,可以参考张戈以前分享的教程: 最后贴一下官方分享的stream模块的简单配置demo:
http:///en/docs/stream/ngx_stream_core_module.html
worker_processes auto;
和http模块类似,简单明了。相信熟悉 nginx 的朋友很容易的就能完成一个 nginx 下的 TCP 负载均衡集群配置。 由于工作繁忙,实在是心有余而力不足。还好最近公司给我招了个小鲜肉来做运维助理,等空下来了,我再去测一测这个 Nginx 的 TCP 代理和负载均衡功能。到时候再来博客分享一二,敬请期待!
下面测试nginx代理TCP协议的配置。 realserver : 10.134.241.68 nginx :10.134.72.166 客户端:10.129.157.168 TCP监听端口:2014 一、配置nginx 看官网上的文档 http:///en/docs/stream/ngx_stream_core_module.html nginx1.90对TCP协议的代理并不是默认开启的,需要在编译的时候配置 --with-stream 参数: [img]http://images./blog2015/450613/201505/071746123452724.png[/img] nginx.config文件参照官网: stream { upstream cloudsocket { hash $remote_addr consistent; server 10.134.241.68:2014 weight=5 max_fails=3 fail_timeout=30s; } server { listen 2014; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass cloudsocket; } } 启动nginx,发现nginx已经开始监听2014端口了
二、测试客户端连realserver 在客户端通过telnet连接realserver的2014端口:
在realserver上查看网络连接:
可以正常连接 三、测试客户端连接nginx 在客户端通过telnet连接nginx所在服务器的2014端口
在nginx机器上查看网络连接
在realserver上查看网络连接
可以注意到nginx是给做了一个TCP连接的中转。 |
|