加入收藏 | 设为首页 | 会员中心 | 我要投稿 52站长网 (https://www.52zhanzhang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

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

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

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

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

(编辑:52站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读