加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Nginx负载均衡--TCP/UDP流

发布时间:2019-06-06 06:45:34 所属栏目:业界 来源:Jyokiyi
导读:负载平衡是指在多个后端处事器之间有用地分派收集流量。 从NGINX Plus R5[1] 版本开始可以署理和负载平衡传输节制协议(Transmission Control Protocol,TCP)通讯。TCP是很多风行应用措施和处事的协议,如LDAP、MySQL和RTMP。 从NGINX Plus R9[2]版本开始可
副问题[/!--empirenews.page--]

Nginx负载平衡--TCP/UDP流

负载平衡是指在多个后端处事器之间有用地分派收集流量。

从NGINX Plus R5[1] 版本开始可以署理和负载平衡传输节制协议(Transmission Control Protocol,TCP)通讯。TCP是很多风行应用措施和处事的协议,如LDAP、MySQL和RTMP。

从NGINX Plus R9[2]版本开始可以署理和负载均衡UDP流量。用户数据报协议(User Datagram Protocol,UDP)是很多风行的非事宜性应用措施的协议,如DNS、syslog和RADIUS。

反向署理

基本前提

必要行使ngx_stream_core_module模块,该模块从版本1.9.0开始可用。这个模块在默认环境下是不构建的,需行使--with-stream设置参数来启用它。如下设置:

  1. ./configure  --prefix=/usr/local/nginx --with-stream 

设置反向署理

设置反向署理,以便NGINX打开资源,未来自客户端的TCP毗连或UDP数据报转发到upstream组或署理处事器。

A. 设置反向署理之前,看一下ngx_stream_core_module模块中几个元素的语法:

  • stream块,在设置文件中是顶级块,和http块属于统一级别,语法如下:
  1. Syntax:    stream { ... } 
  2. Default:    — 
  3. Context:    main 
  • server块,设置一个处事。在顶级stream{}上下文中为每个假造处事器界说一个或多个处事器设置块。语法如下:
  1. Syntax:    server { ... } 
  2. Default:    — 
  3. Context:    stream 

listen指令,配置处事器将接管毗连的套接字的地点和端口。可以只指定端口。地点也可所以主机名,譬喻:

  1. Syntax:    listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]]; 
  2. Default:    — 
  3. Context:    server 

示譬喻下:

  1. listen 127.0.0.1:12345; 
  2. listen *:12345; 
  3. listen 12345;     # same as *:12345 
  4. listen localhost:12345; 

listen指令在此默认协议是TCP协议,对付UDP流,必要指定udp参数,如下:

  1. listen 12345 udp; 

B. 行使ngx_stream_proxy_module模块(默认是编译进来的)的proxy_pass指令设置署理,proxy_pass指令语法:

  1. Syntax:    proxy_pass address; 
  2. Default:    — 
  3. Context:    server 

配置被署理处事器的地点。地点可以界说为一个域名或IP地点和一个端标语:

  1. proxy_pass localhost:12345; 

或一个UNIX-domain socket路径:

  1. proxy_pass unix:/tmp/stream.socket; 

C. 假如署理处事器有多个收集接口,可以设置NGINX行使特定的源IP地点去毗连upstream处事器。这也许很有效,当一个署理处事器在nginx后头,并设置了接管来自特定IP收集或IP地点范畴的毗连。

行使ngx_stream_proxy_module模块的proxy_bind指令,其语法:

  1. Syntax:    proxy_bind address [transparent] | off; 
  2. Default:    — 
  3. Context:    stream, server 
  4. #此指令在1.9.2版本中开始行使。 

从指定的当地IP地点向被署理处事器提倡外部毗连。非凡值off打消从上层设置中担任的proxy_bind指令发生的影响,应承体系自动分派当地IP地点。

transparent参数(1.11.0+)应承从一个非当地IP地点提倡到被署理处事器的外部毗连,譬喻从一个客户端的真实IP地点:

  1. proxy_bind $remote_addr transparent; 

为了使此参数起浸染,凡是必要行使超等用户权限运行nginx事变历程。 在Linux上,不必要(1.13.8+),就像指定了transparent参数一样,事变历程从主历程担任CAP_NET_RAW成果。 还必要设置焦点路由表以拦截来自被署理处事器的收集流量。

示例设置如下:

  1. stream { 
  2.     # ... 
  3.     server { 
  4.         listen            127.0.0.1:12345; 
  5.         proxy_pass        backend.example.com:12345; 
  6.         proxy_buffer_size 16k; 
  7.         #proxy_bind 127.0.0.1:12345; 
  8.     } 

负载平衡

(编辑:河北网)

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

热点阅读