设为首页 - 加入收藏 佛山站长网 (http://www.0757zz.com)- 打造国内最专业的站长门户网站!
热搜: 苹果 创业者 亚博app官方下载安卓 用户
当前位置: 主页 > 亚博app官方下载安卓 > 网站设计 > 教程 > 正文

Nginx基于TCP/UDP端口的四层负载均衡(Stream模块)配置梳理

发布时间:2019-09-12 21:02 所属栏目:[教程] 来源:波波说运维
导读:副标题#e# HTTP负载均衡,也就是我们通常所有七层负载均衡,工作在第七层应用层。而TCP负载均衡,就是我们通常所说的四层负载均衡,工作在网络层和传输层。例如,LVS(Linux Virtual Server,Linux虚拟服务)和F5(一种硬件负载均衡设备),也是属于四层负载均

HTTP负载均衡,也就是我们通常所有"七层负载均衡",工作在第七层"应用层"。而TCP负载均衡,就是我们通常所说的"四层负载均衡",工作在"网络层"和"传输层"。例如,LVS(Linux Virtual Server,Linux虚拟服务)和F5(一种硬件负载均衡设备),也是属于"四层负载均衡"

Nginx基于TCP/UDP端口的四层负载均衡(Stream模块)配置梳理

  1. nginx-1.9.0?已发布,该版本增加了stream?模块用于一般的TCP?代理和负载均衡,ngx_stream_core_module?这个模块在1.90版本后将被启用。但是并不会默认安装,?
  2. 需要在编译时通过指定?--with-stream?参数来激活这个模块。?
  3. ??
  4. 1)配置Nginx编译文件参数?
  5. ./configure?--with-http_stub_status_module?--with-stream?
  6. ------------------------------------------------------------------?
  7. ??
  8. 2)编译、安装,make?&&?make?install?
  9. ------------------------------------------------------------------?
  10. ??
  11. 3)配置nginx.conf文件?
  12. ??
  13. stream?{?
  14. ?upstream?kevin?{?
  15. ?server?192.168.10.10:8080;?#这里配置成要访问的地址?
  16. ?server?192.168.10.20:8081;?
  17. ?server?192.168.10.30:8081;?#需要代理的端口,在这里我代理一一个kevin模块的接口8081?
  18. ?}?
  19. ?server?{?
  20. ?listen?8081;?#需要监听的端口?
  21. ?proxy_timeout?20s;?
  22. ?proxy_pass?kevin;?
  23. ?}?
  24. }?
  25. ??
  26. 创建最高级别的stream(与http同一级别),定义一个upstream组?名称为kevin,由多个服务组成达到负载均衡?定义一个服务用来监听TCP连接(如:8081端口),?
  27. 并且把他们代理到一个upstream组的kevin中,配置负载均衡的方法和参数为每个server;配置些如:连接数、权重等等。?
  28. ??
  29. 首先创建一个server组,用来作为TCP负载均衡组。定义一个upstream块在stream上下文中,在这个块里面添加由server命令定义的server,指定他的IP地址和?
  30. 主机名(能够被解析成多地址的主机名)和端口号。下面的例子是建立一个被称之为kevin组,两个监听1395端口的server?,一个监听8080端口的server。?
  31. ??
  32. upstream?kevin?{?
  33. ?server?192.168.10.10:8080;?#这里配置成要访问的地址?
  34. ?server?192.168.10.20:8081;?
  35. ?server?192.168.10.30:8081;?#需要代理的端口,在这里我代理一一个kevin模块的接口8081?
  36. ?}?
  37. ??
  38. ??
  39. 需要特别注意的是:?
  40. 你不能为每个server定义协议,因为这个stream命令建立TCP作为整个?server的协议了。?
  41. ??
  42. 配置反向代理使Nginx能够把TCP请求从一个客户端转发到负载均衡组中(如:kevin组)。在每个server配置块中?通过每个虚拟server的server的配置信息和在?
  43. 每个server中定义的监听端口(客户端需求的代理端口号,如我推流的的是kevin协议,则端口号为:8081)的配置信息和proxy_passs?命令把TCP通信发送到?
  44. upstream的哪个server中去。下面我们将TCP通信发送到kevin?组中去。?
  45. ??
  46. ?server?{?
  47. ?listen?8081;?#需要监听的端口?
  48. ?proxy_timeout?20s;?
  49. ?proxy_pass?kevin;?
  50. ?}?
  51. ??
  52. 当然我们也可以采用单一的代理方式:?
  53. ??
  54. server?{?
  55. ?listen?8081;?#需要监听的端口?
  56. ?proxy_timeout?20s;?
  57. ?proxy_pass?192.168.10.30:8081;?#需要代理的端口,在这里我代理一一个kevin模块的接口8081?
  58. }?
  59. ------------------------------------------------------------------?
  60. ??
  61. 4)改变负载均衡的方法:?
  62. 默认nginx是通过轮询算法来进行负载均衡的通信的。引导这个请求循环的到配置在upstream组中server端口上去。?因为他是默认的方法,这里没有轮询命令,?
  63. 只是简单的创建一个upstream配置组在这儿stream山下文中,而且在其中添加server。?
  64. ??
  65. a)least-connected?:对于每个请求,nginx?plus选择当前连接数最少的server来处理:?
  66. ??
  67.  upstream?kevin?{?
  68. least_conn;?
  69. ?server?192.168.10.10:8080;?#这里配置成要访问的地址?
  70. ?server?192.168.10.20:8081;?
  71. ?server?192.168.10.30:8081;?#需要代理的端口,在这里我代理一一个kevin模块的接口8081?
  72. ?}?
  73. ??
  74. b)least?time?:对于每个链接,nginx?pluns?通过几点来选择server的:?最底平均延时:通过包含在least_time命令中指定的参数计算出来的:?
  75. connect:连接到一个server所花的时间?
  76. first_byte:接收到第一个字节的时间?
  77. last_byte:全部接收完了的时间?最少活跃的连接数:?
  78. ??
  79.  upstream?kevin?{?
  80. least_time?first_byte;?
  81. ?server?192.168.10.10:8080;?#这里配置成要访问的地址?
  82. ?server?192.168.10.20:8081;?
  83. ?server?192.168.10.30:8081;?#需要代理的端口,在这里我代理一一个kevin模块的接口8081?
  84. ?}?
  85. ??
  86. c)普通的hash算法:nginx?plus选择这个server是通过user_defined?关键字,就是IP地址:$remote_addr;?
  87. ??
  88. upstream?kevin?{?
  89. hash?$remote_addr?consistent;?
  90. ?server?192.168.10.10:8080?weight=5;?#这里配置成要访问的地址?
  91. ?server?192.168.10.20:8081?max_fails=2?fail_timeout=30s;?
  92. ?server?192.168.10.30:8081?max_conns=3;?#需要代理的端口,在这里我代理一一个kevin模块的接口8081?
  93. ?}?
Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

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

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章