Nginx学习笔记23TCP负载均衡

TCP负载均衡的配置和HTTP负载均衡的配置很相似。

(1)Nginx配置文件。

stream {

upstream myserver{

server 192.168.197.101:2101;

server 192.168.197.101:2102;

server 192.168.197.101:2103;

hash $remote_addr consistent;

}

server {

listen 2001;

proxy_connect_timeout 3s;

proxy_timeout  10s;

proxy_pass  myserver;

}

上述配置中,使用upstream配置块定义了一个上游主机服务群myserver,包含3个服务,分别在2101、2102、2103端口监听。使用hash分配策略指定了使用客户端地址来作为hash的键值。本例中指定了consistent参数,可以提高hash的稳定性。如果不使用consistent,则在增加一个server或删除一个server之后,可能导致很多客户端连接到一个不同的server。

在试验过程中,从一个客户端telnet到nginx的2001端口时,Nginx选择了端口为2103的服务,从另一个客户端telnet到nginx的2001端口时,Nginx选择了端口为2102的服务。由于使用了consistent参数,使得hash的选择结果比较稳定,多次从同一个客户端telnet到nginx的2001端口时,选择的都是同一个服务。

详解Nginx的日志记录:

2017/07/11 06:56:40 [info] 3459#0: *41 client 20.1.1.11:4242 connected to 0.0.0.0:2001

2017/07/11 06:56:40 [info] 3459#0: *41 proxy 192.168.197.101:46750 connected to 192.168.197.101:2103

2017/07/11 06:56:52 [info] 3459#0: *41 connection timed out (110: Connection timed out) while proxying connection, client: 20.1.1.11, server: 0.0.0.0:2001, upstream: "192.168.197.101:2103", bytes from/to client:7/6, bytes from/to upstream:6/7

2017/07/11 06:57:00 [info] 3459#0: *43 client 20.1.1.11:4250 connected to 0.0.0.0:2001

2017/07/11 06:57:00 [info] 3459#0: *43 proxy 192.168.197.101:46751 connected to 192.168.197.101:2103

2017/07/11 06:57:13 [info] 3459#0: *43 connection timed out (110: Connection timed out) while proxying connection, client: 20.1.1.11, server: 0.0.0.0:2001, upstream: "192.168.197.101:2103", bytes from/to client:6/5, bytes from/to upstream:5/6

2017/07/11 07:08:24 [info] 3459#0: *45 client 192.168.197.101:40306 connected to 0.0.0.0:2001

2017/07/11 07:08:24 [info] 3459#0: *45 proxy 192.168.197.101:60837 connected to 192.168.197.101:2102

2017/07/11 07:08:37 [info] 3459#0: *45 connection timed out (110: Connection timed out) while proxying connection, client: 192.168.197.101, server: 0.0.0.0:2001, upstream: "192.168.197.101:2102", bytes from/to client:7/6, bytes from/to upstream:6/7

TCP负载均衡的分配策略还可以有least_conn和least_time两种:

(a)least_conn选择当前连接数最少的服务。

Syntax: least_conn;

Default: —

Context: upstream

(b)least_time根据时间来选择服务。

本策略为Nginx商业版订阅定容,目前未做测试,本文暂不介绍。

使用least_conn策略的一个例子如下所示:

stream {

upstream myserver{

server 192.168.197.101:2101;

server 192.168.197.101:2102;

server 192.168.197.101:2103;

least_conn;

}

server {

listen 2001;

proxy_connect_timeout 3s;

proxy_timeout  300s;

proxy_pass  myserver;

}

上游主机的TCP服务程序使用前一篇博客中的Java程序,请参考该博客:

http://www.cnblogs.com/coe2coe/p/7157950.html

此时从三个客户端程序中连接Nginx的2001端口,根据least_conn的分配策略,可知将选择三个不同的服务,使得每个服务的连接数最接近相等。

TCP负载均衡的upstream中的server支持weight、max_fails、fail_timeout等参数,这跟http的负载均衡类似,不再详细介绍。当使用了weight参数时,least_conn将综合考虑weight制定的权值以及连接数来选择服务。

关于ngx_stream_upstream_module模块的完整介绍,请参考:

http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html

时间: 2024-10-09 15:50:16

Nginx学习笔记23TCP负载均衡的相关文章

Nginx学习笔记07负载均衡之(二)主机分配策略和主机失效参数

1.1.1. 主机失效参数配置 Nginx的upstream配置块中的server配置项提供了多个参数来控制主机失效时如何处理,用于提高负载均衡配置的实用性. 参数 描述 weight 主机的权重.默认为1. max_fails 主机失败的最大次数.默认为1.超过此次数主机临时不可用.值为0表示不对此主机做失败检查. fail_timeout 主机超过max_fails次数后在fail_timeout时间内临时不可用.默认为10秒. down 永久不可用.参与ip_hash. backup 备份

Nginx学习笔记06负载均衡之(一)负载均衡介绍

1.1.1. 负载均衡的介绍 Nginx中使用upstream配置块,可以方便的配置出一个基于反向代理的负载均衡解决方案. 在upstream中可以包含多个server配置项,每个server配置项指定一个主机地址和端口号,代表一个主机(上游服务器). 在proxy_pass配置反向代理时,可以不指定最终的主机地址,而是只指定upstream配置块指定的引用名称.在本文中,upstream配置了一个包含三个主机地址的负载均衡主机集群. 配置内容: http { include       mim

Dubbo -- 系统学习 笔记 -- 示例 -- 负载均衡

Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 负载均衡 在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用. 可以自行扩展负载均衡策略,参见:负载均衡扩展 Random LoadBalance 随机,按权重设置随机概率. 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重. RoundRobin LoadBalance 轮循,按公约后的权重设置轮

马哥学习笔记二十八——nginx反向代理,负载均衡,缓存,URL重写及读写分离

Nginx反向代理 Nginx通过proxy模块实现反向代理功能.在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI.客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server).nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上.如下面的示例中,location的/uri将被替换为上游服务器上的/newuri. location /uri { proxy_pa

nginx学习3:实现nginx反向代理和负载均衡

nginx学习3:实现nginx反向代理和负载均衡 正向代理和反向代理的区别(这里不赘述什么是正向代理和反向代理) 一句话概括:正向代理隐藏真实客户端,反向代理隐藏真实服务端:即正向代理服务器不知道客户端是谁,反向代理客户端不知道服务器是谁: 反向代理实例1 需求描述:输入nginx监听IP:8081,可以访问真实的IP:8088 tomcat服务 准备tomcat服务 1-准备tomcat服务(8088端口) 2-开放防火墙8088端口 ##添加8088端口[[email protected]

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服

Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术

一.概述 Nginx 作负载均衡器的优点许多,简单概括为: ①实现了可弹性化的架构,在压力增大的时候可以临时添加Tomcat服务器添加到这个架构里面去; ②upstream具有负载均衡能力,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器: Keepalived 可实现 Nginx负载均衡器双机互备,任意一台机器发生故障,对方都能够将虚拟IP接管过去. Memcache可以实现Tomcat服务器的Sission共享整个拓补如下: 注意: 1.由于服务器有限,IP相同的为同一台机.只是端

Nginx+Tomcat+Keepalived+Memcache负载均衡动离分离技术

一.概述 Nginx 作负载均衡器的优点许多,简单概括为: ①实现了可弹性化的架构,在压力增大的时候可以临时添加Tomcat服务器添加到这个架构里面去; ②upstream具有负载均衡能力,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器: Keepalived 可实现 Nginx负载均衡器双机互备,任意一台机器发生故障,对方都能够将虚拟IP接管过去. Memcache可以实现Tomcat服务器的Sission共享整个拓补如下: 注意: 1.由于服务器有限,IP相同的为同一台机.只是端

Nginx实现反向代理负载均衡与静态缓存

介绍: Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.在连接高并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应. 实验环境: Hostname IP 系统 规划 n2.preferred 192.168.1.2 Centos 6.5 Web server n3.preferred 192.168.1.3 Centos 6.5 Web server n6.preferred 192.168.1.6