网站地图
  • 网站首页
  • SEO学习
  • SEO技巧
  • 网络营销
  • SEO入门
  • SEO心得
  • SEO资讯
  • Nginx基于TCP/UDP端口的四层负载均衡(stream模块)

    发布时间: 2021-07-05 16:03首页:智推网 > 网络营销 > 阅读()

    和其他upstream模块一样,TCP的stream模块也支持自概念负载均和的转发网站权重,还有backup和down的参数,用于踢掉失效的上游服务器。max_conns参数可以限制一台服务器的TCP连接数目,依据服务器的容量来设置适合的配置数值,特别在高并发的场景下,可以达到过载保护的目的。

    假如一台服务器,反复失败,Nginx也会踢掉这台服务器。服务器被踢掉60秒后,Nginx会偶尔尝试重连它,测试它是不是恢复正常。假如服务器恢复正常,Nginx将它加回到upstream组内,缓慢加强连接请求的比率。

    TCP负载均衡模块支持内置健壮性测试,一台上游服务器假如拒绝TCP连接超越proxy_connect_timeout配置的时间,将会被觉得已经失效。在这样的情况下,Nginx立刻尝试连接upstream组内的另一台正常的服务器。连接失败信息将会记录到Nginx的错误日志中。

    1)请求逐步增加,从少到多,逐步积累热门数据,最后达到正常服务状况。

    其实,无论是单台机器或者一个集群,在高并发请求场景下,重启或者切换,都存在这个风险,解决的渠道主如果两种:

    当Nginx从监听端口收到一个新的推广客户端链接时,立刻实行路由调度算法,获得指定需要连接的服务IP,然后创建一个新的上游连接,连接到指定服务器。

    2)提前筹备好"常用"的数据,主动对服务做"预热",预热完成之后,再开放服务器的访问。

    Nginx的TCP负载均衡服务健壮性监控

    HTTP负载均衡,也就是大家一般所有"七层负载均衡",工作在第七层"应用层"。而TCP负载均衡,就是大家一般所说的"四层负载均衡",工作在"互联网层"和"传输层"。比如,LVS和F5,也是是"四层负载均衡"

    Nginx-1.9.0已发布,该版本增加了stream模块用于普通的TCP加盟和负载均衡,ngx_stream_core_module这个模块在1.90版本后将被启用。但并不会默认安装, 需要在编译时通过指定--with-stream参数来激活这个模块。 1)配置Nginx编译文件参数 ./configure--with-http_stub_status_module--with-stream ------------------------------------------------------------------ 2)编译、安装,make&&makeinstall ------------------------------------------------------------------ 3)配置nginx.conf文件 stream{ upstreamkevin{ server192.168.10.10:8080;#这里配置成要访问的地址 server192.168.10.20:8081; server192.168.10.30:8081;#需要加盟的端口,在这里我加盟一一个kevin模块的接口8081 } server{ listen8081;#需要监听的端口 proxy_timeout20s; proxy_passkevin; } } 创建最高级别的stream,概念一个upstream组名字为kevin,由多个服务组成达到负载均衡概念一个服务用来监听TCP连接, 并且把他们加盟到一个upstream组的kevin中,配置负载均衡的办法和参数为每一个server;配置些如:连接数、网站权重等等。 第一创建一个server组,用来作为TCP负载均衡组。概念一个upstream块在stream上下文中,在这个块里面添加由server命令概念的server,指定他的IP地址和 主机名的配置信息和proxy_passs命令把TCP通信发送到 upstream的什么server中去。下面大家将TCP通信发送到kevin组中去。 server{ listen8081;#需要监听的端口 proxy_timeout20s; proxy_passkevin; } 当然大家也可以使用单一的加盟方法: server{ listen8081;#需要监听的端口 proxy_timeout20s; proxy_pass192.168.10.30:8081;#需要加盟的端口,在这里我加盟一一个kevin模块的接口8081 } ------------------------------------------------------------------ 4)改变负载均衡的办法: 默认nginx是通过轮询算法来进行负载均衡的通信的。引导这个请求循环的到配置在upstream组中server端口上去。由于他是默认的办法,这里没轮询命令, 只不过容易的创建一个upstream配置组在这儿stream山下文中,而且在其中添加server。 a)least-connected:对于每一个请求,nginxplus选择目前连接数最少的server来处置: upstreamkevin{ least_conn; server192.168.10.10:8080;#这里配置成要访问的地址 server192.168.10.20:8081; server192.168.10.30:8081;#需要加盟的端口,在这里我加盟一一个kevin模块的接口8081 } b)leasttime:对于每一个链接,nginxpluns通过什么时间来选择server的:最底平均延时:通过包含在least_time命令中指定的参数计算出来的: connect:连接到一个server所花的时间 first_byte:接收到第一个字节的时间 last_byte:全部接收完了的时间最少活跃的连接数: upstreamkevin{ least_timefirst_byte; server192.168.10.10:8080;#这里配置成要访问的地址 server192.168.10.20:8081; server192.168.10.30:8081;#需要加盟的端口,在这里我加盟一一个kevin模块的接口8081 } c)一般的hash算法:nginxplus选择这个server是通过user_defined关键词,就是IP地址:$remote_addr; upstreamkevin{ hash$remote_addrconsistent; server192.168.10.10:8080weight=5;#这里配置成要访问的地址 server192.168.10.20:8081max_fails=2fail_timeout=30s; server192.168.10.30:8081max_conns=3;#需要加盟的端口,在这里我加盟一一个kevin模块的接口8081 }

    当Nginx收到任意一方的关闭连接公告,或者TCP连接被闲置超越了proxy_timeout配置的时间,连接将会被关闭。对于TCP长连接,大家更应该选择合适的proxy_timeout的时间,同时,关注监听socke的so_keepalive参数,预防过早地断开连接。

    TCP负载均衡支持Nginx原有些调度算法,包括RoundRobin,哈希等。同时,调度信息数据也会和健壮性测试模块一块协作,为每一个连接选择合适的目的上游服务器。假如用Hash负载均衡的调度办法,你可以用$remote_addr来达成容易持久化会话。

    TCP负载均衡原理上和LVS等是一致的,工作在更为底层,性能会高于原来HTTP负载均衡不少。但,不会比LVS更为出色,LVS被置于内核模块,而Nginx工作在用户态,而且,Nginx相对比较重。另外一点,让人感到很可惜,这个模块居然是个付费功能。

    之所"缓慢加强",由于一般一个服务都有"热门数据",也就是说,80%以上甚至更多的请求,实质都会被阻挡在"热门数据缓存"中,真的实行处置的请求只有极少的一部分。在机器刚刚启动的时候,"热门数据缓存"事实上还没打造,这时爆发性地转发很多请求过来,非常可能致使机器没办法"承受"而第三挂掉。以MySQL为例子,大家的mysql查看,一般95%以上都是落在了内存cache中,真的实行查看的并不多。

    Nginx的TCP负载均衡的实行原理

    Nginx监控推广客户端连接和上游连接,一旦接收到数据,则Nginx会立刻读取并且推送到上游连接,不会做TCP连接内的数据测试。Nginx维护一份内存缓冲区,用于推广客户端和上游数据的写入。假如推广客户端或者服务端传输了量非常大的数据,缓冲区会适合增加内存的大小。

    特别声明:文章内容仅供参考,不造成任何投资建议。投资者据此操作,风险自担。

    网站首页 - SEO学习 - SEO技巧 - 网络营销 - SEO入门 - SEO心得 - SEO资讯

    未经本站书面特别授权,请勿转载或建立镜像

    Copyright © 2002-2021 智推网 (http://thfhcl.com) 网站地图 TAG标签