网站首页 > 技术教程 正文
朋友最近咨询了个事情,事情的原委是这样的,朋友他们有个单体应用,平时访问量也不大,隔一段时间会挂掉,需要重启,之前他们都是手工操作,这次正好快放长假了,咨询可不可以解决这个问题。
这个项目是个老项目从代码入手分析挂掉的原因,估计是个大活,所以想了集群负载均衡,经过效率方面的考虑,用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 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:
如果访问到挂掉的服务就会等待10s,这个时候nginx知道失败,访问另一个服务。所以说每次请求都会有返回,不过是时间长短的问题
nginx默认负载方式是轮询,可以通过weight指定轮训权重
除此之外还有ip_hash,按照IP分配到某个服务;least_conn,按照最少连接方式分配,哪个服务的连接少,就优先分配给哪个服务;
这些设置看具体场景指定即可
猜你喜欢
- 2024-10-15 haproxy和nginx负载均衡(nginx负载均衡ip_hash策略)
- 2024-10-15 Centos 7 network.service 启动失败
- 2024-10-15 nginx做负载后导致登录失败返回新的cookie原因分析
- 2024-10-05 nginx报错之413 Request Entity Too Large导致文件上传失败的问题
- 2024-10-05 Nginx系列:Nginx自带后端健康检查
- 2024-10-05 Nginx负载均衡健康检测,你了解过吗?
- 2024-10-05 Nginx负载均衡原理及应用实践(nginx负载均衡策略有哪些,它是如何实现的)
- 2024-10-05 SSL证书安装失败怎么办?看这里教你轻松解决
- 2024-10-05 「系统架构」Nginx调优之变量的使用(4)
- 2024-10-05 面试中关于Nginx的十问九答(面试中关于nginx的十问九答有哪些)
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)