[转]Nginx主动式后端服务器健康检查配置
2023-09-11 14:21:36 时间
环境:
SpringCloud微服务(eureka注册中心);
nginx作为负载均衡;
场景:
Nginx -> A服务
当流量高峰期时,kill A服务
A服务还没有挂掉,但是注册中心状态为OUT_OF_SERVICE,但是服务在Nginx的upstream中。
Nginx的流量还是会到达A服务,但是A服务Fegin接口调用其他服务时,会出现异常情况。
解决方案:
Nginx主动式调用服务器端的接口(自定义的监控检查接口)。
自定义检查接口:查询Eureka的状态,若状态不是up状态,那么返回500异常。
Nginx收到500异常后,自动将ip:port在upstream中摘除。
代码实现:
@RestController
@Slf4j
public class HealthController {
@Autowired
private EurekaClient eurekaClient;
@RequestMapping(value = "/health/check/status", method = {RequestMethod.HEAD, RequestMethod.GET})
public boolean checkStatus(HttpServletResponse response) {
try {
InstanceInfo.InstanceStatus instanceRemoteStatus = eurekaClient.getInstanceRemoteStatus();
boolean up = InstanceInfo.InstanceStatus.UP.equals(instanceRemoteStatus);
//设置http的响应码
if (!up) {
response.setStatus(500);
}
return up;
} catch (Exception e) {
return true;
}
}
}
Nginx配置:
upstream student-service-api {
server 172.26.34.101:9050;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD /health/check/status HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
- interval表示每隔3000毫秒向后端发送健康检查包;
- rise表示如果连续成功次数达到2 服务器就被认为是up;
- fail表示如果连续失败次数达到5 服务器就被认为是down;
- timeout表示后端健康请求的超时时间是1000毫秒;
- type表示发送的健康检查包是http请求;
- check_http_send 表示http健康检查包发送的请求内容。为了减少传输数据量,推荐采用“head”方法;
- check_http_expect_alive 指定HTTP回复的成功状态,默认认为2XX和3XX的状态是健康的;
配置location,查看服务器的健康状态
location ~* /status {
check_status;
access_log off;
}
原文:https://www.jianshu.com/p/beb9d8d26464
参考:Nginx实战系列之功能篇----后端节点健康检查
相关文章
- Tomcat server.xml中配置的connectionTimeout参数无效?客户端等待超时时间
- maven多仓库配置(公司服务器与阿里云仓库)
- CentOS安装及配置DHCP服务器
- 服务器搭建:手把手教你配置web服务之nginx1.6
- tomcat sso 配置
- tomcat配置https服务器
- 【收藏】Keepalived+Nginx高可用配置(偏nginx配置)
- Hibernate的配置详解
- redis 配置允许其他主机可以远程连接redis
- [Nginx]实战Nginx:Nginx服务器的安装与配置
- logging模块配置笔记
- 50 openEuler搭建PostgreSQL数据库服务器-配置环境
- 02 从头开始atac项目 ubuntu20 install r4.2 Linux系统环境配置 服务器版本的rstudio r install in linux /ubuntu/centos
- AD 域服务简介和使用——其实都是配置dns和域控服务器,各pc加入域,然后设置账号,用AD来进行统一管理
- 【云服务器 ECS 实战】一文掌握弹性伸缩服务原理及配置方法
- RFSoC应用笔记 - RF数据转换器 -03- RFSoC关键配置之RF-ADC内部解析(一)
- Nginx搭建与配置:打造高性能Web服务器和反向代理
- 服务器配置 apache htaccess设置图片找到不到的默认图片
- 华为交换机检查主机丢包流量统计配置
- WinServer 2012 架设配置 VP* 服务器