龙空技术网

利用它拯救单体应用,应用服务挂了也不用担心了

聊推 1316

前言:

眼前咱们对“nginx负载均衡一个服务挂了”大约比较讲究,看官们都想要了解一些“nginx负载均衡一个服务挂了”的相关知识。那么小编在网络上网罗了一些有关“nginx负载均衡一个服务挂了””的相关文章,希望小伙伴们能喜欢,你们一起来了解一下吧!

朋友最近咨询了个事情,事情的原委是这样的,朋友他们有个单体应用,平时访问量也不大,隔一段时间会挂掉,需要重启,之前他们都是手工操作,这次正好快放长假了,咨询可不可以解决这个问题。

这个项目是个老项目从代码入手分析挂掉的原因,估计是个大活,所以想了集群负载均衡,经过效率方面的考虑,用nginx做负载均衡处理这个事情,因为这么处理不仅上手快,而且效率高,同时nginx可以把挂掉的服务剔除掉,下面就是整个处理过程。

首先安装nginx,部署多套项目

确保每套项目可以独立运行

压轴戏往往在最后↓↓↓↓↓↓




配置nginx负载均衡

nginx.conf



然后访问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 ;

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:



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



nginx默认负载方式是轮询,可以通过weight指定轮训权重

除此之外还有ip_hash,按照IP分配到某个服务;least_conn,按照最少连接方式分配,哪个服务的连接少,就优先分配给哪个服务;

这些设置看具体场景指定即可

标签: #nginx负载均衡一个服务挂了 #nginx负载均衡挂掉一台 #nginx 探测 #8081端口被占用怎么办啊 #查询nginx负载轮训