Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
来源:互联网 发布:背四级单词软件 编辑:程序博客网 时间:2024/06/05 16:25
一直以来,Nginx 并不支持tcp协议,所以后台的一些基于TCP的业务就只能通过其他高可用负载软件来完成了,比如Haproxy。
这算是一个nginx比较明显的缺憾。不过,在1.90发布后这个认知将得到改写:
2015-04-28nginx-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:
http://nginx.org/en/docs/stream/ngx_stream_core_module.html
worker_processes auto;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
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 代理和负载均衡功能。到时候再来博客分享一二,敬请期待!
下面测试nginx代理TCP协议的配置。
realserver : 10.134.241.68
nginx :10.134.72.166
客户端:10.129.157.168
TCP监听端口:2014
一、配置nginx
看官网上的文档 http://nginx.org/en/docs/stream/ngx_stream_core_module.html
nginx1.90对TCP协议的代理并不是默认开启的,需要在编译的时候配置 --with-stream 参数:
[img]http://images.cnitblog.com/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连接的中转。
- Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
- Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
- Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
- Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
- Nginx TCP代理及负载均衡stream模块简介
- 反向代理负载均衡Nginx的http和tcp代理
- Nginx支持TCP负载均衡
- Nginx支持TCP负载均衡
- Nginx的反向代理 和 负载均衡
- Nginx的负载均衡和反向代理
- Nginx的反向代理和负载均衡
- Nginx的反向代理和负载均衡
- nginx的反向代理和负载均衡
- nginx 代理和负载均衡
- Nginx配置实现基于tcp协议的反向代理和负载均衡
- Nginx服务器安装,高性能的HTTP、TCP、反向代理、负载均衡等服务和配置
- nginx反向代理,负载均衡和第三方模块的安装
- nginx安装并支持upstream和tcp代理模块
- java生成验证码配置及编写
- MAVLink——命令参数
- php常用几种设计模式的应用场景
- quick-cocos2dx中AssetsManagerEx的理解
- 在mybatis调用mysql的函数
- Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
- java抽象类和接口
- 开发者都应该使用的10个C++11特性
- mysql日期存储为int,mybatis做ORM映射与java.util.Date的转换问题
- 经典的数据结构——栈
- UE4示例项目学习:用Blueprint来创建一个可操作角色(二) 动画蒙太奇篇(Animation Montage)
- 【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目
- oracle日期字段只取日期不要时间
- ubuntu16.04下安装scrapy框架