加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

Nginx负载均衡--TCP/UDP流

发布时间:2019-06-06 16:49:01 所属栏目:外闻 来源:Jyokiyi
导读:负载均衡是指在多个后端服务器之间有效地分配网络流量。 从NGINX Plus R5[1] 版本开始可以代理和负载均衡传输控制协议(Transmission Control Protocol,TCP)通信。TCP是许多流行应用程序和服务的协议,如LDAP、MySQL和RTMP。 从NGINX Plus R9[2]版本开始可

使用ngx_stream_upstream_module模块(默认是编译进来的)的upstream指令。指令语法:

  1. Syntax:    upstream name { ... } 
  2. Default:    — 
  3. Context:    stream 

定义一组服务器。 服务器可以侦听不同的端口。 此外,可以混合侦听TCP和UNIX域套接字的服务器。

在顶级stream{}上下文中定义一个或多个upstream{}配置块,并设置upstream组的名称,例如TCP服务器的stream_backend和UDP服务器的dns_servers:

  1. stream { 
  2.     upstream stream_backend { 
  3.         server backend1.example.com:12345; 
  4.         server backend2.example.com:12345; 
  5.         server backend3.example.com:12346; 
  6.     } 
  7.  
  8.     upstream dns_servers { 
  9.         server 192.168.136.130:53; 
  10.         server 192.168.136.131:53; 
  11.     } 

配置upstream组使用的负载均衡方法。 可以指定以下方法之一:

1.Round Robin:默认情况下,NGINX使用循环算法对流进行负载平衡,将其顺序指向配置的upstream组中的服务器。因为它是默认方法,所以没有round-robin指令;只需在顶级stream{}上下文中创建upstream{}配置块,

2.最少连接(Least Connections)–nginx选择当前活动连接数较少的服务器。

  1. Syntax:    least_conn; 
  2. Default:    — 
  3. Context:    upstream 

3.最少时间-NGINX Plus选择平均延迟最低且活动连接数最少的服务器。 用于计算最低平均延迟的方法取决于least_time指令中包含以下哪个参数:

  1. Syntax:    least_time connect | first_byte | last_byte [inflight]; 
  2. Default:    — 
  3. Context:    upstream 

A. connect - 连接upstream服务器的时间

B. first_byte - 接收数据的第一个字节的时间

C. last_byte - 从服务器接收完整响应的时间,如果指定了inflight参数(1.11.6+),则还会考虑不完整的连接。

4.哈希 - NGINX根据用户定义的key,选择服务器。

  1. Syntax:    hash key [consistent]; 
  2. Default:    — 
  3. Context:    upstream 

Hash负载平衡方法还用于配置会话持久性。 由于散列函数基于客户端IP地址,因此来自给定客户端的连接始终传递到同一服务器,除非服务器已关闭或不可用。 指定可选的consistent参数以应用ketama一致性散列方法:

  1. hash $remote_addr consistent; 

5.random - 每个连接将传递给随机选择的服务器。 如果指定了two参数,首先,NGINX会考虑服务器权重随机选择两台服务器,然后使用指定的方法选择其中一台服务器:

Syntax: random [two [method]];Default: —Context: upstreamThis directive appeared in version 1.15.1.

A. least_conn - 活动连接数最少

B. least_time=connect - 连接上游服务器的时间($upstream_connect_time)少了美元符号

C. least_time=first_byte - 从服务器接收第一个数据字节的平均时间最短($upstream_first_byte_time)

D. least_time=last_byte - 从服务器接收最后一个数据字节的平均时间最短($upstream_session_time)

随机负载平衡方法应该用于多个负载均衡器将请求传递到同一组后端的分布式环境.

示例:

  1. stream { 
  2.     upstream stream_backend { 
  3.         hash   $remote_addr consistent; 
  4.         server backend1.example.com:12345 weight=5; 
  5.         server backend2.example.com:12345; 
  6.         server backend3.example.com:12346 max_conns=3; 
  7.     } 
  8.     upstream dns_servers { 
  9.         least_conn; 
  10.         server 192.168.136.130:53; 
  11.         server 192.168.136.131:53; 
  12.     } 

(编辑:衡阳站长网)

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

热点阅读