nginx tcp 负载均衡 长连接_Nginx负载均衡

本文介绍了如何使用Nginx作为TCP负载均衡器,配置包括安装Nginx、部署多套项目、配置负载均衡权重及故障转移策略。通过示例配置文件解析了`upstream`、`weight`、`max_fails`和`fail_timeout`等关键参数,强调了超时时间设置的重要性,以确保良好的用户体验。此外,文章还提及了Nginx的负载均衡策略如轮询、IP哈希和最小连接数,并建议在实际环境中根据需求选择。最后,强调了负载均衡至少需要三台服务器,以实现真正的负载分布。
摘要由CSDN通过智能技术生成

平时访问量也不大,隔一段时间会挂掉,需要重启
用nginx做负载均衡处理这个事情,因为这么处理不仅上手快,而且效率高,同时nginx可以把挂掉的服务剔除掉,下面就是整个处理过程。
首先安装nginx,部署多套项目
确保每套项目可以独立运行

2eface5f35a5970ae311a17c03815d79.png

e3b13577f97ec7da6d2ea72b47812ef5.png


配置nginx负载均衡
nginx.conf

b4552c3755f0f30e0282e23e47f72ad9.png


然后访问80端口,这个时候8081和8082端口的内容会交替出现,不过8082出现的频率会高很多。
下面是重要参数解析
upstream myapp1 {
#ip_hash;
server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=10s;
server 127.0.0.1:8082 weight=10 max_fails=2 fail_timeout=10s;
}
upstream myapp1:代表需要负载的服务,1或n都可以
weight:访问权重,数字越大,权重越高,访问频率越高
max_fails:最大失败次数,需要和下面的参数配合使用
fail_timeout:失败服务检测间隔,白话文就是在这个时间内某个服务的失败次数达到max_fails,nginx就会剔除该服务,在该段时间内,不再访问该服务,直到下一个周期开始,重新探测服务是否可用,nginx的探测是在服务访问的时候,实时探测
server {
listen 80;
location / {
proxy_pass http://myapp1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_send_timeout 10;
}
}
这段配置的含义是80端口跳转到myapp1对应的服务
proxy_connect_timeout:代理连接超时时间
proxy_read_timeout:读取超时时间
proxy_send_timeout:发送超时时间
这些配置,默认都有,但是在实际使用中,最好进行调整。
比如某个服务挂掉,但是proxy_connect_timeout这个时间设置过长,那么nginx会等待这个服务设置的时间,直到失败,才会跳转到别的服务去请求,这样对于用户是相当不友好,所以这个时间不宜设置过大,一般10秒钟差不多。
正常访问43ms:

cfa7f898857877d39d3e4a35cbf23b35.png


如果访问到挂掉的服务就会等待10s,这个时候nginx知道失败,访问另一个服务。所以说每次请求都会有返回,不过是时间长短的问题

03dbf2e5b236e0da4479358ee58b1bc3.png


nginx默认负载方式是轮询,可以通过weight指定轮训权重
除此之外还有ip_hash,按照IP分配到某个服务;least_conn,按照最少连接方式分配,哪个服务的连接少,就优先分配给哪个服务;
这些设置看具体场景指定即可

负载至少需要三台以上服务器(或者三个以上访问端口,如果一台机器上开三个不同的端口,访问压力还是在一台服务器上达不到负载的目的,测试可以开三个端口。) 使用三台centos7机器,每台都装上nginx 192.168.198.229(前置负载) 192.168.198.221(web1) 192.168.198.222(web2) 将域名(www.fz.com)指向前置机(192.168.198.229) web机器不一定要装nginx也可以使用其他服务器软件,如Apache,Node.js等。

Nginx负载配置

nginx负载实现主要在前置负载机中配置反向代理到其他机器。
  1. 每台服务器可以单独访问,并修改主页显示内容为改机器ip尾号(为了方便测试) 前置机负载机:229

999aaa6192ee3737c9eac386534663c4.png

将域名www.fz.com指向192.168.198.229机器并可以使用域名访问

0461651f4e7f0da052cb0c0b09e203af.png

web1:221

2ed5de127f0dfee056c17feb84a92384.png

web2:222

da626805644049c3736fc908a9bb9693.png

2.修改前置机conf

在http内加入以下代码(大致36行)

upstream www.fz.com{ 
      server  192.168.198.221; 
      server  192.168.198.222; 
    } 
      
    server{ 
        listen 80; 
        server_name www.fz.com; 
        location / { 
            proxy_pass         http://www.fz.com; 
            proxy_set_header   Host             $host; 
            proxy_set_header   X-Real-IP        $remote_addr; 
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
        } 
    }

a36e2ab1f760d34599c3121b7bcde812.png

重启nginx

/www/lnmp/nginx/sbin/nginx -s reload         #重新载入配置文件
/www/lnmp/nginx/sbin/nginx -s reopen         #重新启动nginx

访问http://www.fz.com

cab1ff573c607607b48c25c91fe3049d.png

刷新页面

e87e82e1baf9a775e97b0092da136c9a.png

这个时候发现已经实现了负载。其实要布置多个项目到web机上还需要配置web机上的conf

3、负载比重

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream www.fz.com{ 
      server  192.168.198.221 weight=1;     #访问比例为1/6
      server  192.168.198.222 weight=5;     #访问比例为5/6
} 
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream www.fz.com{
      ip_hash;
      server  192.168.198.221; 
      server  192.168.198.222; 
}

1.down 表示单前的server暂时不参与负载 2.weight 默认为1.weight越大,负载的权重就越大。 3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 4.fail_timeout:max_fails次失败后,暂停的时间。 5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 nginx支持同时设置多组的负载均衡,用来给不用的server来使用 client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug client_body_temp_path 设置记录文件的目录 可以设置最多3层目录 location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值